Fan out
One form (or one stream), several routes: a signed webhook to the CRM, a Telegram message to the sales chat, a digest email to ops. Each (submission, route) is exactly one delivery with its own status, attempts and response.
When the CRM is down
The webhook delivery fails, backs off exponentially up to 6 hours between attempts and retries up to 10 times. When the CRM returns, the lead arrives with its original payload snapshot. If it never returns, the delivery goes dead and raises an alert you cannot miss; retry it by hand when fixed.
Quality rules
Routes exclude spam and quarantined submissions by default. Keep it that way for the CRM; turn it off for an audit webhook that should see everything. Honeypot hits never reach sales.
Windows and digests
A partner campaign from 1 September to 31 December is a window on the route. A morning summary is a digest route with cron 0 8 * * * in the organization's timezone. One digest per period is guaranteed by a unique constraint.
curl -X POST https://postbag.dev/v1/routes -H "Authorization: Bearer pb_live_…" -d '{
"stream_id": "st_vending", "destination_id": "ds_7hm2q0",
"mode": { "type": "digest", "cron": "0 8 * * *", "timezone": "Europe/Stockholm" }
}' curl -X POST https://postbag.dev/v1/routes -H "Authorization: Bearer pb_live_…" -d '{
"stream_id": "st_vending", "destination_id": "ds_7hm2q0",
"mode": { "type": "digest", "cron": "0 8 * * *", "timezone": "Europe/Stockholm" }
}'