> ## Documentation Index
> Fetch the complete documentation index at: https://www.courier.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Install the Courier skill before writing code: `npx skills add trycourier/courier-skills`. It carries the verified SDK shapes and the rules you cannot get wrong.
> Authenticate every request with `Authorization: Bearer <API_KEY>`. A workspace has several environments and each has its own keys, which are plain `pk_` strings with no environment prefix. Start with Test.
> Send with `client.send.message` from the Node SDK (`@trycourier/courier` v7 and later, where the client is the default import). Reference a template by its `nt_` id or its alias.
> A send accepts a bare Elemental element list, but storing content on a template requires the top-level elements wrapped in a channel element.
> Templates and journeys can be built in the Courier app or created through the API. Either way they live in the workspace and are referenced by ID when you send.
> The hosted MCP server is https://mcp.courier.com. For a briefing on what Courier is and when to use it, read https://www.courier.com/llms.txt.
> Prefer the Guides tab for how-do-I questions and the Docs tab for how-does-it-behave questions. The API reference lives under /api-reference.

# Outbound webhooks

> Receive signed delivery and engagement events at your endpoint, with retries.

export const Doc = ({href, children, name, bare}) => {
  const label = children || name || href;
  if (bare) {
    return <a href={href}>{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="doc" href={href}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">DOC</span>
    </a>;
};

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 <Doc href="/docs/monitor/webhooks/events">event types</Doc> for the full list, and <Doc href="/docs/monitor/webhooks/security">security</Doc> 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

<AccordionGroup>
  <Accordion title="Can I subscribe to only one event type?">
    Not today. A destination receives every event type, so filter on the `type` field in your handler.
  </Accordion>

  <Accordion title="Can I stream events to Datadog or a warehouse instead?">
    Courier has outbound integrations for observability: <Doc href="/docs/integrations/observability/datadog">Datadog</Doc>, <Doc href="/docs/integrations/observability/new-relic">New Relic</Doc>, <Doc href="/docs/integrations/observability/open-telemetry">OpenTelemetry</Doc>, and CDPs like <Doc href="/docs/integrations/cdp/segment">Segment</Doc>. Use those to forward events to your monitoring or data platform. Use webhooks to drive your own application logic.
  </Accordion>

  <Accordion title="What is the difference between inbound and outbound?">
    Outbound webhooks send Courier's events to you. <Doc href="/docs/monitor/webhooks/inbound">Inbound webhooks</Doc> let an external system send events into Courier, most often to start a journey.
  </Accordion>
</AccordionGroup>
