Skip to content
Get a free quoteGet a quote
Published
Byline
GoHighLevel Partners Editorial

Registration, encoding, opt-outs and carrier throughput decide the outcome — almost none of it lives in the message editor.

GoHighLevel SMS: what actually governs whether a message arrives

Sending a text from a CRM looks like the simplest thing the platform does, and it is the one that generates the most confused support tickets. The message was composed, the workflow ran, the contact has a mobile number, and nothing arrived — or three messages arrived and the bill counted five. Both are normal and both have specific causes.

Almost none of those causes live in the message editor. SMS is a carrier service the platform hands off to, so the rules that decide the outcome come from outside the CRM: how the sending number is registered, how the text is encoded, whether the recipient has opted out somewhere you cannot see, and how fast the carrier will accept traffic. Understanding those four is most of what there is to know.

Registration decides delivery before content does

In several markets, business messaging from a standard local number must be registered before carriers will deliver it reliably. Unregistered traffic is usually filtered rather than rejected, which is the worst possible failure mode: the platform reports the message as sent, and it simply never appears on the handset. Nothing in the interface looks wrong.

This is why registration is the first thing to verify when messages are missing, not the last. The process, the fields that cause rejections and the sequence that gets through are covered in the registration steps that get approved. Two details matter operationally: registration is per sending brand and campaign rather than per sub-account habit, and a campaign approved for one use case can be filtered when the traffic sent through it plainly belongs to another.

Encoding, segments and why the count surprises people

A text is not billed or transmitted by the message; it is transmitted in segments. A message written entirely in the standard GSM alphabet fits 160 characters in one segment. Add a single character outside that alphabet — a curly apostrophe pasted from a document, an emoji, an accented letter — and the whole message switches to the wider encoding, where a segment holds 70 characters instead.

What you write What happens Practical effect
Plain characters, under 160 One segment The expected cost and the expected delivery
Plain characters, over 160 Splits into segments of 153, because the join takes space A 161-character message costs two, not one
One emoji or smart quote anywhere The entire message switches encoding A short message can jump from one segment to three
A merge field Length is unknown until it renders per contact The same message costs different amounts for different people
A link Counts as characters like anything else Long tracked links can push a message over on their own

The practical rules follow directly. Compose in a plain editor rather than pasting from a word processor, which is where smart quotes come from. Assume merge fields render longer than your test contact. And check the length after the merge fields resolve, not before.

Opt-outs are held in more than one place

A contact can stop receiving messages in ways that are invisible from the contact record. Replying with a standard stop keyword is handled at the carrier level, which means the block can exist upstream of the platform entirely — the CRM may still show the contact as messageable while the carrier refuses to deliver. Treat a single contact who receives email but never SMS as a probable opt-out rather than a bug.

Keep the platform’s own view consistent with that. When someone opts out by replying, or asks a member of staff to stop messaging them, the record needs to reflect it so that no future workflow tries again. The rules that govern what opting out must do, and when you may send at all, vary by jurisdiction and by how the contact was obtained — quiet hours, consent and local time covers what to establish before any sequence goes live.

Throughput: why a large send trickles

Carriers accept traffic at a limited rate that depends on the number type and the registration behind it, and the platform queues behind that limit rather than failing. A send to a large list therefore does not go out at once — it drains over a period, and the last recipients can receive a message meaningfully later than the first.

That has real consequences for anything time-sensitive. A promotion tied to a specific hour can reach part of the list after the hour has passed. The usual answers are to start earlier, to split the send, or to reconsider whether the whole list needs it at the same moment. When the send is driven by bulk workflow triggers, the same queueing applies, so plan the schedule around the drain rather than around the moment you press start.

When a message did not send at all

  • The workflow did not re-enter. A contact already inside a workflow will not start it again unless re-entry is allowed — the most common cause of “it worked once and never again”, explained in why a workflow will not refire.
  • The number is not a mobile. Landlines and some virtual numbers cannot receive SMS, and a list imported from a form with a free-text phone field will contain both.
  • The contact is opted out. Check the carrier-level possibility as well as the record.
  • The sending number is not configured for the sub-account. A workflow cloned from a template can carry a sending configuration that does not exist in the account it landed in — the same class of problem as missed call text back sending from an unexpected identity.
  • A quiet-hours or window setting is holding it. A held message is not a failed one; it is waiting.

Diagnose in that order, because the first two account for most cases and cost nothing to check. And log outcomes somewhere durable — writing sends and their results to an audit trail of what was sent lets you see a pattern across accounts instead of re-investigating each report from scratch.

Where SMS earns its cost

Text is expensive per message compared with email and far more likely to be read, which is a straightforward argument for using it narrowly. It works best where a response is genuinely wanted and the timing matters: confirming an appointment, answering someone who has just called, or catching a customer before a slot goes unused. Those uses are the substance of an automated reminder system and reducing no-shows, and they are worth more than any broadcast.

The reverse is also true. A list-wide promotional text is the fastest way to generate opt-outs, and an opt-out is permanent in a way an ignored email is not. Where the volume is high and the message is not urgent, another channel is usually the right home for it — the trade-offs across channels are set out in judging a texting and calling stack, and WhatsApp messaging limits shows how a chat channel imposes its own structure instead.

Finally, make sure something happens when a customer replies. An automated text that invites a response and then goes unanswered does more damage than no text at all, which is exactly the gap a conversation SLA exists to close.

Frequently Asked Questions

Why do messages show as sent but never arrive?

The most common cause is that business messaging from the sending number is not properly registered. Carriers tend to filter unregistered traffic rather than reject it, so the platform reports success and nothing reaches the handset. Verify the registration before investigating anything in the message itself.

Why did a short message cost more than one segment?

Because a single character outside the standard GSM alphabet switches the whole message to a wider encoding, where a segment holds 70 characters instead of 160. Emoji, accented letters and curly apostrophes pasted from a word processor are the usual culprits.

How long can a text be before it splits?

In the standard alphabet, 160 characters fit one segment. Beyond that the message is sent in segments of 153, because the join between them consumes space. Merge fields make this unpredictable, since the length is only known once they render for each contact.

Why does a large send trickle out instead of going at once?

Carriers accept traffic at a limited rate determined by the number type and its registration, and the platform queues behind that limit rather than failing. The last recipients can receive a message noticeably later than the first, so anything tied to a specific hour needs to start earlier or be split.

Where are opt-outs actually held?

In more than one place. A reply with a standard stop keyword is handled at the carrier level, which sits upstream of the platform, so a contact can look messageable in the CRM while delivery is refused. Keep the record consistent with any verbal or written request as well.

What should be checked first when a workflow text does not send?

Whether the contact was already in the workflow and re-entry is not allowed, and whether the number is a mobile at all. Those two account for most cases and cost nothing to check. After that, look at opt-out status, the sub-account’s sending configuration, and whether a sending-window setting is holding the message.

When is SMS the wrong channel?

For high-volume promotional messages that are not time-sensitive. Text is expensive per message, far more likely to be read, and an opt-out is permanent in a way an ignored email is not. Reserve it for moments where a reply is genuinely wanted and the timing matters.

We build your GoHighLevel account for you

CRM, pipelines, funnels, SMS and automation — configured for your business, not left for you to figure out.

  • Setup (one-time)$850
  • Ongoing (per month)$38.80
Get my free setup quote

No obligation quote · reply within 1 business day

This site is independently operated and is not officially affiliated with, endorsed by, or sponsored by HighLevel LLC. We do not receive referral commissions — this is our own flat-fee implementation service.

Leave a Reply

Your email address will not be published. Required fields are marked *

$850 setup, $38.80/mo ongoingGet a quote