Guides
The failure mode of WhatsApp marketing is not a bad campaign — it is a good campaign sent to everybody. Blocks and spam reports drive your quality rating, a downgraded rating cuts your messaging limits, and a sustained downgrade restricts the number. Segmentation is not a nicety here; it is what keeps the channel alive.
A message relevant to a thousand people outperforms a generic one sent to ten thousand, and costs less. Segment on what you already know: what they bought, when they last visited, what they browsed, where they are.
There is no universal right number, but there are reliable rules.
Counter-intuitively, a prominent opt-out protects you. Someone who unsubscribes costs you one contact; someone who blocks or reports you costs you quality rating that affects every future message to everyone.
Read rate is unreliable because recipients can disable read receipts. Judge campaigns on replies, clicks and orders — and watch the block rate as closely as the conversion rate.
| Before sending | Why |
|---|---|
| Is this segmented, or going to everyone? | Relevance drives conversion and protects quality |
| Is the category correct? | Mis-categorised promotions get reported |
| Is there an opt-out? | An unsubscribe is far cheaper than a block |
| Is the timing local and reasonable? | Late-night promotions earn blocks |
| Has this segment been messaged recently? | Fatigue drives blocks more than content does |
There is no fixed limit, but weekly is aggressive for most small businesses. Frequency fatigue drives blocks more reliably than poor content does.
Read receipts are a recipient-side setting. Many people have them off, so a message can be read and never marked as such. Judge campaigns on replies and conversions.
No. Messaging people who did not opt in is the fastest route to blocks, a quality downgrade and a restricted number — and it breaches WhatsApp's terms.
Connect your number through Meta Embedded Signup, keep ownership of your WhatsApp Business Account, and pay Meta directly for messages — we never add a markup.