Census
A weekend of work, and real gaps remain.
Syncs warehouse data into operational tools, with a focus on modelling the entities once and sending them everywhere.
Build me the warehouse-to-tools sync I actually need instead of Census. Same engine as any reverse ETL, and the idea worth taking from this one is **defining the entity once and sending it to several places**, rather than writing a query per destination. STACK - Node 20+ with Fastify - SQLite through better-sqlite3, WAL mode, for sync state - A worker process - Caddy in front THE ENTITY LAYER, WHICH IS THE POINT - entities: id, name, sql, primary_key, fields_json — one definition of 'customer', 'account', 'subscription' - audiences: id, entity_id, name, predicate_sql — a filtered slice, defined once - syncs: id, audience_id, destination, mapping_json, mode, schedule - **A field renamed in one place propagates everywhere.** Without this you have twelve nearly identical queries and one of them is always out of date SYNC MECHANICS - rows_state with a row hash per primary key; send only what changed - Batching to the destination's maximum, its rate limit respected, back off on Retry-After - Idempotent writes keyed by primary key, remote ids stored - Partial batch failures recorded per row and skipped, never aborting the batch MAPPING THAT DOES NOT SILENTLY CORRUPT - Fetch the destination's own schema and validate the mapping against it before the first run: types, lengths, picklist values, required fields - **A string longer than the destination allows is truncated silently by many APIs.** Check lengths yourself and fail loudly instead - Nulls: decide explicitly per field whether null clears the destination value or leaves it alone. Getting this wrong wipes fields your sales team filled in by hand, and they will notice GUARD RAILS - A change threshold per run, and a dry run showing adds, changes and removes with sample rows - Deletes disabled by default. A query returning nothing must never be interpreted as 'remove everybody' - A per-sync daily write cap OBSERVABILITY - Runs with counts, failures with payloads and destination errors - Alert on repeated failure, on a rejection rate rising, and on a run that suddenly syncs zero rows - A per-field freshness view: when did this field last successfully update at this destination. **That is the question an operations team asks and no log answers** WHAT MATTERS MOST The shared entity definition and explicit null handling. One stops the queries diverging; the other stops the sync quietly deleting other people's work.
What you lose
- Destination connectors kept current as APIs change
- An audience builder non-technical teams can use
- Observability across many syncs at once
- Field-level mapping validated against the destination schema
If you would rather not build
- A script per destination with a hash column
The escape hatch
open source · no votes, no paid placement
Why this verdict
our own opinion · changed only by a person
52/100
Verdict kinda at 52: the entity layer is the genuinely good idea and it is cheap to build. Null semantics and length validation are where homemade syncs corrupt data quietly.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Census
answered from the record above
Is Census free?
No — the plan we track is $300 a month. From around $300/month for the core plan, priced by destination fields and volume.
Can you replace Census by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 52 out of 100, build time a weekend. Read what you lose before you decide.
How much does Census cost?
$300 a month on Core — $3,600 a year. Recorded 14 Aug 2026.
What do you lose by replacing Census?
Destination connectors kept current as APIs change; An audience builder non-technical teams can use; Observability across many syncs at once; Field-level mapping validated against the destination schema. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Census?
Yes: dbt, Airbyte. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
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

