How to send personalised WhatsApp messages in bulk (mail merge guide)

Last updated: 12 October 2026

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.

Store the phone column as text. Spreadsheets love to help by turning long digit strings into numbers or scientific notation, which silently destroys the last digits. Format the column as text before you paste, and keep the leading + 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.

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.