Google Sheets + n8n
Send WhatsApp from Google Sheets with n8n in South Africa
Automate WhatsApp messages from Google Sheets with n8n in South Africa, including validation, delivery logs and Wafly sending.
Direct answer
Google Sheets works as a simple queue when volume is modest and a team needs to edit data without another system. n8n should select only approved rows, validate the phone, send the message and write the result idempotently.
A spreadsheet can drive consented operational alerts and follow-ups. n8n reads pending rows, validates each phone number, calls Wafly and records the result to prevent duplicate sends.
What you can automate
- Process only new or approved rows
- Normalise phone numbers with the country code
- Store the time, status and identifier of each send
Before you start
- phone, message, consent and status columns
- A Google Sheets credential in n8n
- A connected Wafly instance
- A unique identifier for every row
A production-ready approach
Use the sheet as input, not memory
A sheet can control what is sent, but conversation history should move to a CRM or database as the workflow grows.
Reserve the row before sending
Change status from pending to processing before calling the API. Then write sent or error with messageId so two runs cannot process the same row.
Keep an auditable result
Store time, normalised number, API response and failure reason. This lets you retry only failed rows without contacting the entire list again.
Recommended minimum columns
id | phone | message | consent | status | messageId | sentAt
42 | 27821234567 | Your booking is confirmed | yes | pending | |Production checklist
- Process only consent=yes
- Skip rows that already have a messageId
- Apply a batch limit
- Wait between sends
- Support opt-out and record it
How to build the workflow
- Create columns for phone, message, consent and status.
- Read pending rows with Google Sheets and validate the data in n8n.
- Send through Wafly and update the row only after a successful response.
QR connection, not the official Meta API. Use opt-in contacts and increase volume gradually.
Frequently asked questions
Can I send one row at a time?
Yes. This is the safest way to validate the workflow and handle errors before increasing volume.
How do I prevent duplicate messages?
Use a status column and unique identifier, updating them only after the send is confirmed.
Can I use purchased contact lists?
We do not recommend it. Message opt-in contacts and provide a clear way to opt out.