Guide 07

Automation workflows with n8n, Zapier and Make: when no-code wins and when to write code

Many bots do not need a codebase. A workflow engine can connect a form, an AI step and a chat message in an afternoon, as long as you design for failure.

Guide3 min readUpdated

Triggers, actions and data

Every automation platform follows the same model:

  • A trigger starts a run: a webhook, a schedule, a new row, a new email, a chat message.
  • Actions do things: call an API, transform data, post a message, ask an AI model.
  • Data flows from step to step as JSON items. Most mistakes come from assuming a field always exists.

Choosing a platform

n8n Zapier Make Node-RED
Hosting Self-hosted or cloud Cloud Cloud Self-hosted
Strength Code nodes, AI agents, data control Largest app catalog, easiest Visual branching, iterators IoT and local devices
Pricing basis Executions (cloud) or your server Tasks Operations Free
Best when You want control or handle sensitive data Non-developers own the flow Complex multi-branch scenarios Hardware and MQTT

Self-hosting n8n

docker volume create n8n_data
docker run -d --name n8n --restart unless-stopped -p 127.0.0.1:5678:5678 \
  -e N8N_HOST=automation.example.com -e N8N_PROTOCOL=https \
  -e WEBHOOK_URL=https://automation.example.com/ \
  -e GENERIC_TIMEZONE=UTC \
  -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Bind to 127.0.0.1 and put a reverse proxy or tunnel with TLS in front. Set an owner account immediately, keep the encryption key (in the data volume) backed up, and use PostgreSQL instead of the default SQLite once workflows matter.

Example: triage incoming requests

  1. Webhook trigger receives a contact form submission.
  2. Code or Set node trims and validates fields; reject if the email is missing.
  3. AI node classifies the message into sales, support, spam with a strict JSON output.
  4. Switch routes by category: support creates a ticket, sales posts to a Slack channel, spam is dropped and logged.
  5. Respond to Webhook returns 200 with a reference number.

Keep the AI step narrow: classification and extraction are reliable; letting the model decide which API to call with free-form arguments is not.

Design for failure

  • Error workflows: n8n can run a dedicated workflow when another fails; Zapier and Make have error handlers and replays. Send failures to a channel a human watches.
  • Retries: enable retries on flaky HTTP steps, but only for idempotent operations.
  • Idempotency: store a key (order ID, message ID) and skip items you have already processed. Webhook senders retry.
  • Timeouts: long AI or API steps should not block a webhook response; respond first, then continue.
  • Volume: loops over thousands of items can exhaust plan limits or hit API rate limits. Batch and add waits.

Secrets and access

Use the platform's credential store, never hard-code tokens in nodes. Restrict who can edit workflows: an editor can read any credential the workflow uses. Protect webhook triggers with a header secret or signature check, because the URL alone is guessable once shared.

When to move to code

Move a workflow to a custom service when you need: unit tests and code review, complex state machines, high volume with strict latency, fine-grained permissions per user, or when the flow has become a tangle that nobody can read. A common pattern is hybrid: a small service owns the core logic and exposes a webhook, while the workflow engine handles the many low-volume integrations around it.

Check your understanding

1. Which steps are safe to retry automatically?
2. How should a public webhook trigger be protected?