> ## 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.

# Open and click tracking

> How Courier records opens and clicks, and how to serve tracked links from your own domain.

Opens and clicks come from Courier, not the provider. A pixel records opens and a redirect records clicks.

## How it works

* **Opens need open tracking.** Only email carries a pixel, so only email reports opens. Push has no open event. SMS and chat report neither opens nor clicks.
* **Clicks need link tracking.** Courier rewrites links through its redirect, so a click is recorded only when tracking is enabled.
* **Scanners inflate opens.** Inbox security scanners and privacy features like Apple Mail Privacy Protection load the pixel with no human reading the message.

Treat opens as directional and clicks as the stronger engagement signal.

<Note />

### Custom link-tracking domain

Tracked links route through Courier's `ct0.app` domain by default. A branded subdomain like `tracking.acme-corp.com` shows your domain instead and improves deliverability.

<Note>
  A custom tracking domain is available on Business and above. [Contact support](mailto:support@courier.com) or your account team for access.
</Note>

Setup is coordinated with Courier:

<Steps>
  <Step title="Give Courier your tracking subdomain">
    Send support the subdomain you want, such as `tracking.acme-corp.com`.
  </Step>

  <Step title="Add the DNS records">
    Courier gives you two records. A certificate-validation record lets Courier accept requests for your domain. A CNAME points your subdomain at Courier's tracking infrastructure.

    ```
    tracking.acme-corp.com  CNAME  tracking.ct0.app
    ```
  </Step>

  <Step title="Activation">
    Once DNS propagates, Courier enables it for your workspace. Every tracked link then uses your domain.
  </Step>
</Steps>

Test by sending a notification with a tracked link. It should resolve through your domain, not `ct0.app`.

## Limits & behavior

* **Open rates overcount.** Scanners and privacy proxies load the pixel automatically. A rising open rate can reflect inbox behavior, not reader behavior.
* **Tracking is per channel.** Only email supports opens. Channels without a redirect or pixel report neither.
* **The custom domain is workspace-wide.** Every tracked link uses it once enabled. There is no per-template override.

## FAQ

<AccordionGroup>
  <Accordion title="Why are my open rates higher than expected?">
    Inbox scanners and privacy features like Apple Mail Privacy Protection load the tracking pixel automatically, and that counts as an open. Weigh clicks more heavily.
  </Accordion>

  <Accordion title="Do I need a custom tracking domain?">
    `ct0.app` works out of the box. A custom domain helps brand consistency and deliverability, because recipients see your domain in the link.
  </Accordion>

  <Accordion title="Why does an SMS have no open rate?">
    SMS has no open pixel. Only channels that can carry one report opens, which in practice means email.
  </Accordion>
</AccordionGroup>
