Outbound deliveries
Signed POSTs from Connect to consumer URLs, with delivery evidence.
Outbound webhooks fan Kafka events to a consumer URL with the same HMAC header used inbound. Every attempt is a delivery_attempt row.
Register a subscription
Operators register consumerAppId + targetUrl + eventType in Portal (or POST /api/v1/ops/webhooks/subscriptions). The dispatch worker matches catalog events such as CustomerCreated and OrderCreated, then POSTs the payload with:
X-Partner-Signature: sha256=<hex>X-Correlation-Id
Retries and dead letters
Exhausted retries set delivery_attempt.status to dead letter and publish to Kafka connect.webhook.deliveries.dlt. Admins redrive from the delivery log. See Dead letters and Redrive.
How it looks in Portal
Webhooks is inbound Events / Apps. Outbound evidence also appears on the run as hops from delivery_attempt, and on Reliability when a delivery is dead-lettered.
If this fails
| Symptom | Cause |
|---|---|
| No POST to your URL | Subscription eventType does not match the Kafka event |
| Signature verify fails on your side | You hashed parsed JSON instead of the raw body Connect sent |
| Dead letter | Downstream 5xx or timeout beyond CONNECT_PARTNER_WEBHOOK_DELIVERY_TIMEOUT_MS (default 5s) |
This is separate from governed-HTTP hops inside a workflow. Subscription delivery uses the webhook engine so every attempt is visible.