Upload a spreadsheet, send to every row

Send WhatsApp from Google Sheets and Excel Spreadsheets

Keep your contacts where they already live. Export the sheet to CSV, upload it, map each column to a placeholder in an approved template, and WaBulkSend mail-merges a personalized WhatsApp message to every row on the official Cloud API. No VBA, no browser extension, no copy and paste.

Free for your first 500 messages a month. No card required.

Spreadsheet to WhatsApp

.xlsx · .csv · Sheets
Column maps to
name Hi {{1}}, your order
phone E.164 recipient
order_id #{{2}} is ready
pickup_time for pickup at {{3}}
Upload your list →

Personalized, one message per contact.

Short answer: To send WhatsApp messages from Google Sheets or Excel, export the sheet as a CSV, upload it to a WhatsApp Business API tool, map each spreadsheet column to a placeholder in an approved message template, and send. The platform reads every row and delivers a personalized WhatsApp message to each contact, so a thousand-row sheet becomes a thousand individual messages with the right name and details in each one. You do not need VBA macros, a Chrome extension, or the WhatsApp Web screen open. Those DIY routes automate the consumer app, which WhatsApp's terms prohibit and which gets numbers banned. The compliant path is the official Cloud API, and that is what WaBulkSend runs on.

Last updated July 2026. WaBulkSend is built on Meta's official WhatsApp Cloud API and is not affiliated with Meta Platforms, Inc.

Why send WhatsApp straight from a spreadsheet

Most businesses already keep their contacts in a spreadsheet. Orders sit in a Google Sheet a fulfillment team updates through the day. A CRM export lands as an Excel file. An event signup form drops rows into a sheet in real time. When it is time to message those people, nobody wants to open a chat and type the same thing five hundred times, changing the name each time. Sending from the sheet removes that step entirely.

The idea is a mail merge, the same one you would run for email or a printed letter, pointed at WhatsApp instead. Your spreadsheet holds one contact per row and one field per column: name, phone number, order number, appointment time, whatever the message needs. An approved template holds the wording with numbered placeholders where those fields go. Upload the file, tell the tool which column fills which placeholder, and every row gets its own message.

This is a natural fit for teams that live in spreadsheets. If your workflow starts by pulling records out of a system and into a sheet, sending from that sheet is one fewer place to copy data. It also pairs with the reverse job of getting the replies back out, which is why many teams keep a companion sheet that logs delivery and read status per row.

How to send WhatsApp from a spreadsheet in four steps

The same four steps work whether your list starts in Google Sheets, Excel, or a plain CSV export.

01

Prepare the sheet

Give each contact one row. Put phone numbers in international E.164 format, like +14155550100, and give every field its own column: name, order number, appointment time. Clean headers make the next step painless.

02

Export and upload

From Google Sheets choose File then Download then Comma Separated Values. Excel saves the same way as .csv or you can upload the .xlsx directly. Drag the file into WaBulkSend and it reads your columns.

03

Map columns to a template

Pick an approved template and connect each numbered placeholder to a column. Column name fills {{1}}, order_id fills {{2}}, and so on. A live preview shows how the first few rows will read.

04

Review and send

Check the preview, set a send time now or later, and broadcast. WaBulkSend throttles the send to protect your number and reports delivered, read, and replied per contact so you can push the results back to your sheet.

Map spreadsheet columns to a personalized message

Any column in your sheet can fill a placeholder. Here is a common order-update sheet and the message it produces.

Spreadsheet column Example value Template placeholder
name Dana Hi {{1}},
phone +14155550100 Recipient (not shown in text)
order_id 10482 your order #{{2}}
status shipped has {{3}}
tracking_url usps.com/track Track it here: {{4}}

The recipient in row one receives: "Hi Dana, your order #10482 has shipped. Track it here: usps.com/track." Row two gets their own name and order. One template, one upload, a personalized message per row.

Google Sheets, Excel, or CSV: it all works

The format your list starts in does not matter much, because every spreadsheet tool exports the same clean CSV underneath. From Google Sheets, use File, Download, Comma Separated Values, and you have a file ready to upload. Excel offers Save As with the CSV UTF-8 option, or you can upload the native .xlsx and let the tool read it directly. If your data already comes out of another system as a CSV, skip the export and upload it as is.

One thing to watch across all three is the phone column. Spreadsheets love to strip a leading plus sign or drop a zero, and a number stored as a plain integer loses its country code. Format that column as text and store every number in full international E.164 form, starting with the plus sign and the country calling code. For US contacts that means +1 followed by the ten digit number. Numbers that are not deliverable simply fail, so a few minutes cleaning this column saves a lot of confusion later.

Because the send runs on Meta's servers through the Cloud API, nothing depends on keeping a spreadsheet open or a macro running. You upload once, and the campaign continues even after you close the file. That is the practical difference between this and a VBA script or a browser extension, which only work while your own machine is awake and the WhatsApp Web tab is loaded.

Why not a VBA macro or a Chrome extension?

Search for this task and you will find tutorials that wire Excel to WhatsApp Web with a VBA macro, or a browser extension that clicks Send for you row by row. They look free and they sometimes work for a handful of messages. The problem is what they are doing underneath: automating the WhatsApp consumer app.

WhatsApp's terms of service prohibit exactly this. The acceptable use rules ban "sending illegal or impermissible communications such as bulk messaging, auto-messaging, auto-dialing, and the like," and separately ban reverse engineering or building tools on top of the service without authorization. A macro or extension puppeting WhatsApp Web breaks both. Meta detects the pattern, and the usual outcome is a banned number, which for most businesses is the number customers already know.

The authorized route is the official WhatsApp Business Platform, better known as the Cloud API. It is built for programmatic sending, it uses pre-approved templates so recipients are not spammed, and it keeps your number in good standing. A spreadsheet upload on top of that API gives you the convenience of sending from Excel without the ban risk of faking the app. It is the same engine behind our bulk WhatsApp sender.

What teams send from a spreadsheet

Order and shipping updates

Ecommerce and fulfillment teams keep a live orders sheet and push a "shipped" or "ready for pickup" message to each buyer from the same file.

Appointment reminders

Clinics, salons, and service businesses export the day's bookings and send each client a reminder with their own time and location merged in.

Event and webinar invites

A signup sheet becomes a personalized invite and a same-day reminder, each with the attendee name and their link.

Payment and renewal notices

Finance teams message customers with a balance due or a renewal date pulled straight from an accounts spreadsheet.

Lead follow-up

A sales list exported from the CRM turns into a first-touch message to every new lead, personalized by name and interest.

Customer re-engagement

A segment of past customers in a sheet receives a tailored check-in, sent as an approved template to opted-in contacts.

Sending WhatsApp from a spreadsheet: common questions

How do I send WhatsApp messages from Google Sheets?

Export the sheet as a CSV using File, Download, Comma Separated Values, then upload it to a WhatsApp Business API tool like WaBulkSend. Map each column to a placeholder in an approved template and send. The tool reads every row and delivers one personalized message per contact. You do not need an add-on or a script running inside Sheets.

Can I send bulk WhatsApp messages from Excel?

Yes. Save your Excel list as .csv or upload the .xlsx directly, connect each column to a template placeholder, and broadcast. Every row becomes its own personalized WhatsApp message. Doing this through the official Cloud API keeps your number compliant, unlike a VBA macro that automates WhatsApp Web and risks a ban.

Do I need VBA or code to send WhatsApp from a spreadsheet?

No. VBA macros and browser extensions were the old workaround, and they automate the consumer app in a way WhatsApp prohibits. A hosted tool on the Cloud API replaces all of it: you upload the file, map columns in a visual editor, and send. There is no code to write and nothing to keep running on your computer.

How should phone numbers be formatted in the sheet?

Store every number in international E.164 format: a plus sign, the country code, then the number, with no spaces or dashes. A US number looks like +14155550100. Format the phone column as text so the spreadsheet does not strip the plus sign or a leading zero. Numbers that are not in this format will not deliver.

Can I personalize each message with spreadsheet columns?

Yes, that is the point of the mail merge. Any column can fill a numbered placeholder in the template, so name, order number, appointment time, or balance due all drop into the right spot for each row. Every recipient sees a message written for them, not a generic blast.

Is it against WhatsApp rules to send bulk messages from Excel?

It depends on how you send. Automating WhatsApp Web with a macro or extension breaks WhatsApp's terms and gets numbers banned. Sending the same list through the official WhatsApp Business API with approved templates to opted-in contacts is the sanctioned method. The file is just your contact source; the compliant part is the API underneath.

How many contacts can I upload at once?

A spreadsheet can hold thousands of rows, and the tool sends to all of them. Your real ceiling is your WhatsApp messaging limit, which caps the unique customers you can message in a rolling 24 hours and starts at 250 for new accounts before rising to 2,000, 10,000, 100,000, and then unlimited as your sending quality holds up.

Does the send keep going after I close the spreadsheet?

Yes. Once you upload the file, the campaign runs on Meta's servers through the Cloud API, so it continues whether or not the sheet is open or your computer is on. This is the main advantage over a VBA script or extension, which only run while your machine is awake and WhatsApp Web is loaded.

Turn your spreadsheet into a WhatsApp campaign

Upload your Google Sheets export or Excel file, map the columns, and send a personalized message to every contact on the official Cloud API.

Start Free

Free for your first 500 messages a month. No card required.