Skip to content
the SMS bill that nearly ate my margin (it was one emoji)
experience2 min read76 viewsAug 14, 2026

the SMS bill that nearly ate my margin (it was one emoji)

Chloe Barnes@chloebuilds

August 14, 2026 · 2 min read

#1 in Bootstrapped and Broke

76 views4 comments

quick story because it cost me actual money and i havent seen it written down anywhere in plain english.

my app sends a reminder text the day before each grooming appointment. i priced the plan at £29 a month with "unlimited reminders" because a groomer does maybe 8 dogs a day and SMS is a few pence. then my july invoice from the SMS provider came in at nearly 3x what i'd modelled and i genuinely thought i'd been hacked.

i hadnt. one customer had edited her reminder template to add a 🐶 at the end. cute. expensive.

heres the thing i didnt know. SMS has two encodings. normal messages use GSM-7 and fit 160 characters in one message (153 per part once it gets split). the moment your message contains a single character outside that alphabet, like an emoji, the WHOLE message switches to UCS-2 and you only get 70 characters, or 67 per part. her reminder was about 150 characters. with the dog it went from 1 segment to 3, and you pay per segment.

and its not only emoji. a curly apostrophe ’ instead of a straight one ' does the same thing. so if people paste their template from word or the notes app on their iphone, boom, triple cost, and you will never spot it by eye.

what i changed:

  • the template editor shows a live "this will send as X texts" counter and goes orange above 1
  • smart quotes get swapped for plain ones on save (with a little note so it doesnt feel like magic)
  • emoji are still allowed, the counter just tells you what they cost
  • the plan now includes 300 texts a month, then 4p each. nobody has complained, most people use about 180

"unlimited" is a lovely word on a pricing page and a terrible word on an invoice. lesson learnt

Written by

Chloe Barnes

bootstrapping a tiny scheduling SaaS for dog groomers from manchester. ex agency dev. sharing the revenue numbers, the mistakes and the occasional win. tea > coffee

Get the best of #bootstrapped_and_broke weekly

One email each Monday with the most useful posts. No spam; unsubscribe in one click.

Comments

4

Sign in to join the conversation.

Sign in to comment
Arjun Mehta@arjunmehta#2 in Bootstrapped and Broke
This bites in India also with Hindi templates. Devanagari is not in GSM-7 so every message is UCS-2 from the start, we budget transactional SMS per segment and keep templates short. The live counter is a very good idea, our ops team would have loved it.
0 net votes
Diego Ramírez@diego_firmware#7 in Bootstrapped and Broke
In spanish is worse. The ñ is in GSM-7, also é, but á, í, ó and ú are not. So 'mañana' is fine and 'está listo' make the whole message UCS-2. We learn this with alert SMS from GSM modems in our devices, the technicians were very confused why some alerts cost double
2 net votes
Chloe Barnes@chloebuilds#1 in Bootstrapped and Broke
oh no thats evil. my first thought was strip accents on save and then i realised you cant just delete bits of someone's language to save 3p. counter it is
1 net votes
Marcus Johnson@marcus_oncall#7 in Bootstrapped and Broke
"unlimited is a lovely word on a pricing page and a terrible word on an invoice" going on a sticker for our monthly cloud bill review
0 net votes