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

# Broadcast performance

> Delivery, open, click, and error rates for a broadcast, down to each recipient.

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>;
};

Every broadcast has a **Performance** tab, from top-line rates down to each recipient.

<Frame>
  <img src="https://mintcdn.com/courier-4f1f25dc/LdpdyPjJHKHJqFY9/assets/broadcast-performance.webp?fit=max&auto=format&n=LdpdyPjJHKHJqFY9&q=85&s=de242699501487e48013e642be593f69" alt="The Performance tab for a sent broadcast" width="1200" height="646" data-path="assets/broadcast-performance.webp" />
</Frame>

## How it works

### Aggregate metrics

The top of the view summarizes the whole send:

| Metric            | What it shows                                |
| ----------------- | -------------------------------------------- |
| **Total sent**    | The number of messages sent.                 |
| **Delivery rate** | The percentage of sends that were delivered. |
| **Open rate**     | The percentage that were opened.             |
| **Click rate**    | The percentage that were clicked.            |
| **Error rate**    | The percentage that errored.                 |

<Note>
  Metrics depend on the channel. Open and click tracking applies only to channels that support it, like email.
</Note>

### Per-recipient log

Below the summary, the log lists every recipient with a timestamp and message status. Filter by status (**All**, **Delivered**, **Opened**, **Clicked**, or **Errors**), or search for one recipient.

When something looks wrong for one person, find them here. The row's **View in logs** action opens the full delivery detail in <Doc href="/docs/monitor/overview">message logs</Doc>.

### Duplicating a broadcast

To send something similar again, open a past broadcast and select **Duplicate broadcast**. Courier copies the content and setup into a new draft you can edit and send.

## Limits & behavior

* **Open and click rates depend on the channel.** An SMS broadcast shows delivery and error rates but no opens.
* **Open rates undercount.** Image blocking and privacy proxies suppress the tracking pixel, so read opens as a trend, not an exact count. See <Doc href="/docs/monitor/tracking">tracking</Doc>.
* **Metrics appear once the broadcast sends.** A draft or scheduled broadcast has no Performance data.

## FAQ

<AccordionGroup>
  <Accordion title="Why is my open rate lower than expected?">
    Open tracking relies on a pixel that many clients block or pre-fetch. Read the number as a trend across sends, not an exact count. <Doc href="/docs/monitor/tracking">Tracking</Doc> covers the caveats.
  </Accordion>

  <Accordion title="How do I debug one recipient who did not get the message?">
    Find them in the per-recipient log, then use **View in logs** for the full delivery detail, including provider responses and errors.
  </Accordion>
</AccordionGroup>
