Automate WhatsApp Template Campaigns Using n8n, Google Sheets and WOZTELL

Automate WhatsApp Template Campaigns with n8n and Google Sheets

 

This workflow allows you to:

  • Send approved WhatsApp template messages in bulk

  • Pull contact data from Google Sheets or CSV upload

  • Automatically loop through each contact

  • Track delivery success or failure

  • Prevent duplicate sending

All powered by n8n and WOZTELL.

It is built for teams that need to send WhatsApp template messages to a contact list for campaigns, outreach, or announcements. Suitable for event organisers, marketing, sales, or agencies managing bulk messaging.


What This Workflow Does   

This template sends WhatsApp template messages to a list of contacts stored in:

  • Google Sheets
    or

  • A CSV file uploaded via n8n form

For each contact, the workflow:

  1. Reads unsent records

  2. Loops through contacts one by one

  3. Sends an approved WhatsApp template

  4. Updates the delivery status in the sheet

  5. Waits briefly before sending the next message

This ensures campaign control and tracking reliability.


Requirements   

Before starting, make sure you have:

  • An n8n account

  • A WOZTELL account with WhatsApp channel configured

  • An approved WhatsApp template in WOZTELL

  • Google Sheets access or a properly formatted CSV file

Your WhatsApp Business Platform must already be connected inside WOZTELL.


Workflow Overview  

This template includes two possible entry points:

  1. Manual execution using Google Sheets

  2. CSV upload using n8n Form trigger

Both follow the same logic after contact retrieval.


Option A: Send from Google Sheets   

Step 1: Start the Workflow Manually   

Click “Execute workflow” in n8n. This triggers the bulk sending process.


Step 2: Retrieve Unsent Contacts from Google Sheets   

The Google Sheets node reads rows where the “Sent” column is empty. Only contacts that have not been processed will be selected. This prevents duplicate sending.

Set up Google Sheets credentials following the official n8n documentation.

Make a copy of this sample sheet template, or make sure your sheet includes:

  • Phone number column

  • Name column

  • Sent column

Phone numbers must include country code without symbols.


Step 3: Loop Through Contacts   

The Split In Batches node processes contacts one by one. Nothing needs to be set up here.


Step 4: Map Fields for WhatsApp Sending   

The “Edit Fields” node prepares the required fields for template sending.

It extracts:

  • Phone number

  • Name

  • Row number

These values will be mapped into WhatsApp template variables. Nothing needs to be set up here.


Step 5: Send WhatsApp Template Message   

You must:

  1. Connect your WOZTELL credentials. To generate the access token, follow the step-by-step guide here.

Generate an access token with these permissions:

  • channel:getBasicInfo

  • bot:sendResponses

  • channel:getEnvironmentInfo

  • channel:getDetails

For the WOZTELL Channel API field, follow this guide to create a new token. If you have already generated a token, you may reuse it.

  1. Select your WhatsApp channel

  2. Select an approved template

  3. Map sheet columns into template variables


Step 6: Update Delivery Status in Google Sheets   

After sending, the workflow updates the sheet.

The “Sent” column is marked as:

  • success

  • failed

This allows:

  • Campaign tracking

  • Delivery auditing

  • Prevention of duplicate sending

Since you configured the credentials before, all you need to do now is choose the right credential to connect with.


Step 7: Add Delay Between Messages  

The Wait node pauses briefly before processing the next contact.

This helps to avoid rate limits and maintain WhatsApp quality rating

You can adjust the delay duration as needed.


 Option B: Send from CSV Upload   

Instead of Google Sheets, you can upload a CSV file.


Step 1: Upload CSV File   

The Form Trigger node allows uploading a CSV file containing contact details.

Make a copy of this sample csv template, or make sure your file includes:

  • Phone number column

  • Name column


Step 2: Extract Contact Data   

The “Extract from File” node converts CSV rows into structured data items.

Each row becomes one contact for processing.

After extraction, the workflow follows the same loop and sending logic as the Google Sheets version.


Customization Ideas   

This template is intentionally modular. You can extend it in many directions.

  • Replace the CSV source with other supported inputs such as n8n Form upload, Google Sheets, OneDrive, or Zoho Sheet

  • Adjust the field mapping logic or add code nodes to match your data schema

  • Send messages through different WOZTELL channels or multiple sender numbers based on routing rules

  • Add opt in validation before sending

  • Schedule automatic campaign execution instead of manual trigger

  • Add campaign tags or tracking columns