Skip to main content
An outbound webhook pushes events to you. Courier sends a signed POST to an endpoint you own. Events fire when a message changes status, a template is published, or an audience recalculates.

How it works

Configure webhook destinations per environment in the console. A webhook created in the test environment fires only for test events, production only for production. Each event arrives as { "type": "...", "data": {...} }. Branch on type in your handler. See for the full list, and for verifying the request came from Courier.

A destination receives every event type

There is no per-event subscription. The console offers no filtering, and dispatch sends every event to every enabled destination. Filter on the type field in your handler and ignore the rest. Handle unknown types gracefully, since Courier may add event types.

Limits & behavior

  • Configured per environment. Create a destination in each environment you need.
  • All events, or none. A destination cannot subscribe to a subset of event types. Filter in your handler.
  • Console-only setup. Create destinations in the console. There is no REST endpoint for it.

FAQ

Not today. A destination receives every event type, so filter on the type field in your handler.
Courier has outbound integrations for observability: , , , and CDPs like . Use those to forward events to your monitoring or data platform. Use webhooks to drive your own application logic.
Outbound webhooks send Courier’s events to you. let an external system send events into Courier, most often to start a journey.