The GoHighLevel practice of Yotomations LLCAI development, custom software and websites at yotomations.com
New to GHL? Start here

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.

Reviewing printed charts and documents next to a laptop during an account audit
By Yaakov (Koby) Oranski, Certified GoHighLevel Admin and Partner | | 6 min read

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.

Where a GoHighLevel text can failWHERE A GOHIGHLEVEL TEXT CAN FAILWorkflow SMS stepContact reaches the sendactionA2P campaignApproved, pending,suspended, re-verifyingNumber attachedNumber linked to thecampaign or notWalletBalance and auto-rechargeContact stateDND, STOP, invalid orlandline numberContent and volumeLinks, shorteners, dailycaps, new-number rampCarrierDelivered, filtered, orrejected with a codeDeliveredStatus shows delivered inConversationshanded offdeliveredunregistered codeA text passes through registration, billing, contact state and content checks before a carrier ever sees it; the failure code tells you which gate closed.

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

#CauseWhat you seeWhere to check
1A2P campaign not approved or suspendedUnregistered-number error on every US textSettings, Phone Numbers, Trust Center
2A2P re-verification pendingTexts that worked last month now fail or trickleTrust Center notices, agency owner's email
3Number not attached to campaignOne number fails, others workPhone number settings, campaign assignment
4Wallet empty, auto-recharge offEverything fails from one date; workflow shows executedBilling, Wallet
5Contact on DND or replied STOPOne contact skipped, no workflow errorContact record, DND settings
6Invalid, landline or badly formatted numberDestination error, often after an importContact phone field, import source
7Content filtered by carrierSent but not delivered, filtering codeMessage content vs registered samples, links
8Volume cap or new-number rampFailures start mid-blastSend volume that day, workflow release timing
9Workflow draft, from number, or conditionNever sent at all; no message in ConversationsWorkflow 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.

Yaakov (Koby) Oranski

Yaakov (Koby) Oranski, Founder and CEO of Yotomations

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

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.

No pitch deck. We look at your current setup and tell you what we would do and what it would cost.

Need more than GoHighLevel? Yotomations, our parent company, also builds AI agents, custom software and websites.