GST Deadline Broadcasts: Avoid the WhatsApp Ban

The first version of our bulk-send feature got a beta tester's WhatsApp number banned within four hours. We were sending the same message text, with no delay, to a list of 80 GST clients. The number went from "active" to "registration not allowed by your service provider" mid-broadcast.

It took two weeks and a hard lesson to ship the version that doesn't do that. This post is the operational summary of what we learned, in case you're considering doing your own broadcasts and want to know where the cliff edge is.

Why this is harder than it sounds

WhatsApp doesn't publish its anti-spam rules. They publish principles — "don't send unsolicited messages", "respect user consent" — but the actual mechanisms are inferred from how the system behaves.

What we figured out, partly from our own banned-account autopsy and partly from talking to other developers building on whatsapp-web.js and Baileys:

The single biggest signal is identical-text high-volume broadcasts. If WhatsApp sees the same message body sent to 50+ recipients in rapid succession, especially across recipients who haven't messaged that number recently, it flags the sender. The flag isn't always immediate — sometimes it accumulates over a day or two before the number is suspended.

The second signal is sustained outbound rate. If you're sending more than ~30-40 messages per minute, sustained, the system treats that as automation. (It is automation, of course; the question is whether it's organic-looking or not.)

The third is the recipient ratio. New numbers (people who haven't messaged you recently) weight much more heavily than active conversations. A broadcast to 200 active clients is fine; a broadcast to 200 numbers you've never messaged is a fast track to a ban.

These aren't published thresholds. They're empirical. Each of them has gotten a beta user banned at some point.

What we built into the feature

Bulk send in the AI4CA desktop app does five things to stay below the cliff edge.

1. Per-message variation (default on). You write a template like "Reminder, {{name}}: GSTR-1 due {{date}}. Please share invoices by {{date_minus_3}}." The system fills the variables per recipient. Same intent, different bytes on the wire. WhatsApp's deduplication doesn't fire.

2. Jitter between sends. You set a delay (default: 5 seconds, max we recommend: 15). The system jitters that ±30%, so the sequence isn't a clean periodic 5s, 5s, 5s. The actual gaps are 4.2s, 6.8s, 5.4s, 3.9s. Looks like a human.

3. Daily volume cap. Hard cap of 200 sends/day on the free tier, 1,000/day on paid. We've tested up to 2,000/day on rotated rest periods (1,000 morning, 1,000 evening) without issue. Above that, results are unpredictable. The cap protects you from yourself — there's no override button.

4. Recipient filter. The system flags recipients you haven't messaged in 60 days as "cold." You can include them, but the UI warns you, and the default is to exclude. This is the single biggest predictor of ban.

5. Visibility into the throttle. As the broadcast runs, you watch progress in real time, see which recipients delivered/failed/queued, and can pause or stop mid-flight. Twice during testing, we caught a sender pattern that started getting throttled (delivery rate dropping) and stopped before the number got fully banned. The recovery window is small — you have minutes, not hours.

The "good broadcast" pattern, in shape

Here's what a working GST quarterly reminder broadcast looks like in our app:

  • List: Tagged group "GST quarterly clients" — 47 contacts, all messaged us in the last 30 days
  • Template: "Hi {{name}}, this is a reminder — your GSTR-3B for {{quarter}} is due {{deadline}}. Please share invoice files by {{deadline_minus_5}} so we have time to verify and file. Reply to this with the file or any questions. — {{firm_name}}"
  • Delay: 8 seconds, jittered
  • Schedule: 11am IST on the 5th of the month
  • Estimated runtime: ~6 minutes for 47 sends

That broadcast goes out, the firm gets ~30 reply-with-file responses over the next 48 hours, the documents auto-tag into the per-client document vault (because of the integration described in the previous post), and the firm spends Tuesday afternoon doing actual GST work instead of chasing 47 individual WhatsApp threads.

What we won't let you do

We've made some calls about features we won't add, even though customers ask for them. Listing them honestly:

Cold outreach lists. Buy a CSV of 5,000 SME owners in Pune, upload it, broadcast. We don't support this and won't. Even if WhatsApp's rules permitted it (they don't), ICAI rules certainly don't — that's solicitation, the exact thing the new framework still prohibits.

Identical-text broadcasts above 50 recipients. The variable system is on by default and we've made it slightly annoying to turn off. If you do turn it off and your number gets banned, that's between you and Meta.

Custom rate "I'm sure I know what I'm doing" override. No. Trust us, you don't. The defaults are calibrated against actual ban events.

Multi-account rotation to dodge limits. Some tools let you connect 5 numbers and round-robin sends. We don't. Aside from being against WhatsApp ToS, it's the kind of optimization that works for a month and breaks catastrophically the day Meta pushes a detection update.

A note on the WhatsApp Business API alternative

You can use the official Meta-blessed path — WhatsApp Business API via a BSP like Gupshup or AiSensy. You'll pay ₹0.45–0.85 per template message, you'll need every template approved by Meta in advance (slow), and your sender number will be a verified business account separate from your personal WhatsApp.

For a CA firm sending ~200 reminders per quarter (so ~800 per year), the math is:

  • API: 800 × ₹0.65 average = ₹520/year, plus the BSP setup and monthly fee (₹500-1,000/month minimum)
  • Desktop bulk-send: free up to 200/day on our free tier, ₹499/month for unlimited

The API is the right answer when you're sending 5,000+ messages/month or you need the audit trail / compliance certification. For a small CA practice that hasn't yet outgrown the 1,000-sends-a-month range, the desktop path is faster, cheaper, and uses the number your clients already know.

The actual setup time

If you have your client list tagged in the system already (~10 minutes of one-time grouping), setting up a recurring quarterly GST reminder takes about 4 minutes:

  1. Pick the tagged group
  2. Write or paste the template (we ship example templates for GST monthly, GST quarterly, advance tax, ITR, ROC)
  3. Set the schedule
  4. Save

It runs forever. Quarterly reminders go out without you remembering them. Replies come back into your unified inbox. The whole machinery exists to give you back the half-day you used to spend manually pinging each client three days before each deadline.


Bulk send is part of the AI4CA WhatsApp desktop app. Free tier supports up to 200 sends/day with the rate limiting + variation built in. ₹499/month adds 1,000/day, scheduled broadcasts, and template library. Connects to your existing WhatsApp number via the Web protocol — no per-message API fees, no separate business account required.

Build your CA practice website in 10 minutes

Pick a template, customize, and publish under your own domain. No code, no monthly hostage fees.

Get started free