Novrith
 
 

Stack Decision

The post killing n8n replaced one workflow

Three posts this week told me n8n is dead.

Each one replaced a single workflow — “summarize last night’s tickets and post to Slack”, “turn a YouTube video into a LinkedIn carousel”, that shape — and generalized to the category. “Claude Routines killed n8n.” “A direct 1:1 replacement for drag-and-drop automation builders.”

I read them all. The demos work. The generalization doesn’t.

Nobody runs n8n for one workflow.

A production ops stack has dozens. They wire a CRM, a project tool, an enrichment provider, a billing system, a support platform, and an email tool into something that actually moves. A new lead lands. It’s typed, validated, enriched, scored, routed, notified, logged, and ready for a human — in seconds, across five systems, without anyone touching a screen.

That’s not one workflow. That’s 30+ workflows, each small, each deterministic, each doing one thing the others depend on.

So this is the Stack Decision worth making honestly.

 
 
 

What Claude Routines actually is

Anthropic shipped Routines inside Claude Code on April 14 as a research preview. The docs are precise, and I recommend reading them: a routine is “a saved Claude Code configuration: a prompt, one or more repositories, and a set of connectors, packaged once and run automatically.”

Translated: a routine is a scheduled or triggered autonomous Claude Code session. Same model, same shell, same skills, same repo access — but running on Anthropic’s cloud on a cron, an API call, or a GitHub event, instead of on your laptop.

Worth noticing: every single example Anthropic leads with — in the blog and in the docs — is developer work. Backlog maintenance tied to code areas. PR review. Deploy verification. Docs drift. Library porting. There are no sales, marketing, or ops-workflow examples anywhere in the official material. That’s a tell. Anthropic isn’t positioning Routines as a general automation platform. The community did that.

You can use it for non-developer ops work — connectors reach Slack, Linear, Google Drive, and whatever else you connect via MCP. A Monday-morning routine that reads last week’s Attio pipeline activity and posts a team briefing to Slack is possible. A weekly routine that scans ClickUp tasks across client engagements and flags overdue or blocked work is possible. A monthly routine that summarizes closed-lost deal patterns for GTM review is possible. These work. They just aren’t what Anthropic is showing off, which tells you where the native fit is.

Here’s what Routines isn’t, as of April 2026:

  • Minimum schedule interval: 1 hour. Anything faster is rejected.
  • Daily run cap per account, plan-dependent (5–25 runs/day). That’s total across all your routines, not per routine.
  • Native webhook subscriptions: GitHub Pull Request and Release events only. No push, no issues, no comments, no third-party webhooks.
  • External HTTP triggers: available via a per-routine /fire endpoint with a bearer token, so Stripe or Calendly or any HTTP-capable system can fire a routine. But the request body is freeform text, not parsed as JSON. Your Stripe payload arrives as a literal string for Claude to interpret — not as typed fields.
  • No n8n-style visual builder. No conditional branching. No typed data flow between steps. No dedicated error workflow. The “logic” is whatever the model decides to do this run.
  • Account-scoped. Not team-shared. Every action happens under your personal GitHub, Slack, and Linear identity.
  • Cloud-only. No self-hosting.

Most production ops stacks clear that daily cap before lunch.

 
 
 

What n8n actually is

n8n is a workflow orchestrator. 1,500+ native integrations, plus community nodes and an HTTP Request node for everything else. Self-hosted or cloud. A visual graph where every node has structured, inspectable inputs and outputs (schema, table, and JSON views), and every execution persists with full step-level I/O for debugging.

It’s also boring. The visible part — dragging boxes, connecting arrows — is what demos well. It’s not where the hours go.

The hours go into the parts that don’t demo: this API paginates weirdly. That webhook fires twice under load. This field is null 3% of the time. This rate limit resets hourly, not daily. This tool rejects Unicode in names. This enrichment provider 502s during US morning hours and needs a fallback branch. The reason a production n8n install keeps working for 18 months isn’t a clever graph — it’s 200 tiny decisions about integration semantics, each of which looks unremarkable and all of which matter.

That’s the job n8n is built for.

 
 
 

Where they actually overlap

Some overlap is real. Both can run on a schedule, react to an HTTP trigger, call arbitrary HTTP APIs, take actions in third-party tools, and run LLM reasoning inside a job.

From a distance, “every night at 2am, summarize X to Slack” looks like both platforms can do it. They can.

The overlap ends the moment the workflow needs more than one deterministic step, typed data flowing between those steps, a specific failure path when step 2 returns a 429, guaranteed execution after a restart, inspection of what happened in step 4 of the run that paged someone at 3am, a trigger that receives structured JSON (not a stringified payload), a schedule tighter than hourly, or more daily runs than the per-account cap allows.

None of those are esoteric edge cases. They are the ground floor of ops orchestration.

 
 
 

The real distinction

n8n orchestrates. It’s the spine that moves typed data between the 15 SaaS tools in your stack, with deterministic logic, inspectable execution, and production-grade error handling.

Claude Routines reasons. It runs autonomous agent work — anchored, in Anthropic’s own framing, to a repo and a prompt — on a schedule or trigger.

They don’t compete. They occupy different layers.

The cleanest pattern I’ve seen so far: an n8n workflow calls a routine’s /fire endpoint when a step needs real judgment — something the graph can’t encode as a condition or a single LLM call. The routine reasons. The n8n workflow takes the result and continues orchestrating. That’s composition, not replacement.

 
 
 

Three questions before you migrate anything

If a “Claude Routines replaces n8n” post is circulating in your team Slack, three questions are worth answering before anyone migrates anything.

1. What job is this tool actually doing in my stack? If you run n8n because it glues your CRM, project tool, support system, billing, and enrichment into one moving system — the job is integration orchestration. Routines doesn’t do that job. It does a different one. Of 30 workflows, maybe 2 or 3 are “read X, reason about it, summarize to Slack” jobs that could become routines. The other 27 are moving typed data between typed APIs.

2. What edge cases have I built around it that don’t demo well but keep production alive? Retry configs on rate-limited endpoints. Error Workflow wiring to #ops-alerts. Wait nodes for eventual-consistency gaps. Idempotency checks on webhook handlers. Deduplication. Fallback branches when enrichment providers 502. Staged validation before anything hits the CRM. None of it demos well. All of it is why the system survives. Routines has none of these primitives. Its error strategy is “the model will figure it out” and its retry strategy is “fire again tomorrow”.

3. Does the “replacement” do those same jobs at the same depth? Depth means typed integrations with real schemas. Inspectable step-level I/O. Deterministic graph execution. Webhook ingestion with structured payloads. Team ownership and versioning. Service accounts separate from human identities. At 30 workflows × 1,500+ integration depth, Routines doesn’t match n8n’s depth. It matches a slice of it — the scheduled-reasoning slice — and matches it very well.

 
 
 

What happens when the fit is wrong

You get a demo that works and a production system that doesn’t.

The team sees a screenshot of a routine replacing one workflow. Someone commits to a migration. Six months later, half the ops stack runs under one person’s claude.ai account, GitHub PRs come in under their username, there’s no retry on the third-party enrichment calls that fail 3% of the time, the compliance team has no audit trail, and nobody knows why yesterday’s run did something slightly different from the day before.

That’s not a tooling problem. It’s a framing problem.

 
 
 

The framing error to name

Every “X killed Y” post does the same thing: it replaces one workflow and generalizes to a whole platform. That’s comparing a demo to a category. It is a framing error, not an insight.

The honest version is simple. Routines reasons. n8n orchestrates. Any post claiming otherwise replaced one workflow and called it a category.

 

If you want the short version, I wrote it up on LinkedIn last week: Claude Routines isn’t replacing n8n.

Talk soon,

Marco

Founder / CEO, Novrith

Novrith

Operational solutions that scale your business.

You’re receiving this because you subscribed to the Novrith newsletter at novrith.com.

Via della Moscova 13, 20121 Milan, Italy

Subscribe to the newsletter   ·   LinkedIn