> Source: https://docs.virtuo.in/vibot/sending/quality-rating
> Meta's green/yellow/red quality rating per phone number — what raises it, what lowers it, and how to recover from a drop.
# Quality rating
Every WhatsApp Business phone number has a **quality rating** — Meta's running judgement of how customers perceive your messages. It is the second most important signal for tier progression (after Business Verification). A drop to RED can stall scaling indefinitely; sustained RED can suspend the number.
## The three levels
| Rating | Meaning | Effect on sending |
|---|---|---|
| 🟢 **GREEN (High)** | Customers are engaging positively. Block/report rate is low. | Tier can scale up. |
| 🟡 **YELLOW (Medium)** | Mixed signal — engagement OK but with some block/report noise. | Tier holds; no scaling. |
| 🔴 **RED (Low)** | Many recipients are blocking or reporting. | Tier holds. If RED persists 7+ days as `FLAGGED`, tier drops by one. |
**RED does not stop sends.** A common misconception is that RED quality halts sending. It doesn't. Meta continues to accept your messages — you just can't *grow* and you start losing tier headroom. The actual halt happens later via tier downgrade.
Rating + flag state are computed on a **rolling 7-day window**, weighted toward the most recent 48 hours. There is no "reset" button. The only way to improve a low rating is to send better messages for several days in a row until the bad signals age out.
## What lowers your rating
In rough order of impact:
### 1. Users blocking you
The single biggest signal. Each user who taps **Block** in their WhatsApp chat with you contributes — and Meta now also records the *reason* they pick when blocking (no longer interested / spam / didn't sign up / inappropriate content / other). Picking "spam" or "didn't sign up" weighs heaviest.
### 2. "Report as spam"
Stronger than a block alone. When a user reports your number as spam, Meta records the message body that triggered it — repeated reports on similar messages identify the offending template fast.
### 3. High pre-delivery failure rate
Sending to dead numbers (131026) or to recipients who've globally rate-limited marketing (131049) signals that you don't know your list well. Sustained ~10%+ pre-delivery failures will pull your rating toward YELLOW even without any user blocks.
### 4. Customers ignoring your messages
Read receipts (or lack thereof) are NOT direct inputs. But replies + engagement-back ARE. A 5% reply rate on a 1,000-message blast is healthier than a 0% reply rate, even if both deliver and read at 100%.
### 5. Sending content that violates WhatsApp policy
Promotional copy on a UTILITY template (category mismatch), wa.me links (Meta treats these as engagement-farming), all-caps shouting copy, fake urgency ("LAST CHANCE!! BUY NOW!!"). These individually don't tank your rating, but combined with normal user blocks they compound fast.
## What does NOT affect your rating
These are common misconceptions:
- **The exact wording of your template.** Meta doesn't run sentiment analysis on your message body in real time. They evaluate the *outcome* — did users engage or block?
- **The number of messages you send.** Sending 10 messages per day vs 1,000 per day doesn't directly affect rating. Block *rate* does, not block *count*.
- **Read receipts.** Whether customers read or don't read isn't a direct input.
- **Time of day.** Sending at 3am is not penalised directly. (Although it might raise block rate because annoyed customers tend to block more — so indirectly, yes.)
## How to read your rating in Vibot vs Meta
| Where | Refresh | Accuracy |
|---|---|---|
| WhatsApp Manager → Phone numbers list | Live | Authoritative |
| Vibot campaign preflight (warning) | Cached 24h | Reflects what Meta returned in the last 24h |
| Meta `phone_number_quality_update` webhook | Pushed by Meta on change | Real-time |
If Vibot's preflight ever shows GREEN but Meta Manager shows YELLOW, restart your campaign wizard — Vibot's cache is stale.
## How to recover from a YELLOW or RED rating
There is no shortcut. The fix is consistent good behavior for ≥ 7 days. Specifically:
**Recovery playbook (proven in practice):**
1. **Stop all Marketing campaigns** for 48 hours. Replace with Utility templates only (order status, appointment reminders, etc.) — these have much better engagement and lower block rates.
2. **Audit your contact list.** Remove every recipient who has not engaged with you in the last 30 days. Remove every number that's failed twice in a row. Run [`SELECT phone, COUNT(*) FROM campaign_recipients WHERE status = 'FAILED'`-style filtering in your dashboard via the Contacts page.
3. **Identify the bleeder template.** Open WhatsApp Manager → Account tools → Message templates. Filter by quality column. Whichever template is YELLOW or RED is the culprit — pause it for a week.
4. **Switch to Conservative drip on Resume Skipped** for any campaigns that survived. See [**Warm up a new number**](/vibot/sending/warm-up-new-number).
5. **Increase the gap between Marketing sends.** If you were sending Marketing weekly, drop to monthly until rating recovers.
6. **Verify your business profile is filled in.** Customers who tap your name and see a populated business profile (photo, description, address) block at ~40% lower rate than those who see a bare number.
7. **Send only to opted-in recipients.** This sounds obvious, but the #1 cause of mass-block events is sending Marketing to scraped/bought lists.
Quality usually recovers from YELLOW → GREEN in **3–5 days** with this playbook. RED → GREEN takes **7–14 days**.
## What happens if quality stays RED
The progression from a single bad campaign to suspension:
1. **Day 1** — RED rating appears. No sending impact yet.
2. **Day 1–7** — number is `FLAGGED`. Tier holds, doesn't scale.
3. **Day 7+** — if still FLAGGED, Meta drops your tier by one level **immediately**. TIER_10K → TIER_1K, etc.
4. **Day 14+** — if still RED after the tier drop, Meta initiates a policy review. You may receive an email from `messaging-policy@whatsapp.com`.
5. **Day 21+** — sustained RED leads to a 30-day or permanent suspension of the phone number. This usually requires a previous warning and is not common for first-time offenders.
The escalator does *not* skip steps. A single bad blast that briefly turns RED will not suspend you. It takes sustained pattern over 1–3 weeks.
## Where Vibot helps automatically
Vibot doesn't decide your quality rating (only Meta does), but five mechanisms keep quality from going RED in the first place:
- **Preflight dead-number flagging** — recipients in Vibot's 30-day cache for error code 131026 are hard-skipped, never sent.
- **Preflight opt-out flagging** — recipients marked `optedOut: true` are skipped.
- **Canary cohort + 15% per-batch halt** — auto-cancels campaigns showing high spam-block (131049) rates.
- **Per-tenant send-rate cap** — applied by Virtuo admin during your first 30 days. Caps msgs/min for the WHOLE tenant.
- **Template quality propagation** — campaign preflight blocks launch if Meta has scored your template RED, and warns on YELLOW/UNKNOWN.
If you're seeing these guardrails fire often, your list (not Vibot) is the problem. Take the warnings seriously.
## Next step
Now that you know how quality is measured, learn how to **safely build it up from day 1**: [**Warm up a new number**](/vibot/sending/warm-up-new-number).