The Sailup team · · 12 min read
Bulk SMS for Ghanaian SMEs: 5 Campaigns That Actually Move Sales, With Costs
Five bulk SMS campaigns that work for small businesses in Ghana, with example copy, what to measure, and the cost at ₵0.02 a message. A flash sale to 2,000 customers is ₵40; a term of fee reminders for 600 pupils is about ₵48.
If you run a shop, a school, a clinic, a salon, a church office or a microfinance desk in Ghana, SMS is still the one channel that reaches every customer you have, including the ones on a feature phone and the ones with data switched off. Five campaigns do most of the work: a flash sale or restock alert, appointment reminders, a feedback request after a visit, loyalty balance updates, and a payment reminder sequence. At Sailup's flat ₵0.02 per message, a flash sale to 2,000 customers costs ₵40, and a term's worth of fee reminders for a 600-pupil school costs about ₵48. This post goes through each one with copy, what to measure, and the arithmetic.
Why SMS still works for a small business in Ghana
We are not going to quote you an open-rate statistic, because there is no dependable way to measure whether an SMS was opened. The case for SMS is simpler than that.
- It reaches every handset. NCA figures for Q4 2025 put Ghana at 42.87 million mobile voice subscriptions, with MTN at 72.92%, Telecel at 20.17% and AT at 6.91%. Every one of those is a phone that can receive an SMS. No app has that reach, and no app works with data switched off.
- It arrives under your name. With a registered sender ID, the message shows as
Bliss PharmorSmileClinicon the customer's phone rather than a number they don't recognise. That is the difference between a message that gets read and one that gets deleted. - It is cheap enough to send to everyone. At ₵0.02 a message, the question is never whether you can afford to tell your customers something; it is whether they'd want to hear it.
From Sailup, one account reaches MTN, Telecel and AirtelTigo at the same rate, from one balance, with no per-network contract. You don't need to know which network a customer is on.
The five campaigns
Each one below has a trigger, a time to send, an example message that fits in one 160-character segment, a way to judge it, and a cost for a realistic list. Replace 0XX XXX XXXX with a number your staff answer.
1. Flash sale or restock alert
When it works. A shop with stock that moves on news: fabric, phones, provisions, cosmetics, building materials. The message goes to your whole opted-in list, or to the branch list, on the morning of the offer.
When to send. Between 8am and 7pm, Monday to Saturday, and early enough that the deadline in the message leaves a working day. 9am on a weekday, with a 6pm deadline, is the reliable choice.
Ama, fresh Ankara prints just in at Efua's Fabrics, Makola, from GHS 25 a yard. Today till 6pm only. Opt out: text STOP to 0XX XXX XXXX
135 characters. Notice "GHS 25" rather than "₵25": the cedi sign is not in the SMS alphabet, and one of them cuts the segment limit from 160 characters to 70.
What to measure. Delivered count from the campaign report, then footfall or sales for the day against a normal day. If you want a hard number, put a code in the message ("show this SMS" counts too) and tally it at the till.
Cost. 2,000 customers, one segment each: ₵40. Do it twice a month and it is ₵80. This is the one promotional campaign in the list, and the call-to-action post has ten tips on the copy.
2. Appointment or class reminders, 24 hours before
When it works. Clinics, dentists, salons, barbers, tutors, driving schools, and any church or association with meetings people forget. A reminder the day before costs ₵0.02; an empty chair costs the appointment.
When to send. Around 24 hours before, during the day. A reminder is transactional (the customer booked the slot), so the promotional window does not bind it, but nobody enjoys a 6am reminder either.
Kofi, reminder: your dental check-up at Smile Clinic, Osu, is tomorrow (Wed) at 10am. To change it, call 0XX XXX XXXX.
118 characters. No opt-out line is needed on a reminder for something the customer asked for, but keep the offer out of it; the moment you add "and get 10% off whitening", it becomes promotional and the rules change. Promotional vs transactional SMS covers where the line falls.
How to send it on Sailup. Sailup has no scheduler. Two ways work. From the dashboard, keep a "Tomorrow's appointments" list, update it each afternoon, and send a campaign with {{first_name}} and {{attributes.time}} merged in from your import. If you use booking software, have it call the API when a slot is 24 hours out.
What to measure. No-shows per week, before and after.
Cost. A clinic with 300 appointments a month: ₵6.
3. Feedback request after a visit
When it works. Pharmacies, restaurants, clinics, repair shops, anywhere the owner isn't at the counter and wants to know what happened. The customer's visit triggers it, so it is transactional, but keep the offer out of it for the same reason as above.
When to send. The same day, a few hours after the visit, during the day.
Here is the catch: Sailup cannot receive replies. So the message has to send the reply somewhere you read, which for most SMEs means the business WhatsApp line or the manager's phone.
Adwoa, thank you for visiting Bliss Pharmacy, Madina, today. How did we do? WhatsApp the manager on 0XX XXX XXXX. She reads every reply.
136 characters.
What to measure. Messages received on the line per 100 sent, and what they say. A week of replies from Madina customers is worth more than any survey tool.
Cost. 1,500 visits a month: ₵30. If that feels like a lot for feedback, send it to every fifth customer and it's ₵6.
4. Loyalty and points updates
When it works. Any business that already runs a points or stamps scheme, however informal. The customer buys, the points change, and a message tells them where they stand. Sailup has no loyalty engine; the points live in your POS or spreadsheet, and Sailup delivers the number.
When to send. Right after the purchase if your POS can call the API, or as a weekly campaign. For the weekly version, export a CSV with phone, first_name and points columns and import it into Sailup. The points column becomes a custom attribute, existing contacts are matched by phone and updated, and the campaign body can use {{attributes.points}}.
Kwame, you earned 40 points at Yaw Fabrics today. Balance: 320 points. At 500 you get GHS 50 off your next purchase.
116 characters. A balance statement triggered by a purchase is transactional. "Double points this Saturday only" would be promotional, so if you want to say that, put it in a separate message inside the window with an opt-out line.
What to measure. Redemptions, and how many customers cross the threshold each month.
Cost. 800 purchases a month: ₵16.
5. Payment reminders and receipts, as a three-touch sequence
When it works. Schools chasing term fees, gyms chasing renewals, microfinance and susu collectors chasing instalments, landlords, anyone with a due date. This is where SMS earns the most for the least, because a reminder that arrives before the due date is cheaper than a visit after it.
When to send. Three touches around the due date, then a receipt when the money lands. All four are transactional: the customer signed up for the thing they're being asked to pay for.
- Seven days before. The amount, the date, the way to pay.
- On the due date. Short, with an out for people who already paid.
- Three days after. Overdue, with a person to call.
- On payment. A receipt. Then take the payer off the reminder list.
For a school, import a CSV with phone, first_name, ward, amount and ref columns; the last three become custom attributes. The first touch as a campaign body:
{{first_name}}, Term 2 fees of GHS {{attributes.amount}} for {{attributes.ward}} are due Fri 18 Sep. Pay by MoMo to 0XX XXX XXXX, ref {{attributes.ref}}.
Merged for one parent, that reads:
Adwoa, Term 2 fees of GHS 850 for Kofi Mensah are due Fri 18 Sep. Pay by MoMo to 0XX XXX XXXX, ref KM-JHS2.
107 characters. The second and third touches:
Adwoa, Term 2 fees for Kofi Mensah are due today. MoMo 0XX XXX XXXX, ref KM-JHS2. Already paid? Ignore this, your receipt follows.
Adwoa, Term 2 fees for Kofi Mensah are 3 days overdue. Please pay by Friday or call the bursar on 0XX XXX XXXX to arrange a plan.
130 and 129 characters. And the receipt, which a bursar can send from the dashboard one at a time (Messages, then Send message) or from the school's fee system through the API:
Adwoa, we received GHS 850 for Kofi Mensah, Term 2 fees. Ref KM-JHS2. Thank you. Bursar: 0XX XXX XXXX
101 characters.
Two practical notes. Before touches two and three, remove the parents who have paid from the list, or you will remind people who already did. And because Sailup has no scheduler, the three touches are three campaigns: save each as a draft and press send on the day. Duplicating the first campaign gives you a new draft to edit for the second.
What to measure. The share of fees in by the due date, term on term.
Cost. A 600-pupil school, three reminders and a receipt: 2,400 messages, ₵48 a term. A microfinance desk with 1,500 borrowers on monthly instalments: 6,000 messages, ₵120 a month.
Which of these are promotional, and what that changes
Only the first is promotional. You decided to send it; the customer did nothing to trigger it. That means:
- 8am to 7pm, Monday to Saturday. The NCA's Unsolicited Electronic Communications Code sets the window, and the NCA's consumer guidance adds no Sundays. Strictly, the Code's timing clauses are written about network operators' own commercial messages, but every Ghanaian bulk SMS provider applies the window to promotional traffic, and so do we.
- Opted-in contacts only, with a free way to opt out in every message.
- Not too often. The Code's own figure is three commercial messages a month per recipient; a couple of promotions a month is a safe habit.
The other four are triggered by something the customer did (booked, visited, bought, enrolled), which makes them transactional. No window, no opt-out line required, and you can send them on a Sunday if the trigger happens on a Sunday. The rule that keeps them transactional is simple: no offer in the message. "Your fees are due, and here is 10% off uniforms" is promotional.
Sailup lets each account register two sender IDs, one transactional and one promotional, so reminders and promotions can be kept apart. One name for both is fine as long as the promotional messages follow the promotional rules.
What it costs
Every message on Sailup is ₵0.02 to any network, billed per 160-character segment, with no monthly fee, no setup fee and no minimum. Credits are prepaid and never expire, and the smallest purchase is 100 credits for ₵2. The table assumes one segment per message; a two-segment message doubles the row.
| Customers | Messages per customer per month | Messages sent | Monthly cost |
|---|---|---|---|
| 500 | 1 | 500 | ₵10 |
| 500 | 4 | 2,000 | ₵40 |
| 2,000 | 1 | 2,000 | ₵40 |
| 2,000 | 4 | 8,000 | ₵160 |
| 10,000 | 1 | 10,000 | ₵200 |
| 10,000 | 4 | 40,000 | ₵800 |
If you send well beyond the bottom of the table, contact the team with your monthly volume.
Building the list without breaking the law
Two rules apply. The Data Protection Act, 2012 (Act 843) treats a phone number as personal data: you need consent to use it, and only for the purpose you collected it. The NCA Code says marketing messages must be opt-in, and that a list gathered for any other reason must not be used for them. A list you bought or borrowed fails both.
Ways that work for an SME:
- A checkbox at the till or on the intake form. "Send me offers by SMS" with a line for the number. Keep the paper, because that is your proof.
- A sign-up sheet in the shop or the church office, with the same wording printed on it.
- A WhatsApp opt-in. "Reply YES to get our offers by SMS" on the business line. Screenshot the yes.
- An unticked box at online checkout that the customer ticks.
When you add contacts to Sailup, record where the consent came from. The opt_in_source field takes API, CSV or MANUAL, and the opted_in flag is what campaigns check. When someone asks to stop, mark them opted out in the dashboard or via the API, and they're excluded from every campaign after that. Because Sailup cannot receive SMS, the STOP instruction in your messages has to point at a number you monitor, as in the examples above.
Getting started in five steps
- Create an account. Signing up is free. There is no monthly fee and no setup fee; you buy credits when you're ready to send.
- Register your sender ID. Your business name, 3 to 11 characters, letters and numbers only. Carriers review it, which takes 1 to 3 business days, so do this first. SMS sender IDs in Ghana explains why names get rejected.
- Import your contacts. Upload a CSV or Excel file with a header row. Sailup matches the phone and name columns, turns any other column into a custom attribute, and flags bad rows before anything is saved. Put them in lists by branch or purpose.
- Create a campaign. Pick the list and the sender ID, write the body with
{{first_name}}and any attributes you need, paste it into the send form under Messages first to confirm it is one segment, and send now or save as a draft. - Read the report. Sent, delivered, failed, opted out and the delivery rate. Numbers that keep failing come off the list.
Steps 3 to 5 are covered in more detail, with the compliance checks, in how to send bulk SMS in Ghana.
Pick one campaign from the five, the one where you already have the list and the trigger. For most shops that is the flash sale; for a school it is the fee sequence. Register the sender ID today, since it's the only step you have to wait for, and send the first campaign to a hundred customers before the whole list.
Frequently asked questions
How much does bulk SMS cost for a small business in Ghana?
On Sailup, ₵0.02 per message to any Ghanaian network, billed per 160-character segment, with no monthly fee, setup fee or minimum. Sending one message to 500 customers costs ₵10; to 2,000 customers, ₵40; to 10,000, ₵200. Credits are prepaid, never expire, and the smallest purchase is 100 credits for ₵2. A message that runs to two segments costs twice as much.
Do I need a sender ID to send bulk SMS to my customers?
Yes, if you want the message to arrive under your business name rather than a number. On Sailup you register the name in the dashboard, carriers review it, and approval takes 1 to 3 business days. The name must be your own business name, 3 to 11 characters, letters and numbers only. Register it before you import contacts, since it is the only step that involves waiting.
Can I send one message to MTN, Telecel and AirtelTigo customers at the same time?
Yes. A Sailup campaign or API call goes to every number in the list regardless of network, at the same ₵0.02 rate, from one balance. You do not need to sort contacts by network or hold separate accounts with each operator, and an approved sender ID works on all three networks.
Is it legal to send promotional SMS to customers in Ghana?
Yes, with consent. The Data Protection Act, 2012 (Act 843) treats a phone number as personal data that needs consent to use, and the NCA's Unsolicited Electronic Communications Code requires marketing messages to be opt-in, sent between 8am and 7pm, with a free way to unsubscribe in every message. Bought or borrowed lists meet neither. Transactional messages such as reminders and receipts are not subject to the promotional window.
Can I schedule a bulk SMS to go out at a set time on Sailup?
Not from the dashboard; Sailup has no scheduler. Save the campaign as a draft and press send at the time you want, which is what most SMEs do for a 9am flash sale or a fee reminder on the due date. If you have a developer or booking software, drive the API from your own cron job or from the event itself.
How do customers opt out if Sailup cannot receive replies?
Put a number or WhatsApp line you monitor in the opt-out line, for example 'Opt out: text STOP to 0XX XXX XXXX'. When a request arrives, open the contact in the Sailup dashboard or update it through the API with opted_in set to false. Every later campaign leaves that contact out and counts them under Opted out in the report. Opting out must be free for the customer.
Send your first SMS in five minutes.
No setup fees, no contracts — pay only for what you send, and volume discounts when you scale.