Scaling your outbound messaging on Meta's WhatsApp Cloud API requires navigating Meta's messaging tiers, throughput restrictions, and phone number quality ratings.
Attempting to blast tens of thousands of messages without understanding rate limits will result in rate-limiting errors (HTTP 429), delivery delays, or having your phone number downgraded to "Low Quality" or flagged.
Here is a practical guide to optimizing throughput and avoiding bottlenecks when operating at scale.
Understanding Meta's Messaging Tiers
WhatsApp Business accounts operate under strict daily conversation limits that expand automatically as your phone number maintains a healthy quality rating:
- Tier 1: 1,000 unique business-initiated contacts per 24-hour rolling window.
- Tier 2: 10,000 unique contacts per 24-hour window.
- Tier 3: 100,000 unique contacts per 24-hour window.
- Tier 4 (Unlimited): Unlimited customer-initiated conversations per day.
Meta automatically upgrades your tier when:
- Your phone number quality rating remains High or Medium.
- You utilize at least 50% of your current tier limit over a rolling 7-day period.
Cloud API Throughput Constraints (Messages Per Second)
Beyond the 24-hour conversation tier, Meta enforces an egress rate limit (RPS) per phone number:
- Default standard throughput: 80 messages per second (mps).
- High-volume approved enterprise throughput: Up to 500 to 1,000 mps.
If your broadcast worker dumps 50,000 requests to https://graph.facebook.com/v21.0/{phone_number_id}/messages simultaneously, Meta's gateway rejects requests with error code 130429 (Cloud API message throughput limit reached).
Implementation: Leaky Bucket / Token Bucket Rate Limiting in Node.js
To prevent HTTP 429 errors, wrap your egress client with a token bucket limiter:
import { RateLimiter } from "limiter";
import axios from "axios";
// Limit to 75 requests per second (leaving safety margin under 80 mps ceiling)
const limiter = new RateLimiter({ tokensPerInterval: 75, interval: "second" });
async function sendWhatsAppTemplate(recipientPhone: string, templatePayload: any) {
// Wait for available token before dispatching HTTP request
await limiter.removeTokens(1);
try {
const res = await axios.post(
`https://graph.facebook.com/v21.0/${process.env.WHATSAPP_PHONE_ID}/messages`,
{
messaging_product: "whatsapp",
to: recipientPhone,
type: "template",
template: templatePayload
},
{
headers: {
Authorization: `Bearer ${process.env.WHATSAPP_ACCESS_TOKEN}`,
"Content-Type": "application/json"
}
}
);
return res.data;
} catch (error: any) {
if (error.response?.status === 429) {
console.warn("Backing off on 429 rate limit...");
// Implement exponential backoff and re-enqueue message
}
throw error;
}
}
Maintaining a High Phone Number Quality Rating
Meta rates your phone number as Green (High), Yellow (Medium), or Red (Low) based on how recipients respond:
- If recipients frequently hit "Block" or "Report as Spam", your rating drops to Red.
- If quality stays Red for more than 7 days, Meta drops your daily sending tier down to the previous level.
Best Practices to Protect Quality:
- Always obtain explicit opt-in: Never import purchased phone lists.
- Include an Opt-Out keyword: Provide an easy "Reply STOP to unsubscribe" button inside promotional templates.
- Pace Outbound Broadcasts: Segment campaigns by engagement history rather than blast-messaging inactive contacts.
Effortless Scaling with Enterprise Infrastructure
Rather than writing custom rate limiters, handling exponential backoff algorithms, and tracking rolling tier thresholds yourself, modern growth teams rely on AI Soul.
AI Soul provides built-in rate-limiting queues, intelligent broadcast pacing, and automated WhatsApp Drip Campaigns. In addition, AI Soul features an interactive Meta Per-Message Cost Guide to help businesses forecast marketing and utility budgets with zero markup on Meta conversation rates.
Summary Checklist
- [x] Limit egress throughput to 75–80% of your maximum approved mps to prevent queue bursting.
- [x] Monitor Meta Quality Score dashboards weekly.
- [x] Keep promotional templates relevant and actionable with quick-reply buttons.
Top comments (0)