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

# Mass messaging

> Send to many fans and track campaign performance.

Mass messages go out through the `messages` resource's queue lifecycle. You
create a queued mass message, then track its delivery and buyers.

```ts theme={"theme":{"light":"github-light","dark":"github-dark"}}
// Create a mass message to a segment
const queued = await of.messages.queueCreate({
  text: "Weekend special 🔥",
  // target a list, all subscribers, etc.
});

// Track it
const size = await of.messages.queueSize(queued.id);
const buyers = await of.messages.queueBuyers(queued.id);
const chart = await of.messages.queueChart(queued.id);

// Update or cancel before it finishes sending
await of.messages.queueUpdate(queued.id, { /* ... */ });
await of.messages.queueCancel(queued.id);
```

| Want to                      | Call                               |
| ---------------------------- | ---------------------------------- |
| Create a mass message        | `messages.queueCreate(params)`     |
| How many it reached          | `messages.queueSize(id)`           |
| Who bought (for PPV)         | `messages.queueBuyers(id)`         |
| Performance over time        | `messages.queueChart(id)`          |
| Update before send completes | `messages.queueUpdate(id, params)` |
| Cancel                       | `messages.queueCancel(id)`         |

## Targeting with lists

Build the audience first with [lists](/guides/fans-and-subscribers#lists),
then target the list when creating the mass message. Criteria-based list adds
(`addTopSubscribers`, `addQueueBuyers`, …) make it easy to re-engage a cohort.

## Reply-on-subscribe

`messages` also supports a reply-on-subscribe template — an automatic message
sent when a new fan subscribes. Set it once and new subscribers receive it
without a per-fan call.

<Tip>
  Mass messages are rate-sensitive. Stagger large campaigns and watch for
  `429` / upstream rate-limit problems — see [Rate limiting](/platform/rate-limiting).
</Tip>
