Why are my GoHighLevel texts not sending? Nine causes, in the order to check them
Texts failed or never delivered in GoHighLevel: nine causes from A2P campaign status and re-verification to wallet balance, DND, number attachment and workflow settings, and where to look.
Short answer: GoHighLevel texts stop sending for nine reasons, and the order to check them is: A2P campaign status, A2P re-verification, whether the number is attached to the campaign, wallet balance, contact DND or STOP, an invalid or landline number, message content that carriers filter, daily volume caps on a new number, and finally the workflow itself (draft status, wrong from number, a condition that never passes). The message status and error code in the Conversations panel usually points at the cause in one look. This is practical guidance, not legal advice; the FCC and the Campaign Registry set the rules referenced below.
First, read the status and error code
Open the contact in Conversations and look at the failed message. GoHighLevel shows a delivery status (sent, delivered, failed, undelivered) and, for failures, an error code that comes from the underlying carrier layer. The codes are the fastest diagnostic you have. A code that says the message was sent from an unregistered number means registration (causes 1 to 3). A carrier violation or filtering code means content or volume (causes 7 and 8). An unsubscribed recipient code means the contact opted out (cause 5). A code for an unreachable or landline destination means the number (cause 6). No error at all, with the workflow showing the step executed, points at billing (cause 4) or the workflow (cause 9).
Do this before touching any workflow. Owners often rebuild a working automation because a text did not arrive, when the actual problem was a suspended campaign that would have blocked the rebuilt version too.
Causes 1 to 3: A2P registration, re-verification and number attachment
Under Settings, Phone Numbers, the Trust Center shows your A2P 10DLC brand and campaign status. Anything other than approved on both means texts to US numbers will fail or be heavily filtered. If you have never registered, the A2P 10DLC approval guide walks through the submission and the common rejection reasons, so this article does not repeat it.
Cause 2 is the one that catches accounts that were working fine. One owner's texts stopped with no changes on their side, and the reason was an A2P re-verification: the registry or HighLevel asked the brand to confirm details or resubmit sample messages, and while that review sat open, sending was throttled and then paused. Check the Trust Center for any notice or pending status, check the agency owner's email for the request, and answer it with the exact legal name, EIN and website that were registered originally. Cause 3 is quieter: the campaign is approved, but a number bought later was never attached to it. Each number shows its campaign assignment in the phone number settings, and an unattached number fails on every send.
Cause 4: the wallet ran out
SMS through LC Phone is billed per segment from the sub-account wallet. When the balance hits zero and auto-recharge is off, every text fails until someone adds funds. Nothing in the workflow changes, the workflow history still shows the SMS step as executed, and the only evidence is in Conversations. Under Billing, confirm auto-recharge is on and the card on file has not expired. Agencies that rebill sub-accounts should also confirm the sub-account's own wallet is funded, not only the agency wallet.
Causes 5 and 6: the contact cannot be texted
When a contact replies STOP, GoHighLevel sets DND for SMS on that contact automatically, and workflow texts are skipped without an error in the workflow. The contact record shows a DND toggle plus per-channel DND settings. The contact can lift it by texting START; a user should only clear it manually with the person's consent, because sending to someone who opted out is a TCPA problem, not a technical one.
Cause 6 is the number itself. GoHighLevel stores phone numbers in E.164 format (plus sign, country code, number). A contact imported from a spreadsheet with ten digits and no country code, or a number with a typo, or a landline, cannot receive SMS and will fail with a destination error. Imports are the usual source, so if failures cluster around a recent CSV import, check the phone column format in the source file.
Causes 7 and 8: content that carriers filter, and volume caps
Carriers filter message content after accepting it, which is why a message can show as sent and still never arrive. The common triggers are public link shorteners, messages that look nothing like the sample messages registered on your A2P campaign, and all-capitals promotional text. Use your own domain for links, keep the message shape close to the registered samples, and include an opt-out line in the first message of any sequence.
Volume is the second half. Registered campaigns carry per-day message caps by brand tier at some carriers, and a brand new number that jumps from zero to thousands of texts in a day trips filtering even when registered. If a reactivation campaign or a large workflow release coincided with the failures, spread the sends out with wait steps or a drip release, and check whether the send happened because a paused workflow was republished, which releases everyone in the wait step at once. That failure mode is covered in the duplicate text messages article.
Cause 9: the workflow never actually sent
Last, because it is the least likely when texts stopped suddenly and the most likely when a new build never sent at all. Check that the workflow is published, not draft. Check that the SMS action has a from number selected and that the number is the one attached to the campaign, not a number pool with an unattached number in it. Check any If/Else above the send step: a condition on a tag that no longer exists, or a custom field that the form does not fill, will route every contact down the branch with no text. Enrollment History shows exactly which step each contact reached.
The nine causes on one table
#
Cause
What you see
Where to check
1
A2P campaign not approved or suspended
Unregistered-number error on every US text
Settings, Phone Numbers, Trust Center
2
A2P re-verification pending
Texts that worked last month now fail or trickle
Trust Center notices, agency owner's email
3
Number not attached to campaign
One number fails, others work
Phone number settings, campaign assignment
4
Wallet empty, auto-recharge off
Everything fails from one date; workflow shows executed
Billing, Wallet
5
Contact on DND or replied STOP
One contact skipped, no workflow error
Contact record, DND settings
6
Invalid, landline or badly formatted number
Destination error, often after an import
Contact phone field, import source
7
Content filtered by carrier
Sent but not delivered, filtering code
Message content vs registered samples, links
8
Volume cap or new-number ramp
Failures start mid-blast
Send volume that day, workflow release timing
9
Workflow draft, from number, or condition
Never sent at all; no message in Conversations
Workflow status, SMS action, Enrollment History
What Yotomations would do first
We open Conversations, read the codes on the last twenty failures, and sort them into the table above before changing anything. Most accounts have one cause, and the code names it. When the account has more than one (an unattached number plus a drift between message content and the registered samples is common), we fix registration first because nothing else matters until it is right. The GoHighLevel audit and cleanup service includes phone, A2P and wallet as checks nine and ten for exactly this reason, and a discovery call with a screenshot of the failed message is enough for us to tell you which cause you have.
Certified GoHighLevel Admin and Partner. Koby designs CRM migrations, two-way integrations, billing systems and AI agents for service businesses, and writes from the engagements described on this site.
Published
Frequently asked
Why do my GoHighLevel texts say sent but never arrive?
Sent means GoHighLevel handed the message to the carrier network; it does not mean the handset received it. Carrier filtering can drop a message after acceptance, especially when it contains a shortened link or comes from a number sending far more than its usual volume. Open the message in Conversations, read the delivery status and error code, and compare the message content against your registered A2P sample messages.
What does A2P re-verification mean in GoHighLevel?
The Campaign Registry and the carriers periodically re-check registered brands and campaigns, and HighLevel may ask you to confirm business details or resubmit sample messages. While that review is open, sending can be throttled or paused. Complete it as soon as the notice appears and keep your EIN, legal business name and website consistent with what was registered.
Why can one contact not receive texts when everyone else can?
That contact is almost always on DND, has an invalid or landline number, or has the wrong country code stored. Open the contact, check the DND toggle and the per-channel DND list, and confirm the phone number is stored in E.164 format with a plus sign and country code.
Do texts fail if my GoHighLevel wallet is empty?
Yes. SMS through LC Phone is paid per segment from the sub-account wallet, and when the balance reaches zero with auto-recharge turned off, messages fail until funds are added. The workflow shows the step as executed, so the failure only appears in Conversations.
Keep reading
GoHighLevel texts not sending? A2P 10DLC registration and approval, explained
Why your GoHighLevel SMS is filtered or blocked, what A2P 10DLC brand and campaign registration requires, the website changes that get approvals through, and what to do after a rejection.
Learn more
Does Missed Call Text Back Need Consent in GoHighLevel?
People are asking whether an automatic text to a missed caller needs consent. Here is how to build the reply in GoHighLevel so it holds up, and where consent really gets collected.
Learn more
Is this happening in your account?
Book a 30-minute call. We look at the account live and tell you what is broken, what we would fix first and what it would cost.