Sending best practices
WhatsApp bans robotic behavior proactively. bZapper does a lot for you — rotation, volume ramp-up, pacing, automatic pause — but the final outcome depends on how you use it. This guide gathers the practices that protect your numbers the most.
High volume on a single number is what gets you blocked the most. Spread it across several numbers (redundancy) and give each one time. A healthy pool is what sustains delivery.
1. Only send to people who consented
The root cause of most bans is unsolicited messages. Someone who doesn't recognize the sender reports it — and a report is the strongest signal for WhatsApp to block.
- Collect a free, informed and unambiguous opt-in (see Privacy & LGPD).
- Never buy lists or import contacts who didn't ask to receive.
- Let opt-out work: whoever replies STOP/SAIR/PARAR is suppressed automatically and must not return to the base.
2. Ramp up a new number
A freshly connected number doesn't blast messages. bZapper puts every new number on a ramp-up: a daily cap that grows gradually. Respect it.
- Start with few messages per day and ramp up.
- Prefer real conversations (back and forth) at first — not just broadcast.
- Only give volume to a number after it matures (we recommend 7+ days).
3. Keep a healthy pace
Sending everything at once is intrusive for whoever receives it. bZapper applies pacing between messages and respects a time window (8am–9pm) when sending to lists. Help it out:
- Don't force bulk sends outside business hours.
- Vary the content — use variables (
{name},{amount}) so the message ({Hi|Hello|Hey}) so two people don't get identical text. See Campaigns. - Prefer the
conservativepacing_profilewhen the base is cold or new.
4. Rotate across several numbers
A pool with rotation spreads the load and takes at-risk numbers out of circulation — automatically. That's why list sending requires 2+ numbers connected and past ramp-up.
- Available strategies:
round_robin,least_used,health_weighted. - Each number has a live health score; rotation favors the healthy ones.
- Conversation affinity (sticky): once a number talks to a customer, it keeps going — the conversation doesn't "jump" between numbers.
5. Read the block signals
bZapper watches the signals and acts before the ban:
- Smart pause — if messages stay at "sent" and never reach "delivered", the campaign
pauses on its own and you're warned (webhook
campaign.paused). - Inferred block — numbers in that state enter suppression as
blocked_inferred(they block in the account's strict mode). - Drop alerts — when a number drops or is banned, you get a real-time alert.
If a number starts failing, don't push it: let it rest and let rotation take over.
6. Always respect suppression
- Whoever asked to leave stays out — the block list stops the send before queuing.
- Blocks by opt-out or manual are a wall: they don't get through even with
force. - Sync the
contact.opted_outwebhook with your CRM so you don't try to re-import.
Antipatterns that hurt delivery
| ❌ Avoid | ✅ Do |
|---|---|
| Buying/scraping lists | Collecting opt-in with proof |
| All volume on one number | Rotating across 2+ numbers |
| Giving high volume to a new number | Respecting the ramp-up first |
| Identical text for everyone | Variables and content relevant per contact |
| Ignoring who said STOP | Letting opt-out suppress |
| Pushing a failing number | Letting it rest and rotating |
| Sending around the clock | Controlled pacing, time window |
Many of these practices are already built in: list sending applies pacing, load spreading, ramp-up, smart pause and suppression on their own. See Campaigns and the delivery concepts.