🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets + Rapiwa: cleaner WhatsApp campaigns

Lisa Granqvist Partner Workflow Automation Expert

Your WhatsApp outreach looks simple until you do it at scale. A few bad numbers, a few duplicate sends, one messy spreadsheet, and suddenly you’re spending your morning chasing “who got what” instead of following up with real leads.

This WhatsApp campaign automation hits marketers first, but small business owners and busy agency operators feel it too. You get cleaner lists, fewer failed sends, and a sheet that updates itself as messages go out.

Below you’ll see the workflow in action, what it fixes, and how to set it up so your Google Sheet becomes your WhatsApp campaign control panel.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Google Sheets + Rapiwa: cleaner WhatsApp campaigns

Why This Matters: Bulk WhatsApp Outreach Gets Messy Fast

Bulk WhatsApp messaging usually starts as “just send this list a quick update.” Then the list grows. Someone pastes numbers with spaces, parentheses, or a leading +. A few contacts aren’t even on WhatsApp, so your sends fail and you don’t notice until you’re wondering why replies are low. Worst part: tracking becomes a human job. You end up scrolling rows, filtering, re-sending, and hoping you didn’t message the same person twice. It’s not hard work. It’s draining work.

The friction compounds. Here’s where things typically break down.

  • Manual sending turns into hours once you have 50+ contacts, especially if you personalize even slightly.
  • Bad number formatting causes preventable API failures, and you only find out after the campaign is already running.
  • Without automatic status updates, follow-ups become guesswork and leads slip through the cracks.
  • When you can’t reliably separate “sent” from “not sent,” duplicate outreach becomes way too easy.

What You’ll Build: Google Sheets to WhatsApp Sends With Verification

This workflow turns a simple Google Sheet into a controlled WhatsApp sending system using the Rapiwa API (an unofficial WhatsApp integration that sends from your own number). Every 5 minutes, n8n pulls rows marked Status = pending. Each phone number is cleaned up first, so formatting issues don’t sabotage the run. Then the workflow checks if that number is a real WhatsApp user. If it is, n8n sends the message through Rapiwa and marks the row as sent and verified. If it isn’t, it skips sending and updates the row as not sent and unverified. A short wait between messages helps avoid rapid-fire sending and keeps campaigns steadier.

The workflow starts on a schedule, not a manual button press. From there it batches a manageable number of rows, validates each contact, then sends and writes back results to the same spreadsheet. You end up with a living campaign tracker you can trust.

What You’re Building

Expected Results

Say you run a weekly promo to 200 contacts. Manually, even a quick copy/paste routine can take about 1 minute per person once you factor in searching, checking names, and tracking who’s done, which is roughly 3 hours. With this workflow, you update the sheet once, set Status to pending, and let it run. If you process 5 contacts per cycle with a short wait between sends, you’ll usually clear the batch in under an hour of background time, with almost no hands-on work besides reviewing results and replies.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for contacts, messages, and statuses
  • Rapiwa to send WhatsApp messages from your number
  • Rapiwa API key (get it from your Rapiwa dashboard)

Skill level: Beginner. You’ll connect accounts, paste an API key, and map a few spreadsheet columns.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A 5-minute schedule trigger kicks things off. n8n wakes up automatically and looks for rows you marked as pending, so you don’t have to remember to “run a campaign.”

Google Sheets rows are pulled and limited to a safe batch. The workflow grabs your sheet data, caps how many messages it will try in a single run, then processes contacts in small chunks. That keeps runs stable and makes it easier to control sending speed.

Each phone number is cleaned, then verified with Rapiwa. A short code step removes spaces and symbols, then an HTTP request checks if the number is actually reachable on WhatsApp. If it passes, the send request goes out; if not, the workflow skips messaging that contact.

Your sheet becomes the source of truth. Every contact gets a status update in Google Sheets (sent/not sent and verified/unverified), and a short wait happens before moving to the next record.

You can easily modify batch size and the wait duration based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set up the workflow to run on a recurring schedule to fetch pending WhatsApp messages.

  1. Add and open Five-Minute Schedule.
  2. In Rule, set the interval to minutes so it triggers every five minutes.
  3. Connect Five-Minute Schedule to Retrieve Pending Messages.

Tip: Use a longer interval while testing to avoid sending multiple batches too quickly.

Step 2: Connect Google Sheets

Pull queued messages from a spreadsheet and update their delivery status after processing.

  1. Open Retrieve Pending Messages and set Document to WhatsApp Bulk Messaging via Unofficial API.
  2. Set Sheet to Message Queue and apply the filter on Status as needed.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Pending Messages.
  4. Open Mark Verified as Sent and confirm Operation is update with row_number set to {{ $('Cap Batch Size').item.json.row_number }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Mark Verified as Sent.
  6. Open Mark Unverified as Unsent and confirm Operation is update with row_number set to {{ $('Cap Batch Size').item.json.row_number }}.
  7. Credential Required: Connect your googleSheetsOAuth2Api credentials in Mark Unverified as Unsent.

⚠️ Common Pitfall: The update steps rely on row_number. Make sure your sheet includes this column and it is populated by the read operation.

Step 3: Set Up Batch Processing & Normalization

Limit processing volume and ensure WhatsApp numbers are clean before verification.

  1. In Cap Batch Size, set Max Items to 60.
  2. Connect Retrieve Pending MessagesCap Batch SizeIterate Records.
  3. In Iterate Records, keep the default batch behavior to process items one-by-one.
  4. Open Normalize WhatsApp Number and keep the JavaScript Code that cleans non-numeric characters from WhatsApp No.
  5. Connect Iterate Records to Normalize WhatsApp Number.

Tip: Ensure your sheet column is named exactly WhatsApp No so the normalization script updates the correct field.

Step 4: Configure Verification, Routing, and Sending

Verify each number using Rapiwa, route based on validity, and send messages only to verified recipients.

  1. Open Verify WhatsApp Number and set URL to =https://app.rapiwa.com/api/verify-whatsapp with Method POST.
  2. Enable Send Body and set the number parameter to {{ $json["WhatsApp No"] }}.
  3. Credential Required: Connect your httpBearerAuth credentials in Verify WhatsApp Number.
  4. In Validation Branch, ensure the condition checks {{ $json.data.exists }} with the boolean operator true.
  5. Validation Branch outputs to both Dispatch WhatsApp via Rapiwa (true) and Mark Unverified as Unsent (false).
  6. Open Dispatch WhatsApp via Rapiwa and set URL to https://app.rapiwa.com/api/send-message with Method POST.
  7. Set query parameters: number to {{ $json.data.number }}, message to {{ $('Normalize WhatsApp Number').item.json.Message }}, imageUrl to {{ $('Normalize WhatsApp Number').item.json["Image URL"] }}, and message_type to text.
  8. Credential Required: Connect your httpBearerAuth credentials in Dispatch WhatsApp via Rapiwa.
  9. Connect Dispatch WhatsApp via RapiwaMark Verified as Sent.

⚠️ Common Pitfall: If the Rapiwa API returns a different schema, the {{ $json.data.exists }} and {{ $json.data.number }} expressions will fail—verify API response structure in a test run.

Step 5: Add Throttling Between Sends

Control message cadence to avoid API rate limits and allow batch iteration.

  1. Open Pause Between Sends and configure a wait duration that fits your sending limits.
  2. Connect Mark Verified as SentPause Between Sends and Mark Unverified as UnsentPause Between Sends.
  3. Ensure Pause Between Sends connects back to Iterate Records to continue processing the batch.

Tip: Start with a short wait during testing, then increase it to match your provider’s rate limits.

Step 6: Test and Activate Your Workflow

Validate the end-to-end flow before turning it on for continuous outreach.

  1. Click Execute Workflow to run a manual test from Five-Minute Schedule.
  2. Confirm that Retrieve Pending Messages loads rows, Normalize WhatsApp Number cleans data, and Verify WhatsApp Number returns verification results.
  3. Check that verified numbers route to Dispatch WhatsApp via Rapiwa and then update via Mark Verified as Sent.
  4. Verify unverified numbers update via Mark Unverified as Unsent and that Pause Between Sends loops back to Iterate Records.
  5. Once results look correct, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Sheets credentials can expire or lose access to the file. If rows stop updating, check the Google account connection in n8n and confirm the spreadsheet is still shared with that account.
  • If you’re using Wait nodes or external sending, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Rapiwa requests can fail because of an invalid or rotated API key, or because your connected WhatsApp number is temporarily disconnected. Check the HTTP Request node’s last response first, then confirm the token in n8n credentials matches your Rapiwa dashboard.

Quick Answers

What’s the setup time for this WhatsApp campaign automation?

About 30 minutes if your sheet and accounts are ready.

Is coding required for this WhatsApp campaign automation?

No. You’ll map Google Sheets columns and paste your Rapiwa API key into n8n credentials.

Is n8n free to use for this WhatsApp campaign automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Rapiwa subscription/API costs from your plan.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I modify this WhatsApp campaign automation workflow for different use cases?

Yes, and you should. Most people tweak the “Cap Batch Size” limit, the “Pause Between Sends” wait time, and the Google Sheets filter (for example, switch from Status = pending to a specific campaign tag). You can also adjust the “Dispatch WhatsApp via Rapiwa” HTTP Request body to include media if your Rapiwa endpoint supports it, as long as your Image URL is publicly accessible.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions. Reconnect the Google Sheets credential in n8n, then confirm the same Google account can open the exact spreadsheet and tab you selected in the node.

What volume can this WhatsApp campaign automation workflow process?

On n8n Cloud Starter you can run a healthy number of executions each month for small campaigns, and higher plans handle more. If you self-host, there’s no n8n execution cap, but your server resources and Rapiwa limits still matter. Practically, this workflow is designed to run in batches, so sending a few hundred messages a day is realistic if your wait time and batch size are reasonable.

Is this WhatsApp campaign automation better than using Zapier or Make?

Often, yes. n8n is better when you need batching, conditional logic (only send if verified), and a reliable “write back to the sheet” loop without paying more for every branch. Self-hosting is a big deal too if you’re running frequent scheduled checks. Zapier or Make can be quicker for a tiny setup, but they get awkward once you need verification + status updates + rate limiting in one flow. If you want a second opinion, Talk to an automation expert.

Once this is running, your spreadsheet stops being a list and starts being a system. Cleaner campaigns, less second-guessing, and follow ups you can actually trust.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal