How to send WhatsApp messages from Excel or CSV (no API needed)
This guide covers the whole workflow: turning spreadsheet numbers into a clean, importable format, loading the list into a Chrome extension that drives your own WhatsApp Web session, personalising each message, and keeping a record of what went out. No developer, server or Meta business account required.
The problem: Excel has your contacts, WhatsApp Web has no import button
Most small businesses and community organisers already keep their people in a spreadsheet: a column of names, a column of phone numbers, maybe a column for the last order date. That works perfectly until you need to actually message them. WhatsApp Web has no "upload CSV" button, and there is no way to select forty cells and have them appear as forty chats. The interface is built for one conversation at a time, which is exactly why copy-paste breaks down: at twenty messages it is exhausting, and at a few hundred it is not possible to do reliably by hand.
The good news is that the data you already have is 90% of the work. The remaining 10% is a formatting problem, and formatting is something you can fix in a few minutes. Everything in this guide is built on a single idea: your browser is already signed into WhatsApp Web, so a tool that types into that tab can send your spreadsheet for you, one conversation at a time, in the order you decide.
Your two real options
There are two credible ways to send WhatsApp messages from a list, and each solves a different problem.
| Criterion | WhatsApp Business API | Chrome extension on WhatsApp Web |
|---|---|---|
| Approval required | Yes — Meta business verification and a reviewed phone number | No — nothing to apply for |
| Cost model | Billed per conversation, plus provider fees | Flat plan, or free tier with a daily limit |
| Setup effort | Days to weeks; needs a provider or developer | Minutes; install and open a tab |
| Message templates | Must be pre-approved before sending outside a 24-hour window | Free text, written per campaign; no approval queue |
| Best fit | A verified business with a support desk and high, ongoing volume | An individual or small team messaging a personal list |
Option A — WhatsApp Business API (brief, honest)
The Business API is the official, supported way to send at scale. It is the right answer for a company running an order-notification system or a customer-support line, and it gives you delivery receipts, verified business status and a throughput ceiling a browser tab will never match. The trade-off is the paperwork. You need to verify the business with Meta, register a phone number that is not already on the consumer app, and get most message types approved as templates before sending them to anyone who has not messaged you in the last 24 hours. Pricing is metered per conversation rather than per month, so a burst of activity can cost more than a flat subscription. If your list is a few dozen friends, customers or volunteers, this is a heavy machine for a light job.
Option B — Send from a Chrome extension on WhatsApp Web
This is the route most spreadsheet owners actually want. You stay inside the WhatsApp account you already have: nothing is re-registered, no number is ported, and your chat history is untouched. The extension just automates the click-and-type work you would otherwise do by hand.
Step 1 — Put your numbers in a spreadsheet (one number per row)
Start with one row per recipient, nothing else: no merged cells, no multiple number columns, no blank rows in the middle. Keep a separate column for the first name if you plan to personalise, because that column feeds the {人名} placeholder. Write every number in the international format described further down — country code first, digits only, no plus sign, no spaces, no brackets. Then save the sheet as CSV UTF-8; a plain "CSV" export from some tools mangles accented names and emoji.
...9123 quietly becomes 4.48E+11. Format the phone column as Text before pasting. Once a row is truncated, the only safe fix is to retype it.Step 2 — Install the extension and open web.whatsapp.com signed in
Install the tool from the Chrome Web Store, then open web.whatsapp.com in the same browser and sign in (scan the QR code with your phone on a new machine). Leave that tab open — it is the account the extension sends from. Pin the extension icon to your toolbar. If the tab is logged out, locked or still loading, the extension has nothing to type into.
Step 3 — Import the CSV
Open the extension, choose the import option and point it at your CSV. CSV import is a Pro / Business feature — the Free plan is text sending only. The tool reads the file locally in your browser and builds a contact list, which you can save as a named group so you never re-upload the same audience. Check the count it reports against your spreadsheet before going further — if the two disagree, you usually have a blank row or a header line the importer treated as data.
Step 4 — Write the message and add {人名} placeholders
Type the message once. Wherever you want the recipient's own name, insert the {人名} placeholder and the extension swaps in the matching value for each recipient; the same works for other columns you prepared. This small feature changes the feel of a message completely: "Hi Sarah, your order is ready" reads as a real message, while "Dear customer" reads as a mailshot. You can also attach an image with a caption if you are sending a flyer, price list or invitation.
Step 5 — Set the send interval and your daily cap, then press Start
Before starting, set a random send interval rather than a fixed one, so the gaps vary instead of ticking like a metronome. Use the delayed-send option if you want the batch to begin later. Your plan applies a daily quota — on the Free tier that ceiling is twenty text messages a day — and the tool stops when you reach it. Press Start. You can pause, resume or stop at any point, which is useful for reviewing the first few sends before committing to the rest.
Step 6 — Watch the batch and export the delivery report
Watch the first handful of messages closely. If several fail in a row, stop and check those number formats rather than letting the whole batch burn through. When the run finishes, export the delivery report as a CSV — it shows which numbers sent and which did not, so the next campaign starts from a cleaned list instead of the same broken rows.
Formatting your number list correctly
Nearly every failed send traces back to the number format, so it is worth getting this right before you import anything. WhatsApp expects the international format without punctuation.
| What people type | Why it fails | What to use instead |
|---|---|---|
+44 7700 900123 |
The plus sign and spaces are not digits; some tools treat the leading + as literal text |
447700900123 |
07700 900123 |
National format. The leading 0 is a dialling prefix, not part of the number |
447700900123 |
0044 7700 900123 |
The 00 international dialling prefix duplicates the country code |
447700900123 |
(555) 123-4567 |
Brackets and dashes, and the US country code is missing entirely | 15551234567 |
4.48E+11 |
Your spreadsheet converted the number to scientific notation and lost the last digits | Store as text: 448001234567 |
12345 |
Far too short to be a real number — a truncated or mistyped entry | Verify against your source before importing |
The rule of thumb: country code, then the subscriber number, digits only. Drop the national trunk prefix — the 0 at the start of UK, German and many other national numbers — because it is only used for dialling inside that country. A few countries are exceptions where a leading zero is genuinely part of the number, so if you are unsure about one, check a known-good contact first. A quick whole-file test is to send it to your own number: if the placeholder and the formatting both look right in your own chat, the file is sound.
Personalising every message with placeholders
Placeholders are what separate a message that gets read from one that gets reported. The {人名} token pulls the contact's name from the column you imported, so a single stored template produces a slightly different message for every person on the list. Three habits make this work well. Put the placeholder somewhere it belongs grammatically — "Hi {人名}," reads naturally, while a name jammed into the middle of a sentence can look machine-generated. Do not let the placeholder be the only variable content: if the whole message is otherwise identical for two hundred people, the personalisation is cosmetic and the repetition is still obvious. And add something genuinely specific where you can — an order reference, a date, an event — because that detail proves a human meant to write to this person.
Where a name column is missing or empty, decide in advance what should appear so you never send "Hi ," to half your list. Run a small test batch, check the output, then send the full list; that is far cheaper than apologising afterwards.
Custom parameter messages: let the spreadsheet fill in every variable
A single {人名} token is only the beginning. Once your contacts live in a spreadsheet, every other column you already maintain — company, appointment date, order number, outstanding balance, the branch they visit — can fill a variable too. WA Auto Sender Studio does this with a parameter table: import a CSV whose first row holds your column names, with one column carrying the phone number, and each remaining column becomes a variable. Write {人名} or {日期} in the message and every recipient receives their own value at send time. That is what we call a custom parameter message, and it is the difference between a template that reads as a broadcast and one that reads as a note written for that person.
In practice the workflow is short: save your sheet as CSV UTF-8, open the extension's manager page, import the file, and pick the recipients straight from the parsed table (you can select all or tick individual rows). Push the selection and the numbers plus their parameters land on the send page together. Set the send interval, write the message with its {欄名} variables, and review the first few output lines before letting the batch run. Parameter tables are saved locally, so next month's campaign can reuse the same table without re-importing the spreadsheet — you only re-import when the data actually changes. Custom parameter messages are part of the Pro and Business plans.
Frequently asked questions
Can I send WhatsApp messages straight from Excel?
Not directly. Excel has no connector to your personal WhatsApp account and WhatsApp Web has no file import button. The practical route is to save your sheet as a CSV UTF-8 file, then load that file into a tool that types into the WhatsApp Web tab you are already signed into.
Is sending from a spreadsheet against WhatsApp's rules?
WhatsApp's Terms of Service prohibit bulk or automated messaging that is unwanted. Sending a spreadsheet you own to people who have asked to hear from you is a different activity from blasting a purchased list. Read the terms at whatsapp.com/legal/terms-of-service and keep your list permission-based.
Do I need the WhatsApp Business API to send from Excel?
No. The Business API is built for verified businesses that want an official channel and are willing to complete Meta business verification and use pre-approved message templates. For small, personal lists, a Chrome extension that drives the WhatsApp Web tab you are already using is a lighter alternative.
What are custom parameter messages?
Messages where each recipient's own data fills the variables, not just their name. Import a parameter table (a CSV whose first row is your column names, with one column holding the phone number) and every other column becomes a variable you can drop into the message as {欄名} — company, date, order reference, anything you keep in the sheet. At send time each recipient gets their own values, and the table can be saved and reused for the next campaign.
What file formats can I import?
CSV saved as UTF-8 is the safest format because it survives accents, non-Latin characters and emoji. A plain .csv or .txt with one number per line both work. Always save phone numbers as text so your spreadsheet does not turn them into scientific notation. Note that importing a file is a Pro / Business feature; the Free plan sends text messages you enter yourself.
Send your spreadsheet without the copy-paste
Import your CSV, personalise every message and watch the batch run from the WhatsApp Web tab you are already signed into. CSV import is part of Pro and Business — start on the free tier for text sending and upgrade whenever you need more.
WA Auto Sender Studio is an independent tool and is not affiliated with, endorsed by, or certified by WhatsApp LLC or Meta.