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):
- 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.
- 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. - 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.
- Switch to Conservative drip on Resume Skipped for any campaigns that survived. See Warm up a new number.
- Increase the gap between Marketing sends. If you were sending Marketing weekly, drop to monthly until rating recovers.
- 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.
- 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:
- Day 1 — RED rating appears. No sending impact yet.
- Day 1–7 — number is
FLAGGED. Tier holds, doesn’t scale. - Day 7+ — if still FLAGGED, Meta drops your tier by one level immediately. TIER_10K → TIER_1K, etc.
- Day 14+ — if still RED after the tier drop, Meta initiates a policy review. You may receive an email from
messaging-policy@whatsapp.com. - 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: trueare 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.