GoHighLevel SMS error 30003: the phone couldn't be reached

Short answer
Error 30003 means the carrier couldn't deliver the text to the phone: it was off, out of signal, roaming, or the number can't receive texts, like a landline. In GoHighLevel it also turns on SMS DND for that contact automatically, so every later text to them is blocked too. Confirm the number is a working mobile before turning DND back off.
What 30003 means
The message was sent, and the carrier tried to deliver it but couldn't reach the handset. Twilio notes that repeated 30003s from the same sender can also be carrier filtering in disguise.
HighLevel turns on SMS DND for the contact when 30003, 30004, 30005 or 30006 comes back. That's why one failed text can quietly stop every workflow text after it.
How to fix it
- Find the failed message. In Conversations, failed messages carry a red marker. Hover over or click it to see the error.
- Retry once, later. A phone that was off or out of signal may take the text an hour later.
- Check the number. Confirm the phone is on and can get texts from other senders, and that the number is a mobile, not a landline.
- Check the contact's DND. Open the contact and find the DND section at the bottom of the left column. Turn SMS DND off only once you've confirmed the number is valid.
- If it keeps happening, send examples. Collect three or more failed messages and send them to HighLevel support.
How to find the cause
The code tells you the carrier couldn't reach the phone. The pattern around it tells you why. All of this is visible in your own account.
- Read the exact code. In Conversations, hover over the red marker on the failed text. 30003 is an unreachable handset; 30005 means the number is unknown or no longer exists; 30006 means a landline or a carrier that can't be reached. They look alike but need different fixes.
- See whether it's one contact or many. Go to Settings > Phone System > Messaging tab > Messaging Analytics and click the Failed card. The log lists each failed message with the contact, phone number, status, date and error code, and you can narrow it by where it came from (a campaign, a workflow or a bulk request).
- Check how DND got switched on. HighLevel records DND changes in the conversation as DND Enabled by, and what set it: a workflow, a user or the contact. Compare the time with the failed text to see whether the DND followed the error or came from someone on your team.
- If a workflow sent it, open its log. In the workflow's Execution Logs tab, find the contact and click View Details on the send step to see the error. Go To Action opens that step in the builder.
| What you see | What it means | What to do |
|---|---|---|
| One 30003 for a contact you've texted before | Most likely the phone was off, out of signal, or roaming away from its home carrier's network | Retry once later. Twilio lists the home network as one of its checks, so a customer traveling abroad may not get texts until they're back |
| 30003 every time for the same contact | The number may be a landline or a line that can't take texts | Call or email the contact, confirm a mobile number, and update the contact record |
| 30005 or 30006 instead | The number no longer exists (30005), or it's a landline or unreachable carrier (30006) | Check the digits and country code against what the contact gave you, then ask for a working mobile |
| 30004 instead | The destination blocked the message, which HighLevel says can be carrier filtering or, for India, a do-not-call listing | Don't keep resending. Collect three or more examples and ask support to investigate |
| 30003 across many contacts from one sending number | Twilio says repeated 30003s from the same sender can be carrier filtering, not dead phones | Check the number's A2P registration and your wording against HighLevel's messaging policy, then send support three or more examples from the last 24 hours |
| The contact gets texts from other businesses but not from you | The phone can take texts, so the problem is on the sending side | Treat it like the row above and gather examples for support |
How to confirm it's fixed
- Turn SMS DND off for the contact. Only once you've confirmed the number is a working mobile. In the DND section at the bottom of the contact's left column, SMS should no longer be grayed out.
- Send one text by hand. From Conversations, send a short message from the number you normally use with that contact.
- Check the status, not just the send. In Messaging Analytics, Sent only means HighLevel attempted it; Delivered means it reached the phone. A pass is Delivered, with no red marker in the conversation.
- Ask the contact if you can. Check with them that it arrived. If the text shows no error but never did, HighLevel says to check the carrier delivery status, then give support the sending number, the recipient number, the time and any error code.
- Catch up on what was skipped. Look in the workflow's Execution Logs for the steps that failed while DND was on, and decide whether the contact still needs those messages. Send them by hand or add the contact back to the workflow.
If the retest fails with 30003 again, switch SMS DND back on and reach the contact by phone or email until they give you a number that takes texts.
What doesn't help
- Resending again and again without finding the cause. HighLevel warns it hurts your sending health.
Common questions
- Is the number dead?
- Not necessarily. 30003 also covers phones that are off or out of signal. Retry once later before you treat it as a bad number.
- Why did my workflow stop texting this contact?
- A 30003 turns on SMS DND for the contact, so later message steps skip them. Check the DND section on the contact.
More texting fixes
GoHighLevel SMS error 30007: why carriers filter your texts
The carrier blocked the text as likely spam. Usually a public link shortener, missing opt-out wording or weak consent.
GoHighLevel error 30034: texts fail from an unregistered number
Your US number isn't linked to an approved A2P 10DLC campaign yet. Register in Trust Center, then wait up to 24 hours.
A2P 10DLC campaign rejected in GoHighLevel: what to fix
The usual reasons: opt-in wording, a privacy policy that doesn't cover mobile data, sample messages, or the website.
GoHighLevel: a contact isn't getting your texts
Usually DND is on for that contact, or they replied STOP. You can't override a STOP; they have to text START.
GoHighLevel texts sending from the wrong number
HighLevel picks the number in a set order: the one chosen for that message, the user's number, the conversation's number, then the default.
GoHighLevel texts with links getting blocked
Public link shorteners get texts filtered. Use the full link or a short link on your own domain, with no more than one redirect.
GoHighLevel MMS or images not sending
Usually the image is too big for the carrier, the file type isn't supported, or the recipient is outside the US and Canada.
GoHighLevel SMS opt-out keywords: STOP, START and HELP
STOP, STOPALL, CANCEL, UNSUBSCRIBE, END or QUIT opt a contact out. START, YES or UNSTOP opt them back in; toll-free only takes START or UNSTOP.
Related fixes
GoHighLevel workflow not triggering: a checklist
Usually it's still in Draft, the trigger filters don't match, or re-entry is off. The execution logs tell you which.
Read the fix
Want GoHighLevel set up and running for you?
Book a free 15-minute call. Tell us what you sell and where your leads come from, new account or the one you have, and we'll tell you what we'd set up, how long it takes and what it costs.