Why Google LSA Texts Don't Show Up in Your GoHighLevel Pipeline
Calls from your Google Local Services Ads land in the pipeline fine. Texts to the same number often vanish, and it is a settings problem, not a broken CRM.
Learn moreError 30003 is a carrier bounce code, not proof your GoHighLevel account is broken. Here is the order to check things, and when to just wait it out.
Short answer: Error 30003 means "Unreachable Destination Handset." It's a carrier-level bounce code that shows up in a GoHighLevel conversation log or workflow execution history when a text could not reach a specific phone, usually because the number is a landline, disconnected, powered off, or being filtered by that carrier. It is not, on its own, proof that your A2P registration, your workflow or your account is broken. Agency owners have reported a wave of these errors hitting many different, previously working numbers on the same day, which points to a problem on the messaging provider's side rather than anything wrong with an individual sub-account.
Open the sub-account, go to Conversations, and find the message. A failed send shows a status of "Failed" with an error code next to it, and 30003 will be listed there in plain text if that's what came back. The same code also appears inside a workflow's execution history if the SMS step is the one that failed, which matters if you're chasing this down inside a reminder sequence or a missed call text back workflow rather than a one-off broadcast.
Don't confuse this with a message that never left GoHighLevel at all. If nothing shows in the log, the problem is earlier in the chain, usually a paused workflow, a bad custom value, or an A2P issue we cover in detail in our A2P 10DLC approval guide. Error 30003 only appears once a message has actually been handed to the carrier and bounced back, which means the workflow itself fired correctly. The problem lives downstream of your account, on the carrier's side of the handoff.
Before assuming anything is broken at the account level, work through the number itself. Most 30003 errors trace back to one of these five things, and checking them in order saves you from rebuilding a workflow that was never the problem.
Not every failed text is the same failure. Knowing which code you're looking at tells you where to spend your time.
| Error code | What it usually means | Where to look first |
|---|---|---|
| 30003 | Unreachable destination handset | The individual contact's number |
| 30004 or 30005 | Message blocked or number no longer in service | The contact record, remove or flag the number |
| 30007 | Message filtered as spam by the carrier | A2P campaign registration and message content |
| 30034 | A2P 10DLC campaign not registered or unverified | Account settings, campaign status |
If you're seeing a mix of these codes across a batch, the fix isn't the same for every contact, and treating them all as one problem is how a five-minute cleanup turns into an afternoon of guessing.
Every SMS sent from GoHighLevel travels through a messaging provider before it reaches a carrier network, and that provider has its own outages and rate limits separate from anything in your sub-account. When agency owners report the same error code hitting valid, previously working numbers across unrelated accounts on the same day, that pattern points to the provider layer, not your workflow or your contact list.
In that situation the fix isn't in your GoHighLevel dashboard at all. Wait for the provider to clear the backlog, check for a status update, and hold off on resending large batches until you see normal delivery return on a small test message first. Rebuilding a workflow or re-verifying A2P during a provider outage wastes time and doesn't change anything on the carrier side, since the message never had a chance to reach the handset in the first place.
The most common mistake we see during a run of 30003 errors is someone manually resending the entire broadcast or reminder sequence to "make sure it went out." If some of those original messages actually did deliver late, once the provider clears the backlog, contacts end up with two copies of the same reminder or promotion. We've written about this exact failure mode in why GoHighLevel sends duplicate text messages, and the root cause is almost always a retry sent before confirming the first attempt actually failed for good.
If reminders are part of what's affected, a safer approach is to pull the list of contacts with a genuine 30003 failure, confirm their numbers are correct, and resend only to that filtered list rather than the whole segment. That one extra step is the difference between a clean fix and a client calling to ask why they got the same appointment reminder twice, which is its own support headache on top of the original delivery problem.
We'd start by pulling every contact tied to a 30003 error in the last 24 hours and sorting them by number type, since a batch of landlines or dead numbers tells a different story than a batch of valid mobiles that all failed at once. If it's the second case, we check for a provider-wide pattern before touching anything inside the account. For clients on an ongoing Care Plan (from $349/mo), this kind of check is part of what we monitor so a delivery problem gets caught before it turns into a client complaint about missed reminders.
It's a carrier-level bounce code, generated by the phone network, not by GoHighLevel's software. GoHighLevel just displays the code it receives back from the messaging provider that sent the text on your behalf.
No. A revoked or suspended A2P campaign usually produces a different error tied to campaign status, often referencing filtering or an unregistered sender. 30003 is specific to the handset being unreachable, which is a separate failure point further down the chain.
Because the cause is usually the individual number: a landline that can't receive texts, a disconnected line, a phone that is off, or a carrier applying spam filtering to that one line. If it's isolated to a handful of contacts, check those numbers first before assuming anything is wrong with your account.
You can resend it manually once you've confirmed the number is a working mobile line, but an automatic retry loop inside a workflow will just produce the same failure repeatedly if the underlying number problem hasn't changed. Fix the number first, then resend.
Only if the errors are concentrated on outbound messages from one specific number and a different number in the same sub-account sends fine. If the errors are spread across every number in your account on the same day, a new number won't fix a provider-side problem.
Calls from your Google Local Services Ads land in the pipeline fine. Texts to the same number often vanish, and it is a settings problem, not a broken CRM.
Learn moreCustomers replying to a text and landing nowhere is almost always a number pool, a workflow override or a calendar setting. Here is where to look, in order.
Learn moreGreen checkmarks in the workflow history do not mean the customer got the right text. Here is the exact spot where a wait step lets stale data through, and the fix.
Learn moreBook 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.