# WhatsApp

Monitor WhatsApp event notification delivery and logs.

Source: https://statusdashboard.com/docs/notifications/whatsapp

> This is a plan-gated feature. If it isn't available in your account, visit the [Billing](/docs/org-mgmt/billing) page or contact support to review your options.

This page covers WhatsApp message format, send history, delivery logs, and the suppression list for event notifications. Open [WhatsApp history](/app/notifications/whatsapp/history), [WhatsApp delivery logs](/app/notifications/whatsapp/logs), and [WhatsApp suppression](/app/subscribers/whatsapp/suppression) in the admin console. For org-wide subscriber admin, see [WhatsApp subscribers](/docs/subscriptions/whatsapp). For how visitors subscribe on `/subscribe`, see [WhatsApp subscriptions](/docs/status-dashboards/subscriptions/whatsapp).

When an event with **Notifications** enabled triggers a delivery, matching verified WhatsApp subscribers receive a templated message describing the event at send time.

Description and impact analysis are flattened to plain text in the event summary. Messages include your business name, type, status, and title. A short link to the event is included when the dashboard and event are public. Subscribers can reply **STOP** to opt out.

For how **Visibility** and subscription toggles affect delivery across channels, see [Notifications overview — FAQ](/docs/notifications#frequently-asked-questions). Turning the dashboard **Subscriptions** WhatsApp toggle off hides public sign-up; existing verified subscribers still receive deliveries.

***

## Message format
**Incidents and maintenance**

```
[Business Name]
Incident - Investigating - event_title
https://your-status-host/l/shortCode
```

**Informational events**

```
[Business Name]
Info - event_title
https://your-status-host/l/shortCode
```

| Part              | Description                                                                                                            |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Business Name** | Your organization's display name — the same value shown as **Business name** on the [Account](/app/account) page       |
| **Event summary** | Short labels such as `Incident - Investigating` or `Maint - In Progress`, plus the event title (truncated when needed) |
| **Short link**    | Temporary link to the event on your status dashboard (`/l/…`) when the dashboard and event are public                  |
| **Opt-out**       | Footer text lets subscribers reply **STOP** to opt out of WhatsApp alerts                                              |

Examples:

* Acme Corp — `Incident - Investigating - API degradation` plus short link
* Acme Corp — `Maint - In Progress - Database upgrade` plus short link
* Acme Corp — `Info - Planned maintenance window` plus short link

Subscribers see this content inside a fixed StatusDashboard message layout in the WhatsApp app.

### Dashboard visibility and subscriptions
For how **Visibility** and subscription toggles affect delivery across channels, see [Notifications overview — FAQ](/docs/notifications#frequently-asked-questions). WhatsApp-specific effects:

| Setting                             | Effect on event notification WhatsApp                                                                                                                                                                       |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dashboard Visibility off**        | WhatsApp still sends with the event summary. No short link is included (the dashboard would return 404).                                                                                                    |
| **Event not published**             | WhatsApp still sends with the event summary. No short link is included (the event page would return 404).                                                                                                   |
| **Subscriptions toggle off**        | WhatsApp still sends to existing subscribers. Sign-up and self-service manage flows are hidden; admins can still add and edit subscribers on [WhatsApp subscribers](/app/subscribers/whatsapp/subscribers). |
| **Dashboard and event both public** | WhatsApp includes a short link to the event on the status dashboard.                                                                                                                                        |

See [Subscriptions overview](/docs/status-dashboards/subscriptions) for what the dashboard subscription toggle controls on the public status page.

### Short links
Event (and subscription) WhatsApp messages use temporary **short links** on your status dashboard host when a link is included.

* Links are created per send and **expire automatically** after a retention window (event-view links are retained for **30 days**).
* Opening a short link on the **wrong** host (or after expiry) does not reveal the target — visitors see an in-app message on that status page (not the platform “status page doesn’t exist” page).
* Open short links on the **live** status dashboard hostname for that dashboard.

## Monthly WhatsApp quota
Event notification WhatsApp messages count against your organization's **WhatsApp messages per month** plan quota (UTC calendar month). Check usage against your plan limit (`enabledFeatures.whatsappMessages`).

* **Subscription WhatsApp** (verify and manage messages from your status dashboard) do **not** count toward this limit.
* When you are at or over the limit, new event notifications are **not delivered**. Delivery stops at the limit (partial batches send only what remains). Skipped sends are **not retried**.
* Event saves always succeed — quota applies only to asynchronous outbound delivery.

## Send history
[WhatsApp history](/app/notifications/whatsapp/history) shows a UTC calendar-month bar graph of **event notification WhatsApp sends** per day. Navigate **13 months** of history with previous/next month controls. Counts match your monthly WhatsApp quota population on [Overview](/app) (event notifications only). All bucketing uses UTC calendar days and months.

## Delivery logs
[WhatsApp delivery logs](/app/notifications/whatsapp/logs) are an **organization-wide** audit trail of outbound notification messages — not tied to a single event or dashboard row. They answer whether a message was accepted, delivered, blocked, or skipped before send.

After StatusDashboard hands a notification off to WhatsApp (Meta Cloud API), each row shows what happened next:

| Field         | Meaning                                                                                   |
| ------------- | ----------------------------------------------------------------------------------------- |
| **Recipient** | Who the message was addressed to (WhatsApp phone number in E.164)                         |
| **Preview**   | Truncated message preview at send time                                                    |
| **Type**      | What triggered the send — event notification, subscription verify, or subscription manage |
| **Status**    | Aggregate outcome (see below)                                                             |
| **Timeline**  | Provider lifecycle events appended after handoff (sent, delivered, failed, and so on)     |

Use **Filter by recipient** to search for a specific number. Logs are retained for **30 days**, then removed automatically.

### Status values
| Status        | Meaning                                                                                                                                                                                                                             |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Submitted** | Log row created; handoff to WhatsApp may still be in progress                                                                                                                                                                       |
| **Sent**      | Accepted by WhatsApp for delivery                                                                                                                                                                                                   |
| **Delivered** | WhatsApp confirmed delivery to the recipient device                                                                                                                                                                                 |
| **Blocked**   | Permanent-class failure reported by WhatsApp (invalid number, user block, spam, protect, and so on)                                                                                                                                 |
| **Failed**    | Handoff failed before WhatsApp accepted the message                                                                                                                                                                                 |
| **Skipped**   | Send was **skipped** because the recipient is on your organization's [suppression list](#suppression) — WhatsApp was never called and no quota is consumed. Clear on [WhatsApp suppression](/app/subscribers/whatsapp/suppression). |

A **Skipped** row is intentional: it records that a notification would have been sent but was suppressed to protect deliverability and honor opt-outs. See [Suppression](#suppression) for how to clear a number when the underlying issue is fixed.

## Suppression
Hard failures and opt-outs can damage deliverability for everyone on your account. StatusDashboard maintains an **organization-wide suppression list** on [WhatsApp suppression](/app/subscribers/whatsapp/suppression) so problem destinations are not retried on every future notification.

When a number is suppressed, **all outbound WhatsApp messages** to that destination are skipped — event alerts, verification messages, and manage messages. The send is recorded in [delivery logs](#delivery-logs) as **Skipped** (no quota consumed).

> Suppression is 
>   **not**
>    the same as turning 
>   **Notifications**
>    off on an event, clearing a subscriber's components, or deleting a subscriber row. Those controls affect 
>   *who is subscribed*
>    or 
>   *what triggers a send*
>   . The suppression list stops delivery to specific 
>   **phone numbers**
>    until the entry is cleared.

### STOP and START
Subscribers can opt out by sending **STOP** (or an equivalent keyword such as **END**, **CANCEL**, or **UNSUBSCRIBE**) in WhatsApp:

* Their number is added to your suppression list with reason **Opt-out**.
* **No further WhatsApp messages are sent** until the suppression is cleared.
* They **remain on your subscriber list** — phone, dashboard, and component selections are unchanged. STOP is a delivery suppression, not a subscription delete.

To receive messages again, the subscriber can send **START** (or an equivalent re-opt-in keyword such as **UNSTOP** or **YES**). StatusDashboard clears the **Opt-out** suppression for your organization. Messages resume on the **next** qualifying send — missed alerts are **not** sent again automatically. They must still be a verified subscriber with at least one component selected to receive event notifications.

### Subscriber preferences vs. suppressed delivery
| Action                                           | Subscriber list                | Future WhatsApp messages              |
| ------------------------------------------------ | ------------------------------ | ------------------------------------- |
| Clear all components (manage page or admin edit) | Kept; status **No components** | None until components are added again |
| Send **STOP** in WhatsApp                        | Kept; selections unchanged     | None until opt-out is cleared         |
| Admin **Delete subscriber**                      | Removed from that dashboard    | None                                  |

### How numbers get on the list
| Reason                 | When it is added                                                         |
| ---------------------- | ------------------------------------------------------------------------ |
| **Opt-out**            | The recipient sends STOP (or an equivalent keyword) in WhatsApp          |
| **Invalid**            | WhatsApp reports the destination number as invalid or undeliverable      |
| **User block**         | The recipient blocked your business or the message cannot reach the user |
| **Spam** / **Protect** | WhatsApp or protect rules block the message as abusive or non-compliant  |

**START** clears **Opt-out** suppressions only. Suppressions for invalid, user block, spam, or protect are **not** cleared by START — fix the underlying issue, then remove the row as an admin when appropriate.

### Transient failures vs. permanent suppressions
A single failed delivery does **not** always add a permanent suppression.

| What happened                                         | Suppression list           | What to expect next                                                                         |
| ----------------------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------------- |
| **Temporary issue** (device offline, network delay)   | Usually **not** added      | The next send may succeed — check the [delivery log](#delivery-logs) timeline               |
| **STOP message**                                      | **Opt-out** added          | Future sends skipped until **START** or you remove the suppression after confirming consent |
| **Invalid**, **user block**, **spam**, or **protect** | Added with matching reason | Future sends skipped until you remove the suppression after fixing the issue                |

Entries **do not expire**. They stay until an admin deletes them (or WhatsApp continues to reject the destination independently).

### Removing a number
Click **Remove** on a row and confirm. That clears the number from StatusDashboard's suppression list for your organization.

* Removing an entry **allows future sends** when the next qualifying event or subscription message runs (unless WhatsApp still rejects the destination).
* If the recipient previously opted out with STOP, they should send **START** as well. Removing a row here alone may not be enough — a failed send can re-add an **Opt-out** suppression automatically.
* StatusDashboard does **not** resend missed notifications automatically.
* If the number is still invalid or opted out at WhatsApp, the next send may fail and the number may be suppressed again.

Only remove a number after you have confirmed it is appropriate to resume contact (consent restored, typo fixed, and so on).

## Frequently asked questions
**Why does a delivery log show Skipped instead of Blocked?**

The recipient was already on your organization's [suppression list](#suppression) when the notification was evaluated. StatusDashboard skipped the send and wrote a **Skipped** log row. Check the suppression list to see why the number was suppressed and whether it is safe to remove.

**A number failed once — will we keep messaging them?**

After a **permanent-class** failure (invalid, user block, spam, protect) or an **opt-out**, the number is added to the [suppression list](#suppression) and future notification sends are skipped until you remove it. Transient failures do not always add a suppression entry; you may see a failed timeline event without a matching suppression row.

**Why does a short link show “Link not valid”?**

The status dashboard still loaded — only that link is unusable. Common causes: the temporary link expired, the code was mistyped, or it was opened on a different status-dashboard host. This is different from the platform message that the **entire** status page does not exist.
