Prerequisites
- A Courier workspace with an active API key
- An HTTP endpoint that can receive POST requests (for testing, webhook.site works well)
Step 1: Install the webhook integration
Go to Integrations > Webhook in the Courier dashboard and configure a default destination:- Webhook URL: the endpoint that receives requests (e.g.,
https://api.yourapp.com/courier-events) - Authorization: choose None, Basic, or Bearer and provide credentials if needed
Step 2: Create a template with a webhook channel
Open the Template Designer and create a new template (or open an existing one). Add a Webhook channel to define the content structure Courier sends to your endpoint. The webhook channel uses the same content blocks as other channels. The rendered content is included in the HTTP request payload that Courier sends to your destination.Step 3: Send with a static destination
Send a notification using the template you created. Courier delivers the payload to the default webhook URL you configured in Step 1.Step 4: Send with a dynamic destination
If different recipients need payloads delivered to different endpoints, use a dynamic destination. Pass the webhook configuration in the recipient’s profile under thewebhook key:
basic (username/password) and bearer (token) modes.
You can also set "profile": "expanded" in the webhook object to include the full merged user profile in the request payload instead of just the data passed at send time.
Step 5: Customize with overrides
Use provider overrides to change the HTTP method, headers, or body for a specific send without modifying the integration settings or recipient profile:body override, it replaces the entire request payload. Use this when the receiving system expects a specific schema (e.g., Slack incoming webhooks).