CHECKFU_API_KEY is bound to the Workspace; no selector header is sent.
PRINCIPAL and AGENT are the prin_… and agent_… the Automation acts as and targets, WHSEC is the whsec_… ingest secret you mint for it, CONNECTION is the conn_… from step 1, and AUTOMATION is the auto_… step 2 returns. The TypeScript tabs below use the TypeScript SDK with this client:
Connect the provider
Authorize a Connection for your end user (see the Connections concept page for the full flow). What matters here: the Connection is owned by a Principal.
Create the webhook Automation
The Automation is the trigger’s brain: its prompt template renders the provider payload as
{{event}}, its dedupe pointer makes redelivery idempotent, and its admission filter decides which events deserve a Session at all.Choose the provider trust owner
If your deployment has an ingress aggregator, bind the governed Connection as a source. If it does not, skip this binding and use the customer-hosted relay in step 4; the relay calls ordinary signed ingest directly.The binding becomes active when your deployment’s aggregator forwards a verified event for that Connection. The
resource is optional for delivery and useful for provider-side registration bookkeeping.Verify and relay exact bytes
Register your aggregator or application receiver URL in the provider’s UI/API. For the customer-hosted path, read the raw body before a JSON parser, verify it with the provider’s SDK, then relay the exact same bytes:A rejected provider signature never reaches the forwarding callback. The helper retains neither credential nor transport; your server owns both.
What your users see
- “Why did it fire?” Every firing links the Automation to the Session and Run it created.
- “Why didn’t it fire?”
GET /v1/automations/{id}/filtered-deliveriesrecords every deliberately dropped delivery with a reason. Silence is always explainable. - Replays are safe: the dedupe pointer settles identical redeliveries against the original firing.
Cleanup semantics worth knowing
- Deleting a source stops delivery for that binding immediately; deleting the Automation cascades its sources.
- Revoking the Connection ends forwarding without touching the Automation.
- A provider-side webhook you registered out-of-band keeps sending until you remove it at the provider; deliveries for a deleted source are acknowledged and dropped.