SMS Campaign ROI in Ghana: How to Measure What Every Text Is Worth
A practical way to calculate bulk SMS return: cost per delivered message, conversion, collections, and no-show reduction — with examples in GHS.
SMS feels cheap until nobody can say whether it paid for itself. Finance will ask. Pastors will ask. School bursars will ask. The answer is not “open rates are 90%.” Open rates are a reason to test SMS, not proof that a campaign made money.
This article shows how Ghana teams can measure SMS the same way they measure MoMo charges: credits out, results in. You do not need a data warehouse. You need a campaign name, a wallet debit, and one outcome you already track — payments, bookings, attendance, or sales.
Start with cost you can audit
SplitSMS shows sent count, failed count, and credits used per campaign. Cost = credits used × your effective GHS per credit. If Ghana is GHS 0.029 per segment and you sent 2,000 one-segment messages, that is about GHS 58. Two-segment messages double it. Failed sends that never left the platform should not be counted as “delivered cost.”
Write the campaign name in a sheet: date, audience size, segments, credits, GHS, and the offer. If you skip this, you will not remember whether last month’s PTA reminder was 400 or 4,000 people.
Pick one primary outcome per send
Retail: unique discount codes redeemed, or till sales in a 24-hour window versus a quiet Tuesday. Collections: fees received in 72 hours versus the previous term without SMS. Clinics: no-show rate this week versus last month. Churches: confirmed seats versus last event.
If you track five outcomes, you will credit SMS for everything and learn nothing. One campaign, one number. Secondary effects (brand recall) can wait until the primary number is stable.
A simple GHS example: fee reminder
A school texts 800 parents a one-segment reminder. Cost ≈ GHS 23. In the next three days, 40 extra families pay GHS 400 each who usually delay two weeks. That is GHS 16,000 of cash moved earlier — not new revenue, but cash-flow you can use for payroll. ROI on timing is still ROI for a bursar.
If only 5 extra families pay, SMS still likely beat a printer-and-envelope reminder. Compare to the actual alternative you would have used, not to a fantasy of 100% payment.
A simple GHS example: flash sale
A retailer texts 1,200 opted-in customers a one-segment 15% code. Cost ≈ GHS 35. Thirty people redeem with an average extra basket of GHS 80 attributable to the code. That is GHS 2,400 gross. After product cost, if contribution margin is 30%, SMS contributed about GHS 720 against GHS 35 spend. That is a campaign worth repeating.
If nobody redeems, the copy, timing, or list is wrong — not “SMS is dead.” Test a shorter offer, a Saturday 10am send, or a smaller VIP group before you abandon the channel.
Count no-shows as money too
A salon slot that sits empty is lost revenue you already staffed for. If SMS reminders cut no-shows from 20% to 8% on 50 weekly appointments at GHS 80 each, you recovered about 6 appointments × GHS 80 = GHS 480 per week. A weekly reminder to 50 people is a few cedis. That math is why clinics and salons stay on SMS even when they never run “marketing” campaigns.
Do not confuse delivered with converted
High delivery with zero action usually means the message asked for nothing, asked for too much, or went to people who did not care. Delivery is a health check on Sender ID and numbers. Conversion is a health check on offer and audience.
SplitSMS logs help you separate the two. If delivery is poor, fix routing and lists first. If delivery is fine and conversion is poor, fix the sentence you sent.
Attribution without pretending you have Google Ads
Use unique codes per campaign (EAST15 vs EAST15B). Use unique Smart Form links per poster versus SMS. Ask “How did you hear?” at till for a week. None of this is perfect. It is better than guessing.
OTP and order SMS are not ROI campaigns. They are cost of doing business, like receipts. Track their cost under operations, not marketing. Mixing them inflates “SMS marketing spend” and makes promotions look worse than they are.
A monthly SMS scorecard
Once a month, list campaigns, GHS spent, primary outcome, and a one-line note (repeat / rewrite / kill). Share it with whoever pays the wallet. Teams that do this keep SMS. Teams that only remember the one blast that “felt busy” eventually stop topping up.
SplitSMS account reports and delivery views give you the raw counts. The scorecard is your job. Fifteen minutes at month-end is enough.
How SplitSMS makes the numbers honest
Wallet history, campaign sent/failed counts, and per-message logs mean you are not estimating from memory. API users can store message IDs against orders. WordPress users can match WooCommerce order SMS to paid orders in the same week.
Start with 5 free credits, send a 20-person test, then run one campaign you can measure. Pricing is public on /pricing. If a campaign cannot be measured, it is probably too vague to send.
Try SplitSMS free
Send bulk SMS, OTP, and campaigns — 5 free credits on signup.