Decision guide
When do you need Temporal? Durable execution vs a normal workflow engine
This is not a "what is Temporal" explainer. It is a decision guide: the specific conditions under which durable execution earns its extra complexity, the conditions under which a normal workflow engine like n8n, Windmill, or Inngest is already enough, and where the real boundary sits. If you can answer the checklist at the bottom, you have your answer.
TL;DR
- You need Temporal when one logical process must run for minutes-to-months, survive crashes/deploys without losing workflow state, and recover through targeted retries or compensation (payments, fulfillment, provisioning, long agent pipelines).
- You do not need Temporal when your automation is stateless and safe to re-run wholesale — a visual workflow engine may require less durable-infrastructure ownership.
- The boundary: normal workflow engines connect apps and run jobs; Temporal persists Workflow state and supports recovery and resumption, while application failures and external side effects still require explicit handling.
1. When you need Temporal
Temporal is durable execution infrastructure: you write Workflows and Activities as code, and the server records Workflow Event History so a Worker can replay state after failure and continue from the latest recorded event. Activities may retry, so use it when your process has these properties:
- Long-running. The process spans minutes, hours, days, or months — waiting on humans, external systems, or timers — and must not be lost if a worker restarts.
- Must-not-lose-state. Losing progress mid-way is expensive or dangerous: a half-completed payment, a partially provisioned account, an order stuck between "charged" and "shipped".
- Controlled side effects. Duplicate writes would be expensive or dangerous, so Activity boundaries, retry policies, and idempotency keys must be designed together. Temporal preserves Workflow state, but an Activity may execute more than once during retry.
- Complex compensation / sagas. Failure part-way requires rolling back or compensating earlier steps in a controlled, resumable way.
- Operational ownership. Throughput and SLA requirements shape capacity planning, but do not by themselves establish a need for Temporal; the team must also be willing to operate the service and Workers or use Temporal Cloud.
Canonical fits include payment and billing flows, order fulfillment, infrastructure provisioning, and long-running AI agent pipelines that must survive restarts. Evaluate restart safety, durable state, external waits, recovery, and idempotency boundaries together rather than using a fixed score.
2. When you do NOT need Temporal
Most automation is not this. If your workflows look like the list below, a normal workflow engine may fit without adding durable-execution infrastructure:
- Safe to restart. The whole process can safely be retried from the beginning if it fails.
- Stateless glue. Webhook-to-app, "when X happens do Y", scheduled syncs, notifications, report generation.
- Integration-first. The hard part is connecting SaaS apps, not guaranteeing a multi-day stateful process. That is exactly what visual tools optimise for.
- No dedicated infra owner. Nobody wants to run and tune execution infrastructure or pay for managed durability.
For these, n8n, Zapier, Make, Windmill, or Inngest may fit without requiring the team to own code-first durable-execution infrastructure.
3. What durable execution actually solves
Durable execution makes long-running workflow state recoverable. The engine records events so a Worker can replay the Workflow after failure and continue from the latest recorded state instead of starting the logical process over. That state durability does not make external side effects exactly-once: Activities can be retried and may execute more than once. In practice Temporal replaces or centralises several things you would otherwise hand-roll:
- Queues + retries. Automatic, configurable retries with backoff become built-in, not custom queue plumbing.
- Cron + timers. Durable timers let a workflow "sleep" for days and reliably wake up — without a scheduler you have to babysit.
- Workflow progress tracking. Event History and replay preserve orchestration state, while idempotency keys or equivalent safeguards still protect external writes from duplicate Activity attempts.
The trade is real: you write against an SDK, run workers, and either operate the server or pay for Temporal Cloud. You take on that cost because the guarantees are worth it — not by default.
4. When a normal workflow engine is already enough
A visual or conventional workflow engine is enough when losing and re-running a whole execution is safe. Use these boundary questions rather than a duration or score threshold:
- Can the whole process safely restart from the beginning?
- If a run fails halfway, can you just re-run the entire thing with no harm?
- Is the value mostly in connecting apps rather than guaranteeing a long stateful process?
- Would you rather not run additional infrastructure?
If restart is safe and no workflow state must survive a failure or external wait, a conventional workflow engine is likely enough. If not, evaluate durable execution and the required retry-safe side-effect boundaries.
5. The boundary: Temporal vs n8n vs Windmill vs Inngest
These tools are often lumped together but sit at different layers. This is the map, not a "winner":
| Temporal | n8n | Windmill | Inngest | |
|---|---|---|---|---|
| Layer | Durable-execution infrastructure | Visual workflow automation | Scripts → workflows/UIs | Serverless step functions |
| Primary surface | Code (Go/Java/TS/Python/.NET/PHP/Ruby) | Visual + code nodes | Code-first, low-code UI | Code, event-driven |
| Primary fit | Stateful processes with durable Workflow execution | Connecting SaaS apps | Turning scripts into internal tools | Managed, event-driven durable steps |
| State model | Stateful, durable by design | Per-execution | Per-execution | Durable steps |
| Deployment / operations | Self-host the service and Workers, or use Temporal Cloud | Self-host or use n8n Cloud | Self-host or use managed Cloud | Managed event-driven service |
| Reach for it when | Workflow state must survive failures; sagas or durable waits | App glue and restart-safe jobs | Developer scripts as workflows | Event-driven durable steps through a managed service |
Facts (license, deployment, pricing model, statefulness) sourced from the Temporal LICENSE and Temporal pricing (pricing checked 2026-08-29); see the boundary as layers, not a ranking.
Rough rule: Inngest for event-driven durable steps through a managed service, Windmill when the job is turning scripts into workflows and internal UIs, and Temporal when durable Workflow state, recovery, and code-first control are required and the team will own the service or use Temporal Cloud. If the process is really just app-to-app glue, none of them — use n8n.
6. Decision checklist
Run your process through these boundary questions:
- If the process runs longer than a single request and must survive crashes/deploys → lean Temporal.
- If re-running the whole thing on failure would double-charge, double-ship, or corrupt state → lean Temporal.
- If you need durable timers, targeted Activity retries, or saga-style compensation — and can make external writes idempotent → lean Temporal.
- If the work is short, stateless, and safe to retry wholesale → stay on a workflow engine.
- If the value is mainly connecting SaaS apps and nobody will own infra → stay on a workflow engine.
Do not score the answers. If the process can safely restart and does not need durable state, waits, or targeted recovery, a normal engine is likely enough. Otherwise, evaluate Temporal together with the required Activity retry and idempotency boundaries.
FAQ
When do you actually need Temporal?
When a single logical process must run reliably for minutes to months, survive process crashes and deploys without losing workflow state, and recover through targeted Activity retries or compensation. Payments, order fulfillment, provisioning, and long-running agent pipelines are classic cases. Activities may execute more than once when retried, so external writes still need idempotency. If your automation is short, stateless, and can safely re-run from the top, you do not need Temporal.
When do you NOT need Temporal?
For webhook-to-app glue, scheduled syncs, notifications, and simple integration chains that can be safely restarted from the beginning. A normal workflow engine (n8n, Zapier, Make, Windmill, Inngest) may require less durable-infrastructure ownership for these workflows. Temporal is code-first infrastructure — adopting it when durable state is unnecessary adds operational responsibility.
What problem does durable execution solve?
It preserves workflow progress in Event History so a Worker can replay recorded events and continue after a failure instead of losing logical state. You get durable timers and declarative Activity retries instead of hand-rolling that orchestration. This does not make external side effects exactly-once: Activities may be retried and write operations must remain idempotent.
Is Temporal a workflow engine like n8n?
No. n8n is a visual, integration-first workflow-automation tool. Temporal is code-first durable-execution infrastructure — you write Workflows and Activities in Go, Java, TypeScript, Python, .NET, PHP, or Ruby. They live at different layers: n8n connects apps, while Temporal persists Workflow state and supports recovery and resumption. Application failures and external side effects still require explicit handling.
Temporal vs Windmill vs Inngest — how do they differ?
Windmill turns scripts into workflows and internal UIs. Inngest provides event-driven durable step functions as a managed service. Temporal is code-first durable-execution infrastructure that can be self-hosted or used through Temporal Cloud. Choose by execution model, state requirements, and which infrastructure the team will operate or buy as a managed service.
What does Temporal cost?
The Temporal Server is MIT-licensed and free to self-host. Pricing checked 2026-08-29: Temporal Cloud is a managed, usage-based option billed on Actions, starting around $100/mo (Essentials) and $500/mo (Business). Self-hosting trades cash cost for the operational burden of running the server yourself.
Is adopting Temporal a big commitment?
You write against Temporal SDKs and run workers, so your business logic stays in your own code while the execution model and server remain Temporal-specific. Migration effort depends on how deeply Workflows, Activities, retries, signals, and other Temporal semantics are embedded in the application.