How to Personalize Bulk SMS: Names, Amounts, Dates, and Merge Fields That Don’t Look Fake
When to use merge fields in Ghana bulk SMS, how to prepare the data, and example templates for fees, appointments, and retail — plus the mistakes that make personalized texts worse than a generic blast.
A generic blast is fine for “we are closed tomorrow.” It is weak for “you owe GHS 450” or “Ama, your 2pm is confirmed.” Personalization is not a gimmick. It is how collections, clinics, and schools get action without a phone tree.
It is also how you accidentally send Hi {first_name} to 3,000 people if the CSV column is empty. This guide is about doing merge fields the unglamorous way: data first, copy second, test third, blast fourth.
What is worth personalizing
Worth it: first name when you have it, amount due, due date, order id, appointment time, class or child’s name for schools. Not worth it: last name, middle name, fake “we miss you {name}!!!” energy on a promo that is really a 10% coupon.
If 40% of rows have no first name, do not merge first name. Use a segment: named vs unnamed. Or use a role: Hi parent, Hi member. Honesty beats a blank token.
Prepare the sheet as if a robot will read it
One row per recipient. Phone required. Merge columns with stable headers: first_name, amount, due_date, student. No “GHS 450.00 “ with a trailing space in some rows and “450” in others if you plan to print the value as-is. Normalize currency in the template (“GHS {amount}”) and keep amount numeric in the file.
Dates should be human in the SMS: 12 Sep, not 2026-09-12T00:00:00Z. Convert in the sheet before import. SplitSMS will substitute what you give it; it will not guess your school’s term calendar.
Templates you can copy
Fees: {school}: Dear parent, {student}’s fees of GHS {amount} are due {due_date}. Pay at the office or MoMo. Ignore if paid. Clinic: {clinic}: Hi {first_name}, reminder — {time} on {date}. Reply 1 to confirm. Retail: {brand}: {first_name}, your code EAST15 is valid till 8pm at East Legon.
Count characters with a real name and a worst-case long name. “Anastasia” should not push you into a second segment unless you accept the cost. The SplitSMS compose preview exists for this.
Preview is not optional
Send three tests: a complete row, a row with only phone, and a row with punctuation in the name (O’Neil, Nyamekye). Read them on a physical phone. If any token leaks as {amount}, stop the campaign.
Then send to a 10-person staff group. Only then the real group. Personalized mistakes feel ruder than generic mistakes because they look targeted.
Segmentation is personalization’s quieter cousin
Often you do not need {first_name}. You need two campaigns: Accra vs Kumasi, paid vs unpaid, members vs visitors. That is still “personal” in the useful sense. Over-merging a bad list is worse than two clean generic texts.
SplitSMS contact groups are how you do this without a CRM. Name groups after the decision, not after the date you imported the file.
Transactional vs promo tone
Fee and appointment SMS should sound like the institution. Promo SMS can be warmer but still short. Do not mix a debt reminder and a pizza coupon in one personalized paragraph. People remember the coupon and forget the debt — or get angry about both.
Privacy
Amounts and student names are sensitive. Do not forward the CSV on WhatsApp. Limit who can export SplitSMS contacts. If a phone is shared in a household, think about what the SMS reveals on the lock screen. Sometimes “fees due” without the amount is enough.
Where the data should live long term
If every send starts from a new Excel export, merge fields will keep breaking. Smart Forms, Google Sheets connect, and the API keep phone + metadata together. CSV is a bridge, not a strategy.
Start with one personalized reminder campaign this week, ten test rows, then scale. SplitSMS trial credits cover the tests. Public pricing is on /pricing.
Unicode, names, and accidental extra segments
A Ghanaian name with a character outside the GSM alphabet, or a single emoji in the template, can switch the whole message to Unicode and cut the segment from 160 characters to 70. That doubles cost for every recipient, not just the one with the special character — depending on how the campaign is encoded.
Keep templates in plain English or carefully tested Twi copy. If you must use native script, accept the segment cost in the estimate before you send. Never add emoji “for warmth” on a 3,000-parent fee reminder.
Legal and reputational lines
Personalized debt SMS should not shame people in a shared household. Avoid “you are a defaulter” language. State the amount and the pay-by date. If a number is a company gate phone, do not merge a child’s name onto it.
Ghana promotional SMS should still offer a stop path. Personalization does not cancel consent rules. See the compliance article on this blog for Sender IDs and opt-outs.
Try SplitSMS free
Send bulk SMS, OTP, and campaigns — 5 free credits on signup.