Overview
Native change data capture by tailing the WAL — real-time event streams and HTTP webhooks triggered by data changes.
ON INSERT INTO orders → HTTP POST to customer's webhook
ON CHANGE IN users WHERE role = 'admin' → push event to stream
Why this matters
Supabase Realtime had to build a whole Elixir service to tail Postgres WAL externally. We own the WAL, so we can stream changes out natively. Customers get real-time events without polling — table stakes for any cloud database.
Implementation approach
WAL tailing
Change streams (pull-based)
Webhooks (push-based)
Event format
{
"event": "insert",
"collection": "orders",
"tenant": "customer-a",
"timestamp": "2026-03-29T...",
"document": { ... },
"previous": null
}
API surface
Dependencies
- WAL infrastructure (done)
- HMAC-SHA256 (done, in crypto module)
- HTTP server (done)
Effort: Medium
Priority: P3 in roadmap (table stakes for cloud DB)
Overview
Native change data capture by tailing the WAL — real-time event streams and HTTP webhooks triggered by data changes.
Why this matters
Supabase Realtime had to build a whole Elixir service to tail Postgres WAL externally. We own the WAL, so we can stream changes out natively. Customers get real-time events without polling — table stakes for any cloud database.
Implementation approach
WAL tailing
Change streams (pull-based)
Webhooks (push-based)
Event format
{ "event": "insert", "collection": "orders", "tenant": "customer-a", "timestamp": "2026-03-29T...", "document": { ... }, "previous": null }API surface
Dependencies
Effort: Medium
Priority: P3 in roadmap (table stakes for cloud DB)