1. Home
  2. Why Waltail
WHY WALTAIL

Built for one job, and priced like it.

Postgres changes, delivered to the systems your application already uses — hosted, ordered, retried, and metered on one number. Here is how that differs from the other ways teams get there.

Four ways teams do this today

ApproachWhat it is good atWhat it costs youWaltail
Self-managed CDC stackFull control; any source database; a broad connector ecosystemA broker, a connector runtime, a JVM, offsets, schema topics — each sized, monitored and upgraded by youA connection string. Nothing to run. Delivery goes straight to the destination, not through a platform you operate.
Warehouse ELT platformHundreds of sources and warehouse destinations; batch loads at scaleMinutes-to-hours latency, warehouse-only destinations, and pricing built for data teams — per connector, per row, or entry plans in the hundreds of dollarsSub-second to queues, webhooks, caches and search; operational destinations only; $29 entry with 100 GB included
ORM-bound change subscriptionsEvents inside the same application with a library callOne language, one client library, one consumer shapeAny language: the change lands in the queue, index, cache or endpoint you choose, and anything can read it
Triggers, polling, outbox tablesNo vendor; works on day oneCode on the write path, missed deletes, dual-write bugs, or a table and worker per service to ownLogical replication off the write path; nothing added to your schema; every committed change, once, in order per row — and a backfill for what existed before

Nothing to operate

Waltail reads your database's write-ahead log over logical replication, stores every change durably before acknowledging it, and delivers from its own queue with retries, per-row ordering and replay. There is no broker, no connector cluster and no JVM in the path — on our side or yours. Changes go directly to the queue, stream, cache, search index or HTTP endpoint you already run.

Any language, any stack

The message is a plain JSON envelope — op, table, data, old, sequence, idempotency key, commit LSN. Consumers can be Go, Python, Rust, Java, TypeScript, a Lambda, a Worker: anything that reads from the destination. No client library, no ORM, nothing in your application.

Honest guarantees

At-least-once delivery with a unique idempotency key in every message, and strict ordering per row. A change is acknowledged to your database only after it is safely stored, and it is retried with backoff until the destination accepts it; what still fails is parked, shown with its last error, and replayed in one click. "Exactly-once delivery" over a network is an asymptote — we say so, and give you the key that makes exactly-once processing straightforward.

Pay for egress. Nothing else.

One meter: the gigabytes delivered to your destinations. The pricing models common elsewhere each tax something you want more of:

ModelWhat it penalisesWaltail
Per connector or per sinkFanning one database out to several destinationsSinks are free; connect as many as you like
Per row or per active rowBusy tables; bills that are hard to predict and have been known to jump on repricingBytes delivered, which you can verify in your own systems
Per seatLetting the whole team see the consoleSeats are free
Platform minimumsSmall and early workloadsFree plan with 1 GB, then $29 with 100 GB

See pricing for the full plan table.

History on demand

Streaming starts at the moment a pipeline is created; a backfill delivers what already existed. Pick the tables, see the estimated rows and gigabytes, confirm, and Waltail reads the current rows in resumable pages and delivers them through every sink as read events — keyed like live changes, so a row's snapshot and its later updates arrive in order. Seed a new search index, give a new sink the past, or catch up a table you added later.

Leaving is easy

Deleting a pipeline drops the replication slot and publication Waltail created on your database, so nothing is left behind. Downgrade or cancel from the console at any time. Visible exits are what make a hosted service safe to enter.

What Waltail is not for

Questions

Is Waltail open source?

No. Waltail is a hosted service run by a company whose only business is running it well. Enterprise customers can deploy the same software in their own cloud or on-premise, which is the answer to lock-in for larger teams; for everyone else, the free plan and a clean exit are.

Why not just use triggers or an outbox table?

Triggers run inside your transaction and slow or fail your writes; polling misses deletes and adds load; dual writes disagree; an outbox works but is a table and a worker you own per service. Logical replication reads committed changes off the write path, completely, with nothing added to your schema.

Why not run an open-source CDC stack myself?

You can, and for some teams it is right. The cost is the platform around it — a broker, a connector runtime, a JVM, offsets and schema topics, and the monitoring and upgrades for each. If the goal is 'tell my service when a row changes', that platform is the expensive part, and it is the part Waltail removes.

Can Waltail load my data warehouse?

Not directly, and by design. Waltail delivers to operational systems — queues, streams, caches, search indexes, HTTP. For analytics loading, use a tool built for warehouses; the closest thing here is archiving changes to S3 as NDJSON and loading from there.

What does Waltail not do yet?

Filters and payload transforms: a pipeline delivers every change to its tables, as it is. Those are on the roadmap and the docs say so plainly. Backfills, replay and per-sink tuning are in the product today.

Start streaming in minutes.