Skip to content

Personalise bulk WhatsApp messages with names from a sheet

Personalise bulk WhatsApp messages by mapping sheet columns to placeholders, one message per row. How it works, examples, and the mistakes to catch first.

Written by
By WavesFlo team
Published
Published
Reading time
6 min read

To personalise a bulk WhatsApp message, keep one recipient per row in a sheet, give each column a plain header such as first_name or due_date, and write the message with matching placeholders. The tool then builds one message per row, swapping each placeholder for that row's value. Fix blank cells and odd names before anything is sent.

Tools call these placeholders merge fields, variables or tags, and mark them differently: Gmail's mail merge uses @firstname, and many messaging tools use double braces, such as {{first_name}}. The idea is the same everywhere. This guide covers why it's worth doing, how columns map to placeholders, examples for Indian businesses, and the mistakes that turn "Hi Priya" into "Hi ,".

Why personalise bulk WhatsApp messages?

Because WhatsApp is built around messages people expect, and it listens to the people who didn't. Its Business Messaging Policy says users should expect the messages they receive, and that unsolicited ones lead people to block a business. It also says WhatsApp may limit how many messages a business can send, based on blocks and reports. People can tap Not interested on business offers, and when they block a business they can say why, for example that they never signed up.

A message that uses the name someone gave you, and the thing they asked about, reads as the next step in a conversation they started. The same words blasted to a whole list are easier to ignore, mute or report. Personalisation isn't permission, though: it only helps with people who agreed to hear from you.

How does a sheet column become a placeholder?

Mail merge works the same way in most tools. The first row of the sheet holds the column headers, and every row below is one recipient. Each placeholder in the message names a header, and for each row the tool swaps the placeholder for the value in that column. Gmail's help centre describes its own mail merge exactly so: the merge tags come from your spreadsheet's column headers.

phone,first_name,course,batch_start,first_instalment
+919876543210,Ananya,JEE 2027 weekend batch,12 October,"₹18,000"
+919876543211,Rohan,NEET 2027 evening batch,19 October,"₹21,500"
The sheet: a header row and two recipients
Hi {{first_name}}, your seat in the {{course}} is confirmed. Classes start on {{batch_start}}, and the first instalment of {{first_instalment}} is due a week before. Reply here with any questions.
The message, with placeholders
Hi Ananya, your seat in the JEE 2027 weekend batch is confirmed. Classes start on 12 October, and the first instalment of ₹18,000 is due a week before. Reply here with any questions.
What Ananya receives
  • Headers are names, not sentences. Keep them short, unique and plain, such as first_name or due_date, without spaces or punctuation your tool might reject. Check what your tool accepts: Gmail, for one, gives a named tag only to headers made of letters and numbers and refers to any other column, first_name included, by its position.
  • One row, one person. Don't merge cells or squeeze two people into a row; every placeholder must find exactly one value.
  • A placeholder copies the cell exactly, capitals, spaces and all, so fix the data rather than the message.

What can you personalise besides the name?

Useful columns for personalised WhatsApp messages
ColumnExample valueUse it for
first_nameAnanyaThe greeting. First name only; a full name reads like a form.
enquiry2BHK in Wakad, PuneShowing you remember what they asked about
due_date10 OctoberFee, rent or EMI reminders, with the date written out
amount₹4,500Quotes and reminders, typed as text so the ₹ sign and commas survive
invoice_noINV-2026-0412GST invoice reminders a customer can match to their records
agentRahulSaying who will follow up
linkA brochure or payment pageSomething specific to that person

Leave out anything sensitive. WhatsApp's business policy says not to share, or ask people to share, full payment card numbers, financial account numbers or ID card numbers, so an Aadhaar or account number never belongs in a placeholder.

Examples of personalised WhatsApp messages

Hi {{first_name}}, this is {{agent}} from Sunrise Realty. Your visit to the {{project}} sample flat is on {{visit_date}} at {{visit_time}}. The site office is beside the main gate; call me on this number if you're running late.
Site visit reminder for a property enquiry
Hello {{first_name}}, thank you for your IndiaMART enquiry about {{product}}. For {{quantity}}, the price is {{price}} plus GST, delivered to {{city}}. Shall I send a formal quotation?
Reply to an IndiaMART enquiry
Hi {{first_name}}, a gentle reminder that invoice {{invoice_no}} for {{amount}} was due on {{due_date}}. If it's already paid, thank you, and please ignore this. If not, the UPI and bank details are on the invoice.
Invoice reminder

Each names something only that person would recognise. Read a few filled-in messages aloud: if one sounds odd spoken, it will read oddly too. For the follow-up side of these, see real estate follow-up messages and IndiaMART leads on WhatsApp; the WhatsApp text formatter previews bold and lists before you paste.

Common mistakes, and how to catch them

Personalisation mistakes, what the customer sees, and the fix
MistakeWhat the customer seesFix
Blank cell"Hi ," or a stray placeholderCount blanks with Google Sheets' COUNTBLANK, fill them, or set a fallback word such as "there"
Names in capitals or with titles"Hi MR. A. SHARMA"Keep a separate first_name column; PROPER fixes capitals, but check names it gets wrong, such as McLeod
A company in the name column"Hi Sharma Traders Pvt Ltd"Put the contact person's first name in its own column
Extra spaces"Hi Ananya" with a double spaceTRIM removes leading, trailing and repeated spaces; non-breaking spaces pasted from websites need replacing separately
Sorting one column on its ownAnanya's fee sent to RohanAlways sort the whole table, never a single column
Numbers stored as numbersA phone number shown as 9.19877E+11, or a lost leading zeroFormat phone and ID columns as text before typing or importing
Stale valuesLast month's due dateRefresh the sheet before every send
Duplicate rowsTwo copies of the same messageRemove duplicate phone numbers first

Excel is the usual culprit with numbers: Microsoft notes that it drops leading zeros and shows long numbers, phone numbers included, in scientific notation unless the cells are formatted as text. Then run the same checks before every send:

  1. Count blanks in every column the message uses, not just the name column. A blank due date is as visible as a blank name.
  2. Check the phone column: every number with its country code, 91 for India, and none turned into scientific notation.
  3. Preview five real rows, including the longest name, the shortest and the oddest, and read each filled-in message as the customer would.
  4. Send a test to your own phone, and look at it on a small screen.
  5. Note the date of the data. If the sheet is more than a day old for anything with a due date or a price, refresh it first.

How do you send personalised WhatsApp messages at scale?

A WavesFlo campaign sends one personalised message to each person on a contact list imported from a CSV, filled in from that person's row. It can run once, on a schedule or on a recurring schedule, with quiet hours, an optional approval step and the opt-out register checked at the moment of sending. Results come back per message from delivery receipts. Keep names and phone numbers in that import, not in a Google Sheet shared by link: Google Sheets to WhatsApp explains why a sheet should hold offers instead.

Illustration

Two limits apply whichever tool you use. A group post is one message that every member sees, so personal details belong in one-to-one messages, not group posts. And a placeholder can't make an unexpected message welcome: send only to people who gave you their number and agreed to hear from you.

If you want evidence for your own customers rather than anyone's averages, split a list in two, send each half a version, and compare replies over the following days. Compare replies rather than reads: recipients can switch read receipts off, so a read rate is a floor, as campaign metrics explains.

Questions

How do I add a customer's name to a bulk WhatsApp message?

Put each customer on their own row in a sheet with a first_name column, write the message with a placeholder such as {{first_name}} where the name goes, and send it with a tool that builds one message per row. Check the name column for blanks first.

What happens if a name cell is empty in a mail merge?

It depends on the tool. Some stop with an error, as Gmail's mail merge does, and ask for a default value; others send the message with a gap, such as "Hi ,". Fill the blanks or set a fallback word such as "there" before you send.

Can I personalise a message to a WhatsApp group?

Not per member. A group post is one message that every member sees, so it can only carry details that apply to the whole group. Send personal details in one-to-one messages instead.

Does personalising messages stop my WhatsApp number being restricted?

No. Relevant messages help, but WhatsApp may limit businesses based on blocks and reports, and bans accounts that send unwanted automated messages. Consent, honoured opt-outs and a sensible pace matter more than names.

Can I personalise WhatsApp messages from Excel?

Yes, with a tool that reads the workbook or a CSV saved from it. Format phone and ID columns as text first, because Excel drops leading zeros and shows long numbers in scientific notation.

Sources

Keep reading

See it on your own numbers.