WhatsApp Broadcast API — Send Personalized Messages to 1000s of Users
A complete guide to WhatsApp broadcast messaging. Send personalized template messages to thousands of users at once, with rate limits and delivery tracking.
Broadcasting is where WhatsApp marketing really shines — 98% open rates, 45-60% click-through rates. Compared to email's 20% open / 2% CTR, it's a different universe.
Here's how to send broadcast messages to thousands of users using the Gavi WhatsApp API.
The basics
A broadcast in WhatsApp = sending a pre-approved template message to many recipients. You can either:
- Send the same template to everyone (with the same variables), or
- Send personalized versions (different variables per recipient)
Step 1: Create and approve a template
Before you can broadcast, you need a Meta-approved template.
Go to Settings → Message Templates in Gavi and create one:
Name: weekly_newsletter
Category: MARKETING
Language: en
Body: Hi {{1}}, here's this week's update from {{2}}. Read more: {{3}}
Submit for Meta approval. Takes 15 minutes to a few hours.
Step 2: Send the broadcast
Same variables for everyone
import { WhatsApp } from '@gaviwhatsapp/whatsapp'
const wa = new WhatsApp({ apiKey: process.env.GAVIWHATSAPP_API_KEY })
const result = await wa.broadcast({
recipients: ['+919876543210', '+919876543211', '+919876543212'],
template: 'weekly_newsletter',
language: 'en',
variables: {
'1': 'friend',
'2': 'Gavi',
'3': 'https://example.com/newsletter'
}
})
console.log(`Sent: ${result.sent}, Failed: ${result.failed}`)
Personalized per recipient
await wa.broadcast({
recipients: ['+919876543210', '+919876543211'],
template: 'promo_offer',
language: 'en',
variables_per_recipient: [
{ '1': 'Alice', '2': '20%' },
{ '1': 'Bob', '2': '15%' }
]
})
The variables_per_recipient array must match the recipients array length.
Step 3: Track delivery
Register a webhook to receive delivery events:
await wa.webhooks.create({
url: 'https://yourapp.com/webhook',
events: ['message.sent', 'message.delivered', 'message.read', 'message.failed']
})
Now you get real-time events:
{
"event": "message.delivered",
"to": "+919876543210",
"message_id": "wamid.abc123",
"timestamp": "2026-04-10T12:00:05Z"
}
Rate limits & best practices
Meta's rate limits
WhatsApp Business accounts have messaging tiers that cap how many unique users you can message per day. The exact thresholds vary by country and Meta updates them periodically — check the official Meta docs for current values. New accounts start at the lowest tier and Meta auto-upgrades you as you build a track record of quality messages with high delivery rates.
Quality rating
Meta tracks your phone number's quality rating:
- Green = healthy
- Yellow = declining
- Red = paused (can't send)
How to stay green:
- ✅ Send only to users who opted in
- ✅ Use templates that match what you'll actually send (don't submit "order update" and send promotions)
- ❌ Don't spam. Block rates matter.
Timing
- Send between 9am–7pm recipient's local time
- Avoid Sunday mornings, weekday late nights
- Space out broadcasts if sending > 1000 messages
Opt-in is non-negotiable
Meta is strict: you must have proof of opt-in for every recipient. Typical ways:
- Checkbox on a signup form: "I agree to receive WhatsApp updates at this number"
- User messaged you first (implicit opt-in within 24h)
- Opt-in via landing page with WhatsApp link
Keep records. Meta can audit.
Pricing math
Meta bills you directly per template message — rates depend on the template category (Marketing, Utility, Authentication) and the recipient's country, and Meta updates them periodically. Always check the latest rates on Meta's official page before you budget: business.whatsapp.com/products/platform-pricing.
Gavi charges a flat $9.99/mo on top — no per-message markup. You pay Meta directly for every send.
MCP / AI workflow
Using an AI coding tool (Cursor, Claude Code)?
Read users.csv. For each row, send the "promo_weekly" template with first name and discount code.
Done.
Try it: gaviventures.com · API docs · Templates guide
Ready to try Gavi WhatsApp?
Send WhatsApp messages from your code, AI agent, or CRM in under 5 minutes.