Virtuo
Products

How to send a WhatsApp campaign without losing your number

Pratham GuptaFounder, Virtuo5 min read

A WhatsApp campaign succeeds or fails on four things: your messaging tier, your quality rating, how gradually you ramped a new number, and how clean your contact list is. Vibot runs a preflight check, sends the first ten recipients as a canary, and halts the campaign automatically if spam-block errors appear.

The most expensive mistake on the WhatsApp Business API is the one that feels like enthusiasm. A business connects a brand-new number on Monday, uploads a list of four thousand contacts on Tuesday, and by Wednesday afternoon the number's quality rating is red and half the messages were never delivered to anybody.

Nothing about that is a Vibot limit or a reseller limit. It is Meta, and it is worth understanding before you press Launch on anything.

The four things that actually decide the outcome

FactorWhat it controls
Messaging tierHow many unique recipients you may reach in any 24 hours
Quality ratingGreen, yellow or red — driven by blocks and spam reports
Number age and rampWhether a fresh number looks like a business or a blaster
List qualityDead numbers, opt-outs, duplicates, globally frequency-capped users

A new number starts at 250 unique recipients per day. It climbs to 1,000 after business verification and a spell of high quality, then 10,000, then 100,000, then unlimited. It is a ladder, and every attempt to skip a rung is read as exactly what it looks like.

What a good campaign tool does before it sends anything

Most of the damage happens in the first sixty seconds of a send, which is why the interesting engineering sits before and around the send rather than in it. Vibot runs six layers on every campaign:

Preflight. Before launch, it counts the dead numbers, the opted-out recipients, the duplicates and the rows whose variables overflow the template, and shows your current tier next to your list size. Red findings block the launch. Amber ones warn and make you tick a box. This one step removes most of the failure codes you would otherwise be reading about afterwards.

First-send warning. The first campaign on a new number, or the first use of a new template, opens a modal recommending the conservative drip rather than a blast. You can ignore it. People who ignore it generally only do so once.

Send-rate cap. A per-tenant ceiling on messages per minute, which we set during your first thirty days and can make permanent on request.

The canary cohort. The first ten recipients of every campaign go out as a canary. Sixty seconds later the system checks that cohort for error 131049 — Meta's ecosystem spam-block. If five per cent of the canary came back with it, which on ten recipients means a single failure, the whole campaign cancels itself. There is then a six-hour cool-off before you can resume, escalating to twenty-four hours if this list has aborted before.

The 15% batch halt. The canary only sees the first ten. So inside the worker, every batch of fifty tallies its own spam-block failures, and if fifteen per cent of a batch fails the entire campaign halts mid-flight. This catches the list that is clean at the top and rotten three thousand rows down.

Drip recovery. After a halt you do not re-blast. You resume the un-sent recipients on a conservative or moderate paced drip, which is the only recovery that does not compound the original problem.

What a halted campaign is telling you

A cancelled campaign feels like the tool getting in your way. It is almost always the tool catching something that would have cost you the number.

Error 131049 means Meta has decided this recipient should not receive more marketing right now — sometimes about your number, sometimes a global frequency cap on that user that has nothing to do with you. Error 131026 means the number is not on WhatsApp at all, which is usually an old CRM export. Error 131048 means your spam rate has already crossed the line.

The list is the usual culprit. Numbers scraped, bought, or exported from a system that has not been cleaned since 2023 will fail at a rate that flags you, and no amount of good copy compensates for that.

The boring advice that works

Warm the number for a fortnight before it matters. Send to people who have messaged you first. Use utility templates where the message genuinely is a utility message, and keep marketing templates for lists that opted in. Watch the quality rating in the dashboard rather than discovering it in a failed campaign — recovery runs on a seven-day rolling window, so a bad Monday is still with you the following weekend.

And treat the delivered-versus-read gap as the real report card. A campaign with ninety-eight per cent delivery and two per cent reads has not succeeded; it has merely not been caught yet.

The full mechanics — tiers, quality rating, every error code, and the warm-up schedule week by week — are in the campaign docs. If you would rather have someone look at your list before the first send, talk to us.

Written by Pratham Gupta, Founder, Virtuo. Questions about anything here? Talk to us.

← All posts