Guide
What an SMS segment is, and why it decides your bill
Text messages travel through carrier networks in small fixed-size packets called segments. A message that fits in one packet is sent as one segment. Anything longer is cut into several segments, sent separately, and stitched back together on the recipient's phone so it still looks like a single text.
The part most people miss: you pay per segment, not per message. HighLevel's phone system and the carriers behind it count every segment as a billable unit. A message that looks like one text in your workflow can quietly cost two, three or four times as much once it is split.
For a single reminder that difference is a fraction of a cent. Across a 5,000-contact bulk send, or a workflow that fires hundreds of times a day, it becomes real money. That is why it is worth checking a template once before you put it into an automation that runs for months.
GSM-7 vs Unicode: why one emoji can double the cost
Every message is encoded one of two ways, and the encoding sets how many characters fit in a segment:
| Encoding | Single message | Each part of a long message |
|---|---|---|
| GSM-7 (standard) | 160 characters | 153 characters |
| Unicode (UCS-2) | 70 characters | 67 characters |
GSM-7 covers the English alphabet, numbers, common punctuation and a handful of accented letters. As long as every character in your message is in that set, you get the full 160 characters.
The moment a single character outside the set appears, the entire message switches to Unicode. It does not matter if it is one emoji at the end of a 150-character text: the limit drops from 160 to 70, and the message that was one segment becomes three.
Long messages also lose a little room in each part. When a text is split, each segment carries a small header that tells the phone how to reassemble the pieces. That header takes the space of 7 GSM characters (or 3 Unicode characters), which is why the per-part limits are 153 and 67 instead of 160 and 70.
Characters that switch your message to Unicode without you noticing
Emojis are the obvious culprit, but most surprise Unicode messages come from characters that look identical to plain ones. They usually sneak in when copy is written in Google Docs, Word, Notion or on an iPhone, then pasted into HighLevel:
- Curly quotes and apostrophes —
’“”instead of'and". Word processors convert them automatically. - Long dashes — the en dash
–and em dash—. Use a normal hyphen. - The ellipsis character
…, which is one character but not a GSM one. Three full stops are fine. - Invisible spaces — non-breaking and zero-width spaces copied from web pages and emails. You cannot see them, but they force Unicode.
- Bullets and symbols such as
•,✓,→and™. - Some accented letters. Characters like
é,üandñare in GSM-7, butá,í,óandçare not.
The calculator above highlights every one of these in red and offers to replace the smart punctuation with plain equivalents in one click. Try the “Pasted from Google Docs” example to see how a message that looks normal turns out to be Unicode.
A few GSM-7 characters are also “extended” and count as two: { } [ ] ~ \ | ^ €. They keep you in GSM-7 but eat into the 160 faster.
How this affects your HighLevel phone bill
HighLevel bills outbound text messages by segment, using the rate set for your account's phone system (LC Phone or a connected Twilio account). Agencies that rebill messaging to sub-accounts pass the same segment count through to their clients, often with a markup, so segment count shows up on every invoice down the chain.
Here is how quickly it adds up. Say a home services company sends a seasonal promotion to 3,000 contacts:
- A 150-character plain message: 3,000 segments.
- The same message with a 🎉 emoji added: Unicode, 151 characters, 3 segments each = 9,000 segments.
- The same message with a link and a merge field that pushes it to 170 plain characters: 2 segments each = 6,000 segments.
One emoji tripled the cost of the campaign. Enter your own rate in the cost estimator to see the numbers for your account.
Workflows multiply the effect
A one-off bulk send happens once. A workflow message, such as an appointment reminder, a missed-call text-back or a review request, is sent every time the trigger fires, for as long as the workflow is published. Shaving one segment off a reminder that fires 40 times a day saves around 14,000 segments a year. Check your always-on templates first.
Merge fields and links change the real count
The text you type into HighLevel is not the text that gets sent. Merge fields like {{contact.first_name}} are replaced with each contact's details before sending, so the final length depends on the person:
{{contact.first_name}}might be “Al” or “Christopher”.{{contact.company_name}}can easily run to 30 or 40 characters.{{appointment.start_time}}usually expands to a full date and time.
The calculator replaces each merge field with a placeholder of the length you choose, so you can test the worst case. If a message sits right at the edge of a segment, a longer-than-average name tips it over. Leave yourself 15–20 characters of headroom on any message that uses merge fields.
A contact's name can also contain non-GSM letters. A message to “José” stays in GSM-7, but a message to “Zoë” or “Ángel” switches to Unicode for that contact only.
Links count character by character too. A full booking URL can take 60 or more characters on its own. Use a short path on your own domain, such as yourbusiness.com/book, rather than a long funnel URL.
Seven ways to keep a text to one segment
- Write the text in HighLevel, not in a document. Typing straight into the message box avoids smart quotes and invisible spaces.
- Drop decorative emojis in bulk messages. Save them for one-to-one conversations where the cost is negligible.
- Lead with the point. “Your cleaning is Tue 10 AM” beats “We just wanted to send you a quick friendly reminder that…”.
- Shorten links with a clean path on your own domain. Avoid public shorteners like bit.ly, which carriers often filter as spam.
- Use the business name once, ideally at the start, where it identifies you and satisfies carrier rules.
- Keep the opt-out short. “Reply STOP to opt out” is 21 characters and widely accepted.
- Leave room for merge fields, as explained above.
Sometimes two segments is the right call. A clear reminder that prevents a no-show is worth more than a fraction of a cent. The point is to choose the length on purpose, not discover it on the invoice.