Bulk WhatsApp Campaign System — 40-node workflow with kill switch, dedup, reply tracking

I built a production-grade bulk WhatsApp campaign system in n8n and wanted to share it with the community.

**What it does:**

  • Reads contacts from Google Sheets

  • Normalizes phone numbers (multi-country support)

  • Filters blocked/opted-out contacts

  • Deduplicates with SHA256 keys (never double-message anyone)

  • Sends WhatsApp template messages via Meta Cloud API in throttled batches

  • Kill switch auto-stops if too many contacts already received the message

  • Inbound webhook captures every reply and correlates it to the campaign

  • Auto-detects opt-out keywords and adds numbers to a permanent blocklist

**The stack:**

  • n8n (37 nodes, fully connected)

  • Meta WhatsApp Business Cloud API

  • Google Sheets (5 tabs: Contacts, Blocklist, Dedupe, Sends, Replies)

**Bonus:** It comes with a browser-based configurator (HTML file) — you fill in a form with your API credentials,

spreadsheet ID, and campaign details, and it generates a ready-to-import JSON. No manual JSON editing.

I’ve used this to run real campaigns with 5,000+ contacts across Colombia, Mexico, Peru, Ecuador, and Chile.

I packaged it with full documentation (setup guide, feature guide, customization guide, architecture diagrams) and put it on

Gumroad:

:backhand_index_pointing_right: WA Campaign Lean — Bulk WhatsApp Campaign System for n8n

Happy to answer any questions about the architecture or how specific nodes work!

You can adjust it to what you want, botch batch size and interval between sets (eg. 50, 5s).
But for a lot of messages I do divide the lists of numbers that I put on the sheets file.