🔌 Integrations

How to Send WhatsApp Messages from Google Sheets

Install the ConvoFly add-on and send WhatsApp messages straight from a spreadsheet — manually, on edit, or when a Google Form adds a row.

The ConvoFly WhatsApp Sender for Google Sheets is a free add-on that sends WhatsApp messages to the phone numbers in your spreadsheet — either when you click a button, when you edit a cell, or automatically when a new row arrives from a Google Form. It sends through your own ConvoFly WhatsApp Business account, using the columns in each row to personalise the message. You do not write any code.

In plain terms: a Google Sheet becomes your send list, and each row becomes one WhatsApp message. If your sheet has a phone number and a customer name, the add-on can message every one of those customers a personalised, WhatsApp-approved template in a few clicks. This guide walks through installing it, connecting it to ConvoFly, sending your first message, and turning on automation — plus the WhatsApp rules that decide what you're allowed to send.

What you need before you start

Three things, all of which take a few minutes to set up if you don't have them yet:

Step 1: Install the add-on and connect your account

The add-on lives inside Google Sheets, so it installs once and then appears in every sheet you own.

  1. Open ConvoFly → Settings → Integrations and click Install the Google Sheets add-on. (During the current pilot the install is by invite — the same page shows how to request the link.)
  2. Open the Google Sheet you want to send from.
  3. In the sheet's menu, go to Extensions → ConvoFly WhatsApp Sender → Setup. A panel opens on the right.
  4. Back in ConvoFly, open Settings → API Access, copy your API key (it starts with lk_), and paste it into the add-on's API Key box.
  5. Click Test connection. A green tick confirms the key works and shows your account number.

Your API key is the single credential that links the sheet to your account. Keep it private — anyone with it can send from your number. You can rotate it any time in Settings → API Access, which instantly disconnects the old key.

Step 2: Pick a template and map your columns

This is the step that turns a row of cells into a message.

  1. In the Setup panel, click Load my templates. The dropdown fills with the templates already approved on your ConvoFly account.
  2. Choose a template. If its text contains placeholders like Hi {{1}}, your order {{2}} shipped, the panel shows one slot per placeholder.
  3. Map each placeholder to a column — for example {{1}} → Name and {{2}} → Order.
  4. Choose your Phone number column.
  5. Click Save.

The same idea powers ConvoFly broadcasts; if you've used variables to personalise broadcasts, the column mapping will feel familiar.

A tip about phone numbers in spreadsheets

Google Sheets sometimes stores a long number like 923001234567 in scientific notation (9.23E+11), which is not a valid phone number. Format your phone column as Plain text (Format → Number → Plain text) before pasting numbers. The add-on rejects a cell it can't read as digits and writes a clear warning in the status column rather than sending to a broken number.

Step 3: Send your first messages

Select the rows you want to message (skip the header row), then in the menu choose ConvoFly WhatsApp Sender → Send to selected rows. For every row the add-on adds a ConvoFly Status column and writes the result — Sent ✓ with a timestamp, or the exact error if something blocked it. A row already marked Sent is skipped, so re-running never double-messages anyone.

Step 4: Automate — send without clicking

Manual sending is fine for a one-off list. For ongoing use, the add-on can send by itself. In the Setup panel, under When to send, choose one of three triggers:

TriggerFires when…Best for
ManualYou click "Send to selected rows"One-off lists you review first
When a cell is editedSomeone changes a chosen column (e.g. Status → "Shipped")Order/status updates typed into the sheet
When a new row is addedA row appears — including from a Google Form — checked every 5 minutesForm responses, or rows added by another tool/API

The third mode matters because Google's live edit trigger does not fire for rows added by a Google Form or by an external tool. To catch those, the add-on checks for new rows every 5 minutes and remembers where it left off, so a Form submission reliably triggers a WhatsApp message a few minutes later. You can also add a condition — for example, only send when the Status column equals Paid — so unrelated edits don't fire a message.

Templates vs free text: what you're allowed to send

WhatsApp draws a hard line between the two, and it decides which the add-on can use. A template is a pre-approved message you can send at any time. Free text is an ordinary typed message that WhatsApp only allows inside an open 24-hour customer service window — the 24 hours after a customer last messaged you. Outside that window, WhatsApp rejects free text, so you must use a template. This is Meta's rule, not ConvoFly's; see the WhatsApp messaging documentation.

TemplateFree text
When it can be sentAny timeOnly within 24 hours of the customer's last message
Needs Meta approvalYes, once per templateNo
Length limitSet by the templateUp to 4,096 characters
Good forOrder updates, reminders, offers, cold outreachReplying in an active conversation

The add-on supports both. Choose Approved template for the vast majority of use cases — it's the only option that works for a fresh list where nobody has messaged you first. Choose Free text only when you know the recipients are inside the 24-hour window; if they aren't, the add-on writes outside 24h window — use a template in the status column instead of failing silently. For more on windows and sending limits, see WhatsApp messaging limits and tier caps.

Staying compliant: opt-outs, consent and quality

Sending WhatsApp at scale comes with rules that protect your number's ability to send at all. Three things to keep in mind:

What it costs

The add-on itself is free. You pay for WhatsApp conversations the same way you would for any other send from ConvoFly — WhatsApp's own per-conversation pricing, which varies by country and by whether the conversation is marketing, utility or authentication. The add-on does not add a per-message fee on top. For a breakdown of how WhatsApp conversation pricing works, see how much a WhatsApp broadcast costs and Meta's pricing documentation.

Troubleshooting common problems

The message column shows "phone has no usable digits"

The phone cell is stored as a number in scientific notation. Format the column as Plain text and re-enter the number with its country code, e.g. 923001234567.

Free text shows "outside 24h window"

The recipient hasn't messaged you in the last 24 hours, so WhatsApp won't accept free text. Switch that send to an approved template.

A Google Form response didn't send

New-row automation checks every 5 minutes, so allow a few minutes. Also confirm you enabled the When a new row is added trigger (not the edit trigger) and clicked Enable automation.

"Test connection" fails

Re-copy your lk_ key from Settings → API Access — if you rotated it, the old key stops working immediately.

How this differs from broadcasting from a sheet inside ConvoFly

ConvoFly can also read a Google Sheet as a broadcast audience from inside the app — see broadcasting from a Google Sheet. Use that when you want ConvoFly's full campaign tools (scheduling, analytics, retries). Use this add-on when you'd rather stay in the spreadsheet and fire messages as the data changes — for example, a fulfilment team that lives in Sheets and wants a WhatsApp to go out the moment they mark an order shipped.

Frequently asked questions

Can I send WhatsApp automatically when a Google Form is submitted?

Yes. Choose the 'When a new row is added' trigger. Because Google's live edit trigger doesn't fire for Form responses, the add-on checks for new rows every 5 minutes and sends for each one, so a Form submission triggers a WhatsApp a few minutes later.

Do I need approved templates, or can I send any text?

To message someone who hasn't contacted you in the last 24 hours you must use a Meta-approved template. Free text is only allowed inside the 24-hour customer service window. The add-on supports both and tells you when a free-text send is outside the window.

Will it message someone twice if I run it again?

No. The add-on writes a 'Sent ✓' marker in a status column for each row and skips any row already marked as sent.

Does it respect opt-outs?

Yes, by default. If a contact replied STOP and carries ConvoFly's opt-out tag, the add-on skips them and records 'recipient opted out' in the status column.