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

# WhatsApp quality and health model

> How Meta's quality signals flow into Devotel Orbit — the WABA health probe, per-recipient quality scoring, template auto-pause, and the billing-block banner — and the operator loop that keeps a WhatsApp Business Account sending.

# WhatsApp quality and health model

WhatsApp sending capacity on a WhatsApp Business Account (WABA) is not a fixed quota. Meta continuously grades the account — at the account level, at the phone-number level, and per template — and adjusts how much it can send. This page explains how Devotel Orbit reads those Meta signals, what it does on your behalf when quality degrades, and the operator loop for recovering a degraded account.

## Meta's quality signal sources

Meta grades a WABA from three independent sources. [GET /whatsapp/health](/api-reference/whatsapp) resolves them per connected WABA, and a periodic reconciler re-reads them so the values stay current between dashboard visits:

* **Account-level probe.** A direct Meta read against the WABA reports whether the account can send (`health_status.can_send_message`), its account review status, its business verification status and account mode, and whether payment is attached — the account's baseline send-health. A field Meta does not return degrades to *unknown* and never overwrites a good stored value.
* **Per-template quality scores.** Every approved template carries a GREEN / YELLOW / RED score from Meta, reported through the `message_template_quality_update` webhook. You see the current score per template on the Templates list.
* **Per-recipient drop signals.** Phone-level quality (GREEN / YELLOW / RED / UNKNOWN, worst across the WABA's phones) comes back through the account probe; a recipient-level block or "not useful" report on a given template is what feeds its template score.

Two other probes complete the health picture:

* **Inbound subscription check.** The health surface verifies the WABA is still subscribed to the inbound `messages` webhook field — an account can send fine while silently dropping every reply, and nothing on the Meta side warns about it. Checks **Settings → Channels → WhatsApp → Health**.
* **Payment-funding tri-state.** Funding is treated as *positive-only* evidence: the probe only confirms a payment method when Meta returns one. A bare absence never defensively flags the account, because WABAs on consolidated parent-business billing often omit the funding field entirely.

## What drives template quality to LOW — and the auto-pause hook

Meta scores a template from recipient feedback: blocks, "not useful" reports, and low read rates. Once a template tips RED, Meta first pauses it (24 hours, then 72 hours) and disables it on a third strike — and a pile of RED templates drags the account's whole messaging tier down. Continuing to dispatch a RED template until Meta yanks it only deepens the penalty.

Orbit gives you an opt-in guard for that: per template, you can enable **auto-pause on RED**. When Meta reports a RED score on an opted-in template, Orbit flips it to `paused` so the send pipeline stops dispatching it *before* Meta penalizes the account, and fires a [`whatsapp.template.auto_paused` webhook](/webhooks/events) so you are alerted. A template already in a non-sending status (`paused`, `disabled`, `rejected`, archived) is a no-op, so the hook never re-alerts on a template that already stopped.

Toggle the flag on the template record (the flag lives on the template's metadata and round-trips through `PATCH /api/v1/messages/templates/:id`).

## Billing-health interplay

Payment blocks are a separate, faster-moving signal. When a send fails with Meta error 131042 (payment / business-eligibility block) inside the trailing 24-hour window, the dashboard shows the "WhatsApp sends blocked — payment issue on Meta" banner. The banner uses a success-after-failure rule, not just elapsed time: the moment Meta accepts a send from an affected sender *after* the most recent rejection, the banner clears — you should not have to wait out the 24-hour window once the payment method is fixed. A WABA that shows a funding issue on the health probe is therefore surfaced on two axes — the probe's per-WABA funding signal, and the live 131042 failure signal that drives the banner.

## What you can check

* **Dashboard → Settings → Channels → WhatsApp → Health.** Per connected WABA: can-send, review status, messaging tier and the dynamic daily limit, phone quality, and the inbound-subscription check, with probes re-run on demand.
* **Templates list.** Each template's current quality score and its auto-pause opt-in status.
* **Webhooks.** Subscribe to `whatsapp.template.auto_paused` for degradation alerts, and watch for Meta's `WHATSAPP_TEMPLATE_PAUSED` / `WHATSAPP_ACCOUNT_QUALITY_LOW` send errors (documented on [Troubleshooting: WhatsApp templates](/troubleshooting/whatsapp-template)).
* **API.** [GET /whatsapp/health](/api-reference/whatsapp) returns the same per-WABA health object, and [GET /whatsapp/quality](/api-reference/whatsapp) returns the quality card (cached briefly per connection to stay inside Meta's per-WABA call budget).

## Recovery loop

Recovery is deliberately manual-after-guard: Orbit stops the bleeding, you fix the cause.

1. **Pause the template** (or let auto-pause catch it on RED).
2. **Fix the content.** Edit the template for what Meta flagged — a misleading first line, an offer recipients did not expect, an opt-out that is hard to find — then re-submit for review.
3. **Wait.** Meta re-scores as recipients react to the *new* traffic; an approved replacement typically restores the score in days. Account-level quality recovers the same way — sustained good recipient behaviour lifts the messaging tier back over time.

For payment blocks, fix the payment method on the Meta business; once Meta accepts another send, the banner clears on its own.

## See also

* [Template lifecycle and approval semantics](/concepts/template-lifecycle) — statuses, carrier approval, and where template quality fits in the lifecycle
* [Troubleshooting: WhatsApp templates](/troubleshooting/whatsapp-template) — the RED / `WHATSAPP_TEMPLATE_PAUSED` fix workflow
* [Webhooks: events](/webhooks/events) — `whatsapp.template.auto_paused` payload and delivery semantics
* [Sender warming and reputation](/concepts/sender-warming-and-reputation) — the cross-channel reputation model this quality model parallels
