Why code-first.
The argument against n8n, Make, and Zapier.

Every scoping call eventually asks: "can we just build it in n8n?" For production work the answer is no. The reasoning below is the same reasoning I send the prospect: cost figures, architectural trade-offs, and the specific case where the no-code option is actually the right call.

The problem.

Pick any workflow that fires 100 times a day. A morning ops brief. A lead-routing pipeline. An AI-assisted inbox triage. The math below uses real figures from a recent client engagement.

CODE-FIRST$73 / yr
  • Vercel Hobby: $0/mo
  • Vercel cron + serverless: free under 100K invocations
  • Supabase free tier: covers it
  • Resend free tier: 3K emails/mo
  • Anthropic API at ~$0.20/day: $73/year
  • Domain: pre-existing
NO-CODE STACK$720 / yr
  • n8n Cloud Starter: $20/mo
  • Make Core: $9/mo
  • Per-action quotas hit at ~5K events/mo
  • Premium tier needed at scale
  • Each new workflow = new subscription
  • $0 of it is yours when you stop paying

The 10× cost gap is the loud signal. The architectural dependency under it is the one that compounds.

The insight is that workflow logic should live in your repo, not in someone else's UI.

Why this matters.

01 · Code is owned. Subscriptions are rented.

Stop paying n8n and the workflow stops. The logic doesn't exist outside their UI. The credentials live in their vault. The pricing terms change without notice.

Stop paying me and the workflow keeps running. It's in the client's repo, on the client's Vercel account, hitting the client's APIs. The dependency is on services the client already pays for.

02 · Versioned in git. Reviewable. Revertible.

Every code-first change is a commit. Diff, author, timestamp, CI run, deploy preview. Reverting a bad change is one command.

Equivalent changes in n8n happen inside a UI on the vendor's server. No diff. No review. No rollback unless someone exported the JSON before clicking save.

03 · Observable. Debuggable in production.

When a code-first workflow fails, the operator has structured Vercel logs, Sentry traces, and a request body to replay. Standard engineering observability.

When an n8n workflow fails, the UI shows "node failed." No stack trace. No response body. No local repro. Debugging time on the same class of error is materially different across the two approaches.

04 · The integration library is a feature, not a moat.

n8n's pitch is the 500+ integrations. In practice, most client engagements use 3 to 5 of them. The other 495+ are dead weight in the pricing model.

For the integrations that actually matter, the equivalent code is short:

Paying $20/mo for a visual editor that wraps code that fits in a single file is the part that doesn't compound.

What this doesn't solve.

Code-first isn't free. A few honest trade-offs:

When no-code is the right call.

One workflow, non-technical team, no plan for a second one: use Zapier or n8n. The cost and lock-in concerns above don't apply meaningfully at that scale, and the platform's strength is making one-off automations possible without an engineer.

Three or more workflows, shipping new automations on a cadence, or operating cost matters: hire someone to build the code-first version. Could be me. Could be a freelance dev with the same opinions. Each new workflow after the first costs roughly nothing in marginal infrastructure.

The stack I default to.

Total platform cost for a 3-workflow business: $73 / year + API tokens. Compare against your current SaaS bill.

The platform that runs your business should be the one you already own.

If you're currently running automations through a no-code platform and considering a migration to owned code, the free async audit at /workflow-audit/ returns a written assessment within 48 hours.