Messaging tiers & limits
Every WhatsApp Business phone number has a messaging-limit tier. The tier sets a cap on how many unique customers that number can reach with business-initiated messages in any rolling 24-hour window. The cap is shared across all phone numbers in the same Business Portfolio.
You climb the ladder by sending high-quality, high-engagement messages — not by sending more, faster.
The tiers
| Tier | Unique recipients / 24 h | How you get here |
|---|---|---|
TIER_NOT_SET | Cannot send business-initiated messages | New number, no traffic, or pre-verification trial state. |
TIER_250 | 250 | Default after registration. Most new numbers start here. |
TIER_1K | 1,000 | Business Verification complete + HIGH quality sustained. |
TIER_10K | 10,000 | Automatic step-up from 1K once you’ve sent 1,000+ delivered conversations to unique recipients in 7 days at HIGH quality. |
TIER_100K | 100,000 | Automatic step-up from 10K with the same criteria, repeated. |
TIER_UNLIMITED | No cap | Largest senders; automatic step-up from 100K. |
Source: Meta — Messaging Limits. Tier names and counts are stable; the step-up window (Meta currently says 30 days for the higher tiers, used to be 7) is occasionally tweaked. Always check Meta’s page if the numbers in this doc feel off.
Some real-world numbers
- A typical SMB doing inbound support + ~200 marketing sends/day will stay at
TIER_250indefinitely — never trips the scaling criteria because it doesn’t send enough volume to unique recipients. - A D2C brand running weekly newsletters to 5,000+ customers usually climbs
TIER_250 → TIER_1K → TIER_10Kover 4–6 weeks after Business Verification. - E-commerce shops sending OTPs + order-status templates frequently sit at
TIER_10KorTIER_100Kbecause the high engagement (low block rate, high read rate) is exactly what Meta wants to see.
How the limit is actually counted
The cap is delivered messages to unique recipients in a rolling 24-hour window, excluding messages sent inside an open 24-hour customer-service window.
Concrete consequences:
- A recipient who messages you first opens a 24h service window. Any business-initiated template you send to them in that window does not count toward your tier limit. (It still costs your wallet for Marketing templates; Utility/Service inside the window are free.)
- Same recipient, multiple sends, same 24h → counts as 1 toward the limit.
- Same recipient, multiple sends across two 24h windows → counts as 2 (one per window).
- Failed sends count too if Meta accepted them at the API. They count as soon as Meta gives you a message ID, regardless of whether they ever deliver. This is why dead-number-heavy lists kill your daily budget.
How Vibot’s preflight uses your tier
When you launch a campaign in Vibot, the preflight check makes two tier-aware decisions:
1. Per-day contact-verification budget
For each unique recipient phone in the list, Vibot can ask Meta’s contacts API “is this number on WhatsApp?” before sending. Meta caps the number of these checks per phone-number per 24 hours. Vibot sizes that cap to your tier:
| Your tier | Contacts-API checks per preflight |
|---|---|
TIER_NOT_SET / TIER_250 | 250 (floor) |
TIER_1K | 1,000 |
TIER_10K | 10,000 |
TIER_100K / TIER_UNLIMITED | 100,000 (response-time cap) |
If your campaign has more recipients than the cap, Vibot checks the first N and the rest are sent unverified with a warning in the preflight: “Verified the first 250 recipients — 4,750 more were not checked because we’d exceed Meta’s per-day verification budget for this number.”
Why this matters: unverified recipients have a higher failure rate. The cap is real and not a Vibot policy.
2. Safety thresholds
Lower-tier numbers (TIER_250) sit closer to the failure cliff — losing 50 recipients to dead numbers on a 250-recipient day is 20% of your budget. So Vibot is stricter on TIER_250: dead-number cache hits skip recipients hard, and the canary cohort fires at the default 5% spam-block threshold. On TIER_10K+ Vibot can afford to be a touch less defensive but in practice we use the same thresholds across all tiers — the same code path runs.
How to step up tiers
Meta documents two paths:
Path 1 — Verification + initial bump (250 → 1,000)
Complete Business Verification on your Portfolio. See Business Portfolio & Verification. Once verified, Meta evaluates your number’s quality. If quality is HIGH (or no quality data because the number is too new), the tier upgrades to 1,000 within a few hours to a few days.
Path 2 — Automatic scaling (1,000 → 10,000 → 100,000 → unlimited)
Once you’re past 250, the climb is automatic. Per Meta’s published criteria, you climb when:
- You deliver at least 1,000 messages to unique customers outside customer-service windows in a defined rolling window (Meta currently uses 30 days — older docs said 7).
- Your phone number’s quality stays at HIGH (“GREEN” rating).
- 24 hours after both conditions are met, Meta bumps you one tier up.
There is no manual upgrade request. You cannot ask Meta to fast-track. Customers who try (via Meta support tickets) are politely told to keep sending high-quality traffic.
What blocks the climb
- Persistently low quality. If your number is
FLAGGED(quality issue ongoing for 7+ days), Meta will drop you one tier instead of climbing. See Quality rating. - Low volume. You can’t climb from 1K to 10K if you’re only sending 200/day. The system needs to see 1,000+ unique deliveries.
- Customer blocks. Each user who blocks or reports your number contributes to the quality score. ~5%+ block rate is enough to keep quality below HIGH.
- Burst patterns. Sending all 1,000 in 5 minutes vs spaced over 8 hours shows the same delivered count but produces very different engagement signals.
Where to see your current tier
Three places, all in sync:
- WhatsApp Manager → Phone numbers list → “Messaging limit” column. The authoritative source. See the WhatsApp Manager tour.
- Vibot campaign preflight → triggers automatically on Step 3 of the campaign wizard. Shows up in the preflight warning copy.
- Meta API (
GET /{phone-number-id}?fields=messaging_limit_tier) — what Vibot reads behind the scenes, cached 24 hours.
If the three ever disagree, Meta Manager is correct and Vibot is showing a stale 24-hour cache. Restart the campaign wizard to force a refresh.
Frequently asked
Q. I just got verified. When will I move from 250 to 1,000? Usually within 24 hours, sometimes immediately. Refresh WhatsApp Manager. If you’re still at 250 after 48h, ensure quality rating is GREEN — Meta won’t bump a number with YELLOW or RED.
Q. I have multiple phone numbers in one Portfolio. Are they each capped separately? No. The cap is on the Portfolio, shared across all phone numbers. If you have two numbers and TIER_1K, the combined daily budget is 1,000 across both numbers, not 1,000 each.
Q. Does sending more on day 1 hurt me? Yes. Sending 250 to dead-number-rich lists, getting 30%+ pre-delivery failures, will drop quality fast. Better to send 50 high-engagement messages on day 1, prove the list is clean, and scale up.
Q. Can I temporarily exceed the cap?
No. Meta’s API returns error 131048 (“Spam rate limit hit”) when you exceed it. Vibot’s campaign launcher will keep enqueueing but Meta-side accepts will fail. You can’t game this.
Q. Does a campaign that gets cancelled at canary still count against my tier? Yes — the 10 canary recipients still consumed tier budget regardless of cancellation. This is why we cap canary at 10, not 100.
Next step
If you’re a new sender and about to launch your first real campaign, the warm-up guide is essential reading: Warm up a new number.