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

# Configure Digests Schedules

> Collect a subscription topic's notifications and deliver them together on a schedule. Configure digest delivery schedules, the digest template, and categories per topic in the Preferences Editor.

A digest collects a subscription topic's notifications and delivers them together on a schedule, instead of sending each one as it happens. A busy topic becomes one daily or weekly summary rather than a stream of individual messages, and each recipient chooses how often they want it.

You configure digests per topic in the [Preferences Editor](/platform/preferences/preferences-editor): open a topic and go to its **Digest settings**.

## How digests work

A digest uses two kinds of template:

* **The notifications that get collected** are the templates [mapped to the subscription topic](/platform/preferences/preferences-editor#map-templates-to-topics). You keep sending these normally.
* **The digest template** is the one you set in Digest settings. It renders the collected notifications as a single message.

When a recipient is on a digest schedule for the topic, Courier collects those sends instead of delivering them one at a time, then renders the digest template at the scheduled time. Sends collected this way show a `DIGESTED` status in your logs. Recipients on the Instant schedule receive each notification immediately, with no batching.

## Delivery schedules

Delivery schedules are the frequency options recipients can choose from. Add up to four. The first in the list is the default recipients see selected, and you can drag to reorder. Recipients pick their option in the [preference center](/platform/preferences/hosted-page).

| Frequency         | Delivers                                 | You configure                                      |
| ----------------- | ---------------------------------------- | -------------------------------------------------- |
| **Instant**       | Immediately, not collected into a digest | Nothing. This lets recipients opt out of batching. |
| **Daily**         | Once a day                               | Time, timezone                                     |
| **Weekly**        | Once a week                              | Day of week, time, timezone                        |
| **Every weekday** | Monday through Friday                    | Time, timezone                                     |
| **Multiple days** | On the days you choose                   | Days of the week, time, timezone                   |
| **Monthly**       | Once a month                             | Day of the month, time, timezone                   |

Each scheduled option delivers at the time and timezone you set. The time picker shows both the local time and its UTC equivalent, for example `9:00 AM · 17:00 UTC`.

## Digest template

Select the [template](/platform/content/design-studio/design-studio-overview) that renders the digest. It takes the collected notifications and lays them out as one message. Until you link a template, notifications for this topic send individually instead of being batched.

The template receives the collected items grouped by category. Each category is available by its name, with a `count` and the retained `items`:

```json theme={null}
{
  "category_name": {
    "count": 25,
    "items": [
      // up to 10 events, per the category's retain setting
    ]
  }
}
```

Reference `category_name.count` for the total and loop over `category_name.items` to render each event.

## Categories

Categories are optional. They separate different kinds of items within one digest, so a single digest can group, for example, comments and mentions under distinct sections. Add up to five.

For each category, set a name and a retain setting that controls which items are kept when more arrive than the digest shows:

| Retain         | Keeps                                                   |
| -------------- | ------------------------------------------------------- |
| **First 10**   | The first items received in the digest window           |
| **Last 10**    | The most recent items received                          |
| **10 Highest** | The top items by a data attribute (needs a sort key)    |
| **10 Lowest**  | The bottom items by a data attribute (needs a sort key) |

Each category appears in the digest template under its name as `{ count, items }`, as shown above.

## Trigger empty

By default, a scheduled digest is skipped when it has collected no items. Turn on **Trigger empty** to send it anyway at its scheduled time. This is useful when your own system supplies the data that fills the digest, so the send should fire even if Courier collected nothing.

## Publishing

Digest settings are part of your preference page. Save the settings, then publish your preferences in the editor for the changes to reach recipients.

## FAQ

<AccordionGroup>
  <Accordion title="How do recipients choose their digest frequency?">
    They pick from the delivery schedules you configure, in the hosted or embedded preference center. The first schedule in your list is the default they see selected. Choosing Instant opts them out of batching for that topic.
  </Accordion>

  <Accordion title="What's the difference between Instant and a digest schedule?">
    Instant sends each notification immediately, with no batching. A digest schedule collects the topic's notifications and delivers them together at the time you set.
  </Accordion>

  <Accordion title="How does the digest template access the collected items?">
    Collected notifications arrive grouped by category. Each category is available by its name with a `count` and an `items` array, so you reference `category_name.count` and loop over `category_name.items` in the template.
  </Accordion>

  <Accordion title="Do I need a template for digests to send?">
    Yes. The digest template renders the collected notifications as one message. Until a topic has a digest template linked, its notifications send individually instead of being batched.
  </Accordion>

  <Accordion title="What does Trigger empty do?">
    It sends the digest on schedule even when no items were collected. Leave it off to skip empty digests; turn it on when your own system provides the data the digest renders.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Preferences Editor" icon="gear" href="/platform/preferences/preferences-editor">
    Map templates to the topic and open its digest settings
  </Card>

  <Card title="Design Studio" icon="paintbrush" href="/platform/content/design-studio/design-studio-overview">
    Build the template that renders the digest
  </Card>

  <Card title="Hosted Preference Center" icon="globe" href="/platform/preferences/hosted-page">
    Where recipients choose their digest schedule
  </Card>

  <Card title="User Preferences API" icon="code" href="/api-reference/user-preferences/get-users-preferences">
    Read and set a user's preferences, including their digest schedule
  </Card>
</CardGroup>
