Make

make.comcontributed by Samuele Ongaro

ALMOST

A weekend of work, and real gaps remain.

Visual automation: scenarios wire services together with branching, loops and error handlers, billed by the number of operations rather than by the number of workflows.

Promptfree, for everyone, and the only version there is
Build me the automations I actually run instead of Make — and understand the verdict before starting.

**Two thousand maintained connectors** is what the subscription buys, and it is not reproducible. But almost nobody uses two thousand: most people run four or five scenarios against services they could call directly. Writing those four is less code than the configuration describing them, and it never breaks because somebody changed a connector. Build that, not a platform.

STACK
- Node 20+ with Fastify
- SQLite through better-sqlite3, WAL mode
- A worker process for the queue
- Server-rendered interface, flows as a list rather than a canvas
- Caddy in front

FIRST, THE SCOPE
- List the scenarios you actually run and the services each touches. That list is the project
- Write an adapter per service you genuinely use — authentication, pagination, rate limits — as a small module with a fixture and a test
- Do not build a connector framework for integrations you have not written. That is how a fortnight becomes a year

THE DATA MODEL
- flows: id, name, version, definition_json, is_active
- flow_versions: id, flow_id, version, definition_json, published_at — a run is pinned to a version, so editing never changes a run in flight
- runs: id, flow_id, flow_version, trigger_payload_json, status, started_at, finished_at, error, dedupe_key
- step_runs: id, run_id, step_id, attempt, status, input_json, output_json, error, ms
- connections: id, service, credentials_encrypted, expires_at, refreshed_at
- cursors: id, source, value, updated_at
- queue: id, run_id, step_id, run_at, attempts, locked_by, lease_expires_at
- Every step's input and output stored. When a flow does the wrong thing at three in the morning, those payloads are the only thing that answers why

TRIGGERS
- Webhook with a secret and a signature check, answering immediately and queueing
- Schedule with a cron expression and a time zone, both daylight-saving transitions tested
- Poll a source on an interval with a stored cursor and deduplication by item identifier. A poller that re-emits everything after a restart is the classic disaster
- Manual, with a payload typed by hand, which is how a flow is tested

STEPS
- HTTP request with full control and a declared retry policy
- Branch, loop over a list with a concurrency limit, delay, stop with a reason
- Transform with a small expression language over the run state, or a sandboxed script with a time limit and no ambient network
- Your own service adapters, each declaring its input and output schema

RELIABILITY, WHICH IS WHERE THE REAL WORK IS
- Retries with exponential backoff and jitter, per step, with a maximum
- Retry only what is safe: a non-idempotent action needs an idempotency key, and the step declares whether it has one. Sending an email twice is annoying; creating an order twice is a refund
- Deduplication on the trigger, so a webhook delivered twice runs once
- The queue is a table with a lease, so a crashed worker's run is resumed rather than lost
- A permanent failure lands in a dead-letter list with a one-button replay
- Rate limits per service, honouring the API's own headers

THE INTERFACE
- A flow as a vertical list of steps with branches indented. A node-and-wire canvas is more work to build and less readable for the flows people actually run
- The editor shows real sample data from the last run beside every field, so a path is picked rather than typed. That single detail separates a usable tool from a frustrating one
- A run view with every step expandable, and runs filterable by status with failures first

SECRETS
- Connections encrypted at rest, decrypted only in the worker
- OAuth refresh under a lock, so two workers cannot invalidate each other
- Redacted from every stored payload and log, by key name and value match, including encoded forms

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, ENCRYPTION_KEY, SESSION_SECRET, WEBHOOK_SECRET
- Migrations on boot, each once; step payloads pruned on a stated retention — they are the bulk of the data
- Nightly backup off the machine, restore script
- Health endpoint reporting queue depth and expired leases

WHAT MATTERS MOST
Idempotency and the stored payloads. Kill the worker mid-run and confirm nothing is lost and nothing repeats — an automation tool that occasionally does something twice is one you stop trusting with anything that matters.

What you lose

  • Around two thousand maintained connectors, and the work of keeping them working
  • A visual builder where branching, iteration and error handling are drawn rather than coded
  • Execution history with the payload at every step, which is how these are debugged
  • Managed retries, rate-limit handling and scheduling
  • Somebody else noticing when an API changes shape

If you would rather not build

  • Zapier — paid, more connectors, simpler model

What it costs

read from their page 17 Aug 2026

PlanBilled monthlyBilled yearlyLast read
—$9/mo—17 Aug 2026

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

n8n

$0

Workflow automation with hundreds of nodes, self-hosted or on their cloud.

n8n-io/n8nfree · open source

Windmill

$0

Runs scripts and flows as internal tools, with a UI builder on top.

windmill-labs/windmillfree · open source

Why this verdict

our own opinion · changed only by a person

50/100

Verdict kinda at 50: a runner with retries, a run log and resume-from-failure is a strong weekend and better to debug than most visual tools. The connectors are the trap — a dozen is fine, and every one after that is maintenance you have taken on forever.

History

tracked since 9 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Make

answered from the record above

Is Make free?

No — the plan we track is $9 a month. Core at $9/month for 10,000 credits; the free tier covers 1,000 operations.

Can you replace Make by building your own?

ALMOST. A weekend of work, and real gaps remain. Replacement score 50 out of 100, build time a weekend. Read what you lose before you decide.

How much does Make cost?

$9 a month on Core — $108 a year. Recorded 17 Aug 2026.

What do you lose by replacing Make?

Around two thousand maintained connectors, and the work of keeping them working; A visual builder where branching, iteration and error handling are drawn rather than coded; Execution history with the payload at every step, which is how these are debugged; Managed retries, rate-limit handling and scheduling; Somebody else noticing when an API changes shape. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Make?

Yes: n8n, Windmill. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 17 in Automation & notifications

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc