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

# Track Campaign Performance

> Monitor delivery, read rates, and opt-outs for every campaign.

Every campaign in Xobito has a **details page** that shows exactly how the send performed — in real time while it's running, and as a full record afterwards.

## Open the details page

Go to **Campaigns → All Campaigns** and click any campaign — scheduled, sending, or completed.

## The headline metrics

At the top of the page you'll see four live counters:

| Metric        | What it means                                                                                      |
| ------------- | -------------------------------------------------------------------------------------------------- |
| **Sent**      | Messages Xobito has handed off to Meta.                                                            |
| **Delivered** | Reached the recipient's device (single grey tick → double grey).                                   |
| **Read**      | Recipient opened the message (double blue tick — only counted if they have read receipts enabled). |
| **Failed**    | Meta rejected the message. Reason is shown per-row.                                                |

Each counter also shows a percentage relative to the recipient total.

<Note>
  **Read counts are always lower than delivered counts.** Many WhatsApp users turn off read receipts, so a "read" metric of 40% often reflects 70–80%+ actual opens.
</Note>

## Per-recipient breakdown

Below the headline counters is a table of every recipient. You can:

* **Filter** by status (Delivered, Read, Failed, etc.) to focus on outcomes.
* **Search** for a specific phone number or name.
* **Sort** by send time, delivery time, or status.
* **Click a row** to open that contact's full conversation history.

This table is especially useful when you need to:

<CardGroup cols={2}>
  <Card title="Follow up with failures" icon="circle-xmark">
    Filter to Failed, see the reason per row, fix the underlying issue, and retry.
  </Card>

  <Card title="Identify hot leads" icon="fire">
    Filter to Read, sort by most recent — these are your warmest contacts.
  </Card>

  <Card title="Audit delivery" icon="magnifying-glass">
    Customer claims they didn't get the message? Search their number and see the full delivery timeline.
  </Card>

  <Card title="Clean your list" icon="broom">
    Repeat failures on the same number = dead contact. Remove or mark inactive.
  </Card>
</CardGroup>

## Understanding failure reasons

When Meta rejects a message, it returns an error code that Xobito translates for you. The most common ones:

<AccordionGroup>
  <Accordion title="Recipient not on WhatsApp">
    The phone number isn't registered with WhatsApp. Mark the contact inactive or remove them.
  </Accordion>

  <Accordion title="Phone number invalid">
    The number is malformed (missing country code, wrong digit count). Fix the contact record.
  </Accordion>

  <Accordion title="User blocked the business">
    Meta returned a block/opt-out flag for this recipient. They have to re-initiate contact on WhatsApp before you can message them again.
  </Accordion>

  <Accordion title="Template not approved">
    The template status changed (got rejected, paused, or suspended by Meta) between scheduling and send. Edit or resubmit the template.
  </Accordion>

  <Accordion title="Quality rating too low">
    Your phone number's quality rating dropped to Red, and Meta is throttling sends. Pause campaigns for 24–48 hours and focus on service conversations to recover.
  </Accordion>

  <Accordion title="Rate limit exceeded">
    You hit your 24-hour messaging tier. Remaining messages will send automatically when the window resets.
  </Accordion>
</AccordionGroup>

## Tracking link clicks (roadmap)

Xobito does **not** currently record clicks on URL buttons or trackable links inside templates. If you need click-through data today, add UTM parameters to your campaign URLs and use your website analytics tool (Google Analytics, Plausible, etc.) to attribute traffic. Native click tracking is on the roadmap.

## Handling opt-outs (manual today)

Xobito does **not** auto-flag contacts who reply with a stop keyword — there is no automatic opt-out counter on the campaign details page. When a customer asks to stop, an agent should manually disable that contact so they're skipped from future sends. Automatic opt-out handling is on the roadmap.

## Campaign-level KPIs to track over time

Over multiple campaigns, watch these trends in the per-recipient breakdown:

| KPI               | Healthy range | Warning sign                         |
| ----------------- | ------------- | ------------------------------------ |
| **Delivery rate** | 95%+          | Below 90% — list hygiene issue       |
| **Read rate**     | 40–70%        | Below 30% — wrong timing or audience |
| **Reply rate**    | 2–10%         | Varies by campaign intent            |

<Note>
  Xobito does not yet provide a built-in campaign-to-campaign comparison view. To spot trends, open each campaign individually and note the headline counters, or export per-recipient data.
</Note>

## Next

<CardGroup cols={2}>
  <Card title="Campaigns overview" icon="bullhorn" href="/campaigns/overview">
    Back to the campaigns hub.
  </Card>

  <Card title="Live inbox" icon="comments" href="/chat/overview">
    Handle replies coming in from your campaigns.
  </Card>
</CardGroup>
