> ## 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`, the default import of the v7 Node SDK. 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.

# Inbound Events

> Post an event to Courier over the API and start an automation from it.

## Courier Inbound Events

The [CourierJS SDK](https://github.com/trycourier/courier-js/tree/main/packages/courier-js) interfaces with the inbound track API to send client-side application events
to Courier that can be used in Automations trigger nodes.

You can also send events directly via the REST API:

```bash theme={null}
curl --request POST \
  --url https://api.courier.com/inbound/courier \
  --header 'Authorization: Bearer <YOUR_COURIER_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
  "event": "order-placed",
  "type": "track",
  "userId": "user_123",
  "properties": {
    "order_id": "ORD-98765",
    "total": 59.99
  }
}'
```

The `event` name matches the trigger node's event filter in your automation. The `properties` object is available in the automation context via `refs.data`.

## Segment

With a [Segment third-party integration](/docs/integrations/cdp/segment) both [`track`](https://segment.com/docs/connections/spec/track/)
and [`identify`](https://segment.com/docs/connections/spec/identify/) are automatically ingested using the Segment trigger node in Automations.
Refer to [Segment use cases](/docs/journeys/automations/segment) for more information.

## Rudderstack

With an existing [RudderStack third-party integration](/docs/integrations/cdp/rudderstack) both [`track`](https://www.rudderstack.com/docs/event-spec/standard-events/track/)
and [`identify`](https://www.rudderstack.com/docs/event-spec/standard-events/identify/) are automatically ingested into the Rudderstack trigger node in Automations.
