How to send personalised WhatsApp messages in bulk (mail merge guide)
A mail merge is not a special feature you have to buy — it is just a spreadsheet with one column per value and a message with placeholders. This guide shows you exactly how to structure the sheet, how the placeholders resolve, the mistakes that break a merge, and how to preview every recipient's version before you send a single message. No API and no developer.
"Personalised" vs "spammy": the line that matters
The word personalisation gets used to mean two very different things, and only one of them helps you.
Real personalisation uses a fact you already hold about the recipient — their name, their company, an order reference, an appointment date — and places it where it improves the message. The recipient sees something true and specific, and the message reads as though a person wrote it for them.
Fake familiarity is when a message sounds personal but carries no real information: "Hi friend, I noticed you might be interested in…". Adding a first name to a message that is otherwise identical for five hundred strangers does not make it personal; it makes it a mailshot with a name slot.
| Signal | Reads as personal | Reads as spam |
|---|---|---|
| Source of the detail | Data you legitimately hold about this person | Invented or generic claims ("as we discussed") |
| Rest of the message | Content relevant only to that recipient or group | Identical text for everyone except the name |
| Expectation | The person opted in or has done business with you | Cold outreach from a list they never joined |
Keep that table in mind as you build the merge. The mechanics below make messages accurate; they cannot make an audience willing.
How to structure your spreadsheet
The spreadsheet is the whole merge. Get it right and the sending is easy.
- Header row required. The first row holds your column names —
name,phone,company,date. The importer treats this row as labels, and every placeholder is matched to a column name, so the header is not optional. - One column per variable. Do not pack "Ava Thompson, Northwind Co" into a single cell. If you want to greet a person and mention their company, that is two columns and two placeholders.
- One column for the phone number, in international format. Country code first, then the subscriber number, with no national trunk prefix. Keep it in its own column so the tool knows where the numbers are.
- One row per recipient, no blank rows in the middle. A blank row is read as a contact with missing values, which is exactly the situation that produces a broken merge.
- Save as CSV UTF-8. A plain export can mangle accented names and other non-Latin characters. UTF-8 is the safe choice.
+ as part of the stored value if your sheet needs it there.How placeholders work
A placeholder is a token in your message that stands in for a column value. Write one message, and at send time each token is replaced with that recipient's value from the matching column.
| Placeholder | Reads from column | Fills in with |
|---|---|---|
{name} |
name |
The recipient's first name |
{company} |
company |
Their business name |
{date} |
date |
An appointment or delivery date you are tracking |
You are not limited to these three. Any column you add becomes a variable you can call on, so {week}, {dietary}, {trainer} or whatever your list actually tracks will all work, provided the column name matches the token. That is what turns a template into a custom message: the spreadsheet supplies every variable, and each recipient receives their own version at send time.
A worked example
Here is a small US-style demo list. The header row names the columns; each row is one recipient.
| name | phone | company | date |
|---|---|---|---|
| Ava Thompson | +12025550101 |
Northwind Co | 14 October |
| Daniel Reyes | +12025550102 |
Harborview Studio | 15 October |
| Mia Carter | +12025550103 |
Maple Retail | 16 October |
Write this template once:
Hi {name}, your delivery to {company} is booked for {date}. Reply here if you need to change it.
And each recipient receives their own version:
| Recipient | What lands in their chat |
|---|---|
| Ava Thompson | Hi Ava, your delivery to Northwind Co is booked for 14 October. Reply here if you need to change it. |
| Daniel Reyes | Hi Daniel, your delivery to Harborview Studio is booked for 15 October. Reply here if you need to change it. |
| Mia Carter | Hi Mia, your delivery to Maple Retail is booked for 16 October. Reply here if you need to change it. |
One template, three different messages, and every one of them is factually correct for that person. That is the entire value of a merge, and it takes a few minutes to set up. The same pattern scales to dozens or hundreds of rows. Note that the numbers above are stored with the leading + for readability; if your sending tool expects digits only, normalise the column to 12025550101 before importing.
What breaks a merge
Merge failures are almost always data problems, not tool problems. These are the ones that catch people out.
| What goes wrong | What you see | How to prevent it |
|---|---|---|
| Missing values in a column | "Hi ," or a yawning gap where the company should be | Fill every cell or set a fallback word before sending |
| Number without a country code | The row fails to send, or goes to the wrong person | Store every number in international format |
| Column renamed mid-campaign | The placeholder appears literally as {company} in the message |
Freeze the header row; if you rename, update the template too |
| Split phone numbers | Only some rows send | Keep one number per cell and one cell per number |
| Extra blank rows | The reported contact count is higher than your list | Delete trailing empty rows before saving the CSV |
Preview the merge before you send
You would not print a hundred letters without checking one, and the message you are about to send hundreds of times deserves the same. The free WhatsApp Message Personaliser does exactly this one job: paste your template and a few sample rows and it shows you the finished message each person would receive. It is the cheapest possible way to catch an empty column, a mistyped placeholder or a number that is going to fail — before any message leaves your account.
Run the preview, fix anything that looks wrong, then import the same data into the sender and run a small test batch to your own number. Checking the merge is a two-minute habit that saves a very awkward follow-up email.
Writing the message so the merge reads naturally
The final step is the writing, and a good merge field can still be dropped in badly.
- Put the placeholder where it belongs grammatically. "Hi
{name}," flows; a name jammed into the middle of a sentence often does not. - Do not let the placeholder be the only variable content. If everything except the name is identical for hundreds of people, the sameness is still obvious. Add a genuinely specific detail where you have one.
- Plan for the fallback. Decide what should appear when a column is empty, so you never send "Hi ," to half your list.
- Keep it short and human. A WhatsApp message is read on a phone; two or three sentences that say one useful thing beat a wall of text.
- Skip the pressure. Phrases that manufacture urgency or read like an unsolicited advert are what provoke a report. Write the way you would message someone you know.
If you are still shaping the wording, our message templates guide covers structures that work for reminders, updates and follow-ups, and the bulk sending limits guide explains the pacing and consent habits that keep a personalised campaign on the right side of WhatsApp's rules.
Frequently asked questions
How do I personalise every message without sending them one by one?
Keep your recipients in a spreadsheet with one row per person and one column per value you want to insert. Write the message once with placeholders such as {name} or {company}, then let a bulk sender substitute each person's values at send time. You compose a single message; every recipient receives their own version.
What phone number format should the spreadsheet use?
International format: the country code followed by the subscriber number, with no national trunk prefix. Storing the number as text keeps a leading zero or a plus sign from being eaten by your spreadsheet. Normalise numbers to digits only before importing if the tool expects that. Our Excel and CSV guide covers the format errors that cause the most failures.
Can I preview the merged messages before sending?
Yes, and you should. The free WhatsApp Message Personaliser lets you paste your template and sample rows and see exactly what each recipient would receive, so a broken placeholder or an empty column is caught before anything is sent.
Is personalised bulk messaging considered spam?
Personalisation does not turn an unwanted message into a wanted one. What makes a message acceptable is that the recipient expects to hear from you and that the content is relevant to them. Merge fields from data you already hold improve a legitimate message; they do not make an unsolicited list legitimate.
Write once, personalise for everyone
Import your spreadsheet, drop in {name}-style placeholders and let WhatsApp Auto Sender Studio send each recipient their own message from the WhatsApp Web session you are already signed into. Start free.
WhatsApp Auto Sender Studio is an independent tool and is not affiliated with, endorsed by, or certified by WhatsApp LLC or Meta.