aibrevo

GoHighLevel SMS Not Sending? Every Error Code (30007, 30034, 21610) and the Fix

GoHighLevel SMS fails for five reasons: registration, content, recipient, number type, or platform limits. The error code tells you which one within seconds, and each has a specific fix that must be applied before you retry.

GoHighLevel conversation thread showing a red failed SMS status with an error code beside a phone displaying an undelivered text

Key takeaways

  • Every failed SMS in GoHighLevel carries a numeric code, and HighLevel's own error reference groups them into a small number of causes: unregistered or unverified sender (30032, 30033, 30034), filtered content (30007), a bad or opted-out recipient (21211, 21610, 21614, 30005), a wrong number type (21606, 21661, 21635, 30006), and platform limits (30023, 30037).
  • Error 30007 means the message was filtered, and HighLevel's guidance is to correct the underlying compliance or content problem before resending; its filtering guide lists missing consent, non-compliant unsubscribe wording, URL shorteners and obfuscated redirects among the triggers.
  • Error 30034 means the sending number is not linked to an approved A2P 10DLC campaign, and HighLevel's dictionary says to allow about 24 hours after approval for the link to activate; error 30032 means a toll-free number is not verified, which HighLevel says can take up to four to six weeks to resolve.
  • Error 21610 is not a bug: the recipient replied STOP or has DND enforced, and the only compliant fix is for them to opt back in, for example by replying START.
  • Trust Score sets the ceiling on speed: per HighLevel, a Standard Brand scoring 75-100 gets 225 total SMS messages per second to the major networks, 50-74 gets 120, and 1-49 gets 12.

A failed text in GoHighLevel is almost never random. The platform attaches a numeric code to every undelivered message, and that code maps to one of five root causes: the sender is not registered or verified, the content was filtered, the recipient is unreachable or opted out, the number is the wrong type, or a platform limit was hit. Read the code, name the family, apply the specific fix, and only then retry.

This guide is a delivery-error field manual for US senders, and it deliberately takes a different angle from the A2P 10DLC registration rejection guide, which covers what happens when the brand or campaign registration itself is refused. Here the registration may be fine and the message still fails. The order of work below is designed to save time: classify the error in thirty seconds, isolate the cause with a three-way test send, and never retry before fixing.

23 Error codes recognized by HighLevel's Messaging Error - SMS workflow trigger
5 Root-cause families that cover every code in this guide
225 Total SMS messages per second for a Standard Brand with a Trust Score of 75-100
4-6 wks HighLevel's stated toll-free verification review window

Why is my GoHighLevel SMS not sending?

The fastest answer is in the message status itself: open the contact in Conversations, find the failed message, and read the numeric error code. That single code tells you whether to look at registration (30032, 30033, 30034, 30035), content filtering (30007, 30004), the recipient (21211, 21610, 21614, 30003, 30005), the sender number type (21606, 21612, 21661, 21635, 30006), or platform limits (30002, 30023, 30037).

HighLevel publishes this mapping in two places: its SMS Error Codes and Fixes article and the LC Phone System Error Code and Warning Dictionary. The dictionary lists 21xxx codes, which are mostly validation and account issues, and 30xxx codes, which are delivery failures reported after the message left the platform. Between them they cover the failures a US sender realistically sees.

A practical habit that pays off immediately is to stop treating a failed message as one problem. If ten messages failed, check whether they carry ten different codes or one code repeated ten times. One code repeated across many recipients means a sender or content problem, for example an unregistered number. Different codes scattered across recipients means a data-quality problem, for example a stale list. Those two patterns need completely different fixes, and confusing them is the most common way people lose a day.

How do I identify the error family in 30 seconds?

Match the code’s first digits and meaning to one of five families. Registration errors block every message from a number. Content errors block specific messages. Recipient errors block specific contacts. Number-type errors mean the sender or the destination cannot do SMS at all. Platform-limit errors mean you hit a cap or an account switch.

The 30-second triage

  1. Does the same code appear on many different recipients? Suspect the sender (registration, number type) or the content.
  2. Does it appear on one contact only? Suspect the recipient (opt-out, bad number, landline).
  3. Did it start suddenly after working? Suspect a suspension (30033, 30002), a daily cap (30023) or a content change (30007).
  4. Did it never work from this number? Suspect registration (30034, 30032) or SMS capability (21661).

The matrix below is original to this guide. It joins HighLevel’s documented meanings with the most likely cause and the exact fix. The time-to-recover column reflects what HighLevel’s documentation states where it states anything, and is marked as a judgment where it does not.

Code Plain-English meaning Most likely cause Exact fix Time to recover
30034 Number is not linked to an approved A2P campaign Campaign pending or rejected, number not attached, or approval too recent Confirm campaign is approved and number is attached; allow the activation window About 24 hours after approval, per HighLevel
30035 Number still being configured A2P registration or deregistration in progress Wait; do not send test volume About 24 hours, per HighLevel
30032 Toll-free number is not verified Verification never submitted, pending, or rejected Complete toll-free verification; send only when Verified (Approved) Up to four to six weeks, per HighLevel
30033 A2P 10DLC campaign suspended Carrier or ecosystem review flagged the campaign or brand Contact support, read the suspension notice, fix the cause Depends on review; not published
30007 Message filtered Consent gap, missing opt-out, shortener, spammy content Correct content or compliance issue, then resend Immediate once fixed for new messages (judgment)
30004 Destination blocked or unavailable DND status or carrier block Check contact DND status and destination Depends on recipient
21610 Recipient unsubscribed or DND enforced STOP reply or DND on contact Recipient must reply START; do not override Only when recipient opts back in
21211 Invalid To number Not E.164, typo, punctuation Reformat to +1XXXXXXXXXX and correct digits Immediate
21614 To number is not a valid mobile Landline, malformed or unusual number Verify line type and format Immediate once corrected
21635 Destination is a landline Contact record holds a landline Use a mobile number or another channel Immediate
30003 Number unreachable or out of service Handset off, no signal, carrier issue Retry later; verify device status Often transient
30005 Inactive or nonexistent number Disconnected or wrong number Correct or remove the record Immediate
30006 Landline or unreachable carrier Destination cannot receive SMS Use a valid mobile destination Immediate
30008 Unknown delivery error Generic carrier failure with no detail Test a shorter, simpler message; gather examples for support Varies
21606 / 21661 From number invalid or not SMS-capable Voice-only or wrongly provisioned number Use an active SMS-capable number owned by the sub-account Immediate once a valid number is used
21612 To/From combination not allowed Formatting or carrier restriction Reformat numbers; use a supported local sender Immediate
21408 Messaging not allowed to destination region Region not enabled Confirm destination supported; contact support Depends on support
30023 Daily message cap reached Brand exceeded its daily volume Pause sending; contact support if unexpected Twilio documents a reset at midnight Pacific
30011 MMS unsupported Handset or region cannot receive MMS Send text only Immediate
11751 Media size limit exceeded Attachment too large Compress or send a hosted link Immediate
30002 / 30037 Account suspended / outbound disabled Billing, policy, or configuration Contact HighLevel Support Depends on support

Sources for the meanings and fixes: HighLevel’s error code article and error dictionary. The 30023 reset timing comes from Twilio’s error 30023 documentation, because HighLevel’s LC Phone system runs on carrier-side rules that Twilio describes publicly; confirm the behavior in your own account.

GoHighLevel SMS error codes grouped by root-cause family Count of error codes in this guide per family: registration or verification 4 (30032, 30033, 30034, 30035), recipient 8 (21211, 21610, 21614, 30003, 30004, 30005, 30006, 21635), number type or sender 4 (21606, 21612, 21661, 21408), content or filtering 1 (30007), platform limits 4 (30002, 30023, 30037, 30011). Source: HighLevel LC Phone error dictionary, grouping by this guide. Recipient (8) Registration (4) Number type (4) Platform limits (4) Content filtering (1) Codes per family (this guide's grouping of HighLevel's documented codes)
Most documented failures are recipient-side, but a single content-filtering code (30007) is the one that hurts whole campaigns. Grouping is this guide's own; code meanings come from HighLevel's LC Phone error dictionary.

What does error 30007 (carrier filtering) mean and how do I fix it?

Error 30007 means the message was filtered, either by the platform’s spam detection or by a carrier, before it reached the handset. HighLevel’s fix for the code is to correct the underlying compliance or content issue before resending, because filtering is a judgment about the message or the sender, not a delivery glitch.

HighLevel’s guide, How to Prevent SMS Filtering by Carriers: Error 30007, lists specific triggers: messaging without explicit user consent, missing required compliance elements such as opt-out instructions, non-compliant unsubscribe language (its example is telling people to reply 2 to unsubscribe), suspicious links or obfuscated redirects, poor formatting with excessive emojis or capitalization, and violations of carrier policies or forbidden use categories. Twilio’s error 30007 page describes the same code as a message identified as spam or unwanted by a message filtering system, or flagged as objectionable by a wireless carrier.

The content audit for 30007

Work through the message body in this order, because the first two items cause the most filtering in practice. First, check every link. HighLevel’s guidance is to replace URL shorteners with branded domains, and to avoid redirects that hide the destination. A public shortener is shared by many senders, so its reputation is shared too. Second, check the opt-out language. Every marketing message should carry clear STOP instructions and identify the sender. Third, scan for capital letters, stacked exclamation marks and emojis, which HighLevel lists as poor formatting. Fourth, confirm the use case matches what you registered: a message that reads like a promotion under a campaign registered for reminders is the classic mismatch.

HighLevel’s guide also says to obtain explicit opt-in, to include STOP language at least once every 30 days for regular messaging, and to reconfirm opt-in every 18 months. Those are HighLevel’s stated recommendations in that article, so treat them as the platform’s operating guidance rather than a statute. The legal baseline is separate and is covered later in the compliance section.

What not to do after a 30007

Do not switch to a second number and send the same content. HighLevel’s guidance tells senders to refrain from using multiple numbers to evade filtering, and Twilio’s error 30033 page warns that sending comparable traffic through alternate campaigns during a review may trigger account termination. Rotating numbers to dodge a filter looks like the behavior the filter exists to stop.

Also do not keep resending the failed batch. The fix-then-retry rule is central to this guide: HighLevel’s troubleshooting article advises resolving the underlying issue before retrying because repeated failures without a fix can trigger restrictions. A filtered message resent unchanged is simply another filtered message on the record.

What do 30034, 30035 and 30033 mean for A2P 10DLC senders?

These three codes are about the state of your A2P 10DLC registration at the moment of sending. Error 30034 means the number is not linked to an approved campaign, 30035 means the number is still being configured, and 30033 means the campaign itself is suspended.

Twilio’s error 30034 page states the mechanism plainly: messages are blocked when you send from a US 10DLC number that is not associated with an approved A2P 10DLC campaign. Its causes include incomplete brand or campaign registration and a number missing from the campaign association. HighLevel’s dictionary adds the practical instruction: wait 24 hours after approval and verify registration status. HighLevel’s US Phone Number Registrations article confirms that registration is required whenever a business sends SMS or MMS to US recipients from standard 10-digit local numbers, and that it has two parts: brand registration and campaign registration.

Fixing 30034 step by step

Confirm the brand shows approved, then confirm the campaign shows approved, then confirm the specific number you are sending from is attached to that campaign. It is common to buy a new number after registration and forget that it needs to be associated. If everything is approved and the number is attached, the remaining variable is time, so wait the documented 24 hours before concluding something is broken. If the registration itself was refused, your problem is upstream and belongs to the A2P 10DLC rejection guide rather than this one.

Fixing 30035

Error 30035 is a wait state. HighLevel’s dictionary describes it as A2P registration or deregistration still processing, and advises roughly 24 hours. The mistake to avoid is sending test volume during the wait, which produces a pile of failures that muddy your logs and tempt you into changing settings that were correct.

Fixing 30033

Error 30033 is the serious one. Per Twilio’s documentation, the campaign is suspended, either directly or because its parent brand is suspended, and typical reasons include campaign-to-traffic mismatch, spam, excessive complaints and illicit content. If the brand is suspended, every linked campaign is suspended too, and the campaign will not recover until the brand issue is fixed. HighLevel’s instruction is to contact support to review the suspension reason. Do not send similar traffic through a different campaign in the meantime.

What does error 30032 mean for toll-free numbers?

Error 30032 means the toll-free number you sent from is not verified. HighLevel states that only numbers with Verified (Approved) status can send SMS or MMS to US and Canadian recipients, and that unverified sends return error 30032.

HighLevel’s Toll-Free Number Verification Guide lists four statuses. Restricted (Unverified) is blocked, Pending Verification is blocked while the request is under review, Verified (Approved) is allowed, and Rejected is blocked until you review the reason and resubmit or appeal. Twilio’s 30032 page gives the enforcement date: traffic from unverified toll-free numbers in Restricted or Pending status has been blocked since January 31, 2024.

What the verification form needs

According to HighLevel, gather the end business’s legal name (not the agency or reseller), a live public website or business social profile, a physical address, contact information, a use-case description, evidence of recipient consent with a public URL, representative sample messages and an estimated monthly volume. HighLevel also notes that a business tax ID or EIN is not required to complete toll-free verification, which is a real structural difference from 10DLC brand registration. Each toll-free number needs its own submission.

The timeline is the trap

HighLevel says review takes up to four to six weeks and that approval timing is not guaranteed. That is the single most important number for planning. If a campaign depends on a toll-free number and verification has not been submitted, the campaign cannot launch on schedule, and no amount of troubleshooting changes that. Submit early, and do not test production messaging while the status is Pending or Rejected. HighLevel also warns that applicable messaging charges can still apply to accepted delivery attempts, so failed test sends are not free.

How do I isolate whether it is the number, the content or the recipient?

Run a three-way test send. Send a plain message from the failing number to your own handset, send the failing content from a different registered number to your own handset, and send a plain message from the failing number to a second, known-good recipient. The pattern of results tells you which of the three variables is at fault.

This protocol works because a failed message has exactly three moving parts: the sender, the body and the destination. Change one at a time and you can separate them. Keep the tests to a handful of messages total; the goal is diagnosis, not volume, and heavy test traffic from a suspect number can itself look like the behavior you are trying to avoid.

Reading the three tests

Test Result Conclusion
Plain text, failing number, your handset Fails The number is the problem: registration, capability or suspension
Plain text, failing number, your handset Delivered The number is fine; look at content or the specific recipient
Failing content, different registered number, your handset Fails The content is the problem: filtering, links, opt-out language
Plain text, failing number, second recipient Delivered The original recipient is the problem: opt-out, bad number, landline

Note that a plain message is deliberately short and free of links, so it strips the content variable. If a plain text delivers and the real message does not, bisect the real message: remove the link, then the emoji, then the promotional phrasing, one change per test. HighLevel’s own advice for error 30008 is to test a shorter, simple message, which is the same bisection idea applied to a generic failure.

How do I fix opt-out and DND errors like 21610 and 30004?

Error 21610 means the recipient unsubscribed or Do Not Disturb is enforced for that contact, and the message is blocked deliberately. The compliant fix is to leave it blocked until the recipient opts back in, for example by replying START, which is what both HighLevel and Twilio’s error 21610 documentation advise.

Twilio’s page adds a cause that surprises people: a phone number recently reassigned to a different person can also trigger it, because the opt-out belongs to the number. The suggested solutions are to remove the contact, request that they reply START, and verify you hold documented consent. Error 30004 is broader. HighLevel’s error article describes it as destination blocked or unavailable and tells you to check the contact’s SMS DND status; the dictionary lists carrier filtering or a Do Not Call registry match as causes. For 30004, look at the contact’s DND settings first, then at whether the number is on a national registry.

Do not clear a DND flag or delete an opt-out tag to make the error disappear. That converts a blocked send into an unauthorized one. The Telephone Consumer Protection Act is the US federal framework the FCC administers for consent to automated calls and texts, and consumer opt-out requests are a core part of it. This article is operational guidance, not legal advice; have counsel review your consent and opt-out flows.

Automate the cleanup

The Messaging Error Code SMS trigger starts a workflow when a message fails with a code you select. Configure it by choosing Messaging Error - SMS in the trigger dropdown, naming it, and filtering to specific codes. HighLevel’s example is filtering 30007 to tag or remove affected contacts before the next campaign. A good starting set of workflows: tag on 21610 and 30004 so those contacts are excluded from campaigns, tag on 30005, 21211 and 21614 for data cleanup, and alert an operator on 30033, 30034 and 30002 because those are sender-level problems that affect everyone. If your automation depends on this trigger firing, the workflow troubleshooting guide covers what to check when a trigger does not run.

What do 21211, 21614, 30003, 30005 and 30006 mean for a bad recipient number?

These codes all say something is wrong with the destination. 21211 means the To number is invalid, 21614 means it is not a valid mobile number, 30005 means the number is inactive or does not exist, 30006 means a landline or unreachable carrier, and 30003 means the handset is temporarily unreachable.

Twilio’s 21211 documentation lists the usual causes: missing plus sign or country code, dashes or spaces, wrong digit count, and using the same number for To and From. The fix is E.164 formatting, meaning a plus, the country code and the subscriber number with no punctuation, so (555) 123-4567 becomes +15551234567. In the US that is +1 followed by ten digits. Twilio’s 21614 page adds that landlines and unusual formats such as IoT numbers can trigger it and suggests verifying the line type with a lookup.

Which of these are worth retrying

Only 30003 is a retry candidate. Twilio’s 30003 page says it usually happens when the device is powered off, has no service, cannot receive SMS or is otherwise temporarily unreachable, and recommends retrying. The others are data problems. Twilio’s 30005 page describes an unknown number that may no longer exist, and 30006 describes a landline or unreachable carrier. Retrying those wastes money and, at scale, damages your sending profile. If a contact fails with 30003 across several attempts on different days, treat it as dead.

Line type and list hygiene

Landlines are the quiet drain on most lead lists, because forms collect whatever number the person types. HighLevel’s dictionary maps 21635 and 30006 to landline destinations and says to use another SMS-capable number, or contact support if you know the number is mobile. The practical prevention is to validate at capture: format numbers to E.164 on the form, and where possible verify line type before adding the contact to an SMS sequence. Segment and clean the list by error history, so a contact who failed with 30005 once is not messaged again next month.

What do 21606, 21661, 21612 and 21408 mean when the sender is the problem?

These are number-type and routing errors. 21661 and 21606 mean the From number is not SMS-capable or is not valid for the destination, 21612 means the To and From combination cannot be used, and 21408 means messaging to that region is not allowed on the account.

HighLevel’s dictionary says for 21661 to purchase an SMS-capable number from the Phone Numbers settings, and for 21606 to verify SMS capability and use an active number owned by the sub-account. The most common cause is a number that was bought or ported for voice only, or one attached to the wrong sub-account. For US-only senders, 21408 usually means a contact record carries a non-US country code by accident, and the fix is to confirm the destination is one you intend to reach. Twilio’s 21408 page explains it as messaging being restricted for a destination and, for regulated destinations, not something to retry expecting geo settings to restore delivery.

If your account runs many client sub-accounts, this family is a good reason to keep numbers and registrations organized per client. The sub-accounts guide covers how numbers, brands and settings are scoped, which is where mismatches tend to start.

Why did my GoHighLevel text say delivered but never arrive?

A delivered status means the carrier network accepted the message; it does not guarantee the person saw it. Delivered-but-not-received is a real category, and it usually comes from filtering that happens after acceptance, handset conditions, or a blocked or opted-out state on the recipient’s side.

HighLevel’s own troubleshooting article says delivery depends on consent, content, filtering, DND, opt-outs and recipient status. Because carriers can filter silently, run the test-send protocol from earlier: send the same content to a known handset on the same carrier as the missing recipient, ask whether it appears in the message thread or in a spam or filtered folder, and compare with a plain message. If the plain message arrives and the real one does not, treat it as a content problem even though no 30007 was returned.

What the status trail cannot tell you

A status of delivered does not prove reading, and a status of sent does not prove delivery. If a lead says they never got your text, do not assume they are wrong. Check the message content for triggers, check whether the contact ever replied STOP, and check whether the number is a valid mobile that belongs to the person. Then ask them to save the number as a contact and reply, which also creates an inbound message and helps with future delivery in practice, though that is practitioner experience rather than a documented rule.

How do message segments and GSM-7 versus UCS-2 encoding cause failures?

A text message is billed and sent in segments, and the encoding determines how many characters fit in each. A message in plain GSM-7 fits 160 characters in a single segment or 153 per segment when concatenated, while a message containing any UCS-2 character fits 70 characters or 67 per segment.

The numbers come from Twilio’s SMS character limit documentation. Characters that force UCS-2 include emojis, non-Latin scripts, accented Latin letters and smart quotation marks. One such character switches the entire message to UCS-2, which can double the segment count for a long message. HighLevel’s pricing is per segment, and the pricing guide documents a rate of $0.00747 per segment for US and Canada SMS as of HighLevel’s September 1, 2026 billing guide.

Characters per SMS segment by encoding GSM-7 single segment 160 characters, GSM-7 concatenated 153 characters per segment, UCS-2 single segment 70 characters, UCS-2 concatenated 67 characters per segment. Source: Twilio SMS character limit documentation. GSM-7 single GSM-7 multipart UCS-2 single UCS-2 multipart 160 153 70 67
Characters that fit per segment. One emoji drops a 160-character message to the 70-character UCS-2 limit. Source: Twilio, SMS character limits.

Why this matters for delivery, not only cost

HighLevel’s troubleshooting article lists message length within carrier limits as a check, and for error 30008 Twilio’s documentation lists message length and character encoding problems among the possible causes. The pragmatic rule is to test a shorter, plain-text version when you meet an unexplained 30008. Replace smart quotes pasted from a word processor with straight quotes, remove emojis from templates that fail without another explanation, and keep mission-critical messages in a single GSM-7 segment where you can.

What are the throughput limits and daily caps by A2P trust score?

Speed and volume are set by your brand’s Trust Score, which is a number from 0 to 100 assigned during secondary vetting of a Standard Brand. HighLevel’s throughput article gives message-per-second figures by tier, and a separate daily cap applies for T-Mobile.

Total SMS messages per second by Trust Score tier (Standard Brand)

Score 75-100
225 MPS
Score 50-74
120 MPS
Score 1-49
12 MPS

Total SMS messages per second toward the major US networks by Trust Score tier, from HighLevel's message throughput and trust scores article (2026). The same article lists 12 total MPS for Trust Score 0 and low-volume Standard Brands.

Per HighLevel, the 225 figure breaks down as 75 per second to each of AT&T, T-Mobile and Verizon, the 120 figure as 40 per second each, and the 12 figure as 4 per second each. The article does not specify daily message caps and does not publish opt-out or error-rate thresholds that trigger throttling. Treat any third-party number for those as unverified.

Daily cap: error 30023

HighLevel’s dictionary defines 30023 as the daily message cap reached, meaning the maximum daily volume for the brand was exceeded, and says to pause sending and contact support if the limit is unexpected. Twilio’s 30023 page states that the cap applies to T-Mobile traffic, is based on the brand’s Trust Score, resets at midnight Pacific Time, and can be shared across every platform registered under the same EIN. That last detail explains a surprising number of unexplained cap hits: another tool sending under the same EIN consumes the same allowance. Twilio’s 30027 page adds that exceeding 200,000 segments a day toward T-Mobile requires a Special Business Review. Those platform-specific details come from Twilio, so confirm your own limit in your registration details.

What to do when you hit a cap

Pause, do not retry the overflow in a loop, and prioritize. Send time-sensitive transactional messages such as appointment confirmations before promotional blasts, and spread large sends across days. If a campaign needs to reach a big list quickly, the Trust Score is the lever, which means the brand data quality covered in the A2P rejection guide matters for speed as well as approval.

How big can an MMS be and why do picture messages fail?

Picture messages fail when the media is too large or the destination cannot receive MMS. HighLevel documents two related errors: 11751 for media size exceeded and 30011 for MMS unsupported by the destination or region.

HighLevel’s error article says to compress the attachment or send a hosted link and keep files under roughly 500 KB for 11751. Its troubleshooting article separately says MMS attachments should be under 5 MB. Because the two figures differ, the safe working rule is to aim for the smaller number and treat 5 MB as an upper limit, not a target. For 30011, the fix is to send text-only SMS or use another channel. Error 11200, which HighLevel lists as an HTTP retrieval failure, points to a branded-domain configuration problem in the Business Profile, so if a media link fails to load, check that setting before touching the file.

A useful default is to compress images before upload, avoid video in campaigns that need broad deliverability, and put a link to a hosted asset on a branded domain when the file is large. That also keeps the message text under the segment limits discussed earlier.

What does a blocked campaign actually cost?

A blocked SMS campaign costs far more in lost leads than in wasted message fees. The fees on failed sends are small; the real loss is the leads who never got the follow-up during the days the campaign was down.

The example below is illustrative. Every input is an assumption you should replace with your own numbers, and none of the rates is a benchmark from a study.

Illustrative inputs (edit these)

Input Illustrative value
New leads per day who rely on SMS follow-up 40
Share of those leads lost if the text never arrives 25%
Value per lead $150
Messages sent per day 300
Days blocked before the fix lands 6
SMS rate per segment $0.00747

The lost-lead formula is leads per day, times the share lost, times value per lead, times days blocked: 40 x 0.25 x $150 x 6 = $9,000. The message-fee side is 300 messages x 6 days x $0.00747 = about $13.45, and only if each message is one segment and billed. The fee figure uses the per-segment rate documented in the pricing guide, and HighLevel’s toll-free guide warns that charges can still apply to accepted delivery attempts. The ratio is the point: in this example the lost revenue is several hundred times the message cost.

Illustrative lost-lead value by days blocked Illustrative example only. With 40 leads per day, 25 percent lost, and 150 dollars per lead, blocked for 1 day costs 1,500 dollars, 3 days 4,500 dollars, 6 days 9,000 dollars, 14 days 21,000 dollars. Inputs are assumptions, not benchmarks. 1 day 3 days 6 days 14 days $1,500 $4,500 $9,000 $21,000 Illustrative: 40 leads/day x 25% lost x $150 per lead
Illustrative only. The inputs are assumptions chosen to show the arithmetic; substitute your own lead volume, loss rate and lead value.

This is why the triage order matters. Every extra day spent guessing costs roughly $1,500 in this example. A structured diagnosis that finds the family in minutes and the fix in an hour is worth more than any single setting you might change.

How do I prevent SMS delivery failures in the first place?

Prevention is registration, clean consent, disciplined content and a steady sending pattern. Most of the failures in this guide are avoidable with a handful of habits set up before the first campaign.

Register and verify correctly

For 10DLC, complete brand and campaign registration and attach every sending number to the campaign, as covered in HighLevel’s US Phone Number Registrations article. For toll-free, submit verification well ahead of launch, given the four-to-six-week window HighLevel states. Write campaign sample messages that match what you will actually send, because a mismatch between registered use case and real traffic is a named cause of campaign suspension in Twilio’s 30033 documentation.

The industry baseline for US messaging comes from the carriers’ trade association. CTIA’s Messaging Principles and Best Practices are the reference document for consent, opt-out and prohibited content, and it is the industry reference for what acceptable messaging looks like. In practice that means documented opt-in, a working STOP mechanism, and no content in the categories the industry abbreviates as SHAFT: sex, hate, alcohol, firearms and tobacco. Note that the A2P rejection guide covers how SHAFT and disallowed use cases affect registration itself, so a campaign in those categories will not just be filtered but often refused outright.

Use a branded domain for links instead of a public shortener, which HighLevel specifically recommends, and use a link that resolves to a real page describing your business. Keep the message identifying you as the sender and include STOP instructions.

Number warm-up and pacing

HighLevel’s troubleshooting article lists ramp-up periods and daily send caps among the account checks, which is consistent with the practitioner advice to start new numbers with modest volume and increase steadily. Sudden jumps from near-zero to large blasts from a new number look like spam behavior. The specific ramp schedule is not published by HighLevel in the articles reviewed, so any exact schedule is judgment; start small, watch the error codes, and increase only while they stay clean.

Monitor continuously

Build a monitoring workflow using the Messaging Error - SMS trigger, review the Conversations status for failures weekly, and keep the list clean. The trigger recognizes 23 error codes per HighLevel, which is enough to tag every failure family described here. Teams that want this wired into a broader build can look at GoHighLevel implementation services or estimate scope with the implementation cost guide.

Where do I read the status and error code inside GoHighLevel?

There are three places, and each answers a different question. Conversations shows the status and code for an individual message, the LC Phone error dictionary explains what a code means, and the Messaging Error - SMS workflow trigger lets you act on codes automatically.

In Conversations, open the contact and look at the message bubble for the delivery status and, for a failure, the error code. HighLevel’s help center hosts the SMS Error Codes and Fixes article and the error dictionary for lookups. For patterns across many messages, use the workflow trigger described above so failures are tagged and routed rather than found by hand. Menu labels and paths change between HighLevel releases, so verify exact navigation in your own account rather than relying on a screenshot from an older tutorial.

If none of the documented fixes work, HighLevel’s guidance for several codes is to contact support with examples. Twilio’s error pages, which describe the same carrier-level codes, suggest collecting at least three recent failing message identifiers for support. Gathering three failed message examples with their codes and timestamps before you contact support shortens the exchange considerably.

Sources

More guides

Related reading

FAQs

Why is my GoHighLevel SMS not sending?

Read the error code in the message status first. Codes 30032, 30033 and 30034 point to registration or verification, 30007 to carrier filtering of the content, 21610 to an opted-out recipient, and 21211, 21614 or 30005 to a bad destination number. The code identifies the cause, so fix that cause before retrying.

What does GoHighLevel error 30007 mean?

Error 30007 means the message was filtered, either by the platform's spam detection or by a carrier. HighLevel's dictionary says to ensure compliance with messaging policies, and its filtering guide lists missing consent, non-compliant unsubscribe wording, URL shorteners and obfuscated links as triggers. Fix the content or consent problem before resending.

What does error 30034 mean in GoHighLevel?

Error 30034 means the number you sent from is not linked to an approved A2P 10DLC campaign. Confirm the brand and campaign show approved, that the number is attached to that campaign, and allow about 24 hours after approval, as HighLevel's error dictionary advises, before sending again from that number.

What is error 30032 and how do I fix it?

Error 30032 means the toll-free number sending the message is not verified. HighLevel says only numbers with Verified (Approved) status can send SMS or MMS to US and Canadian recipients, and that review can take up to four to six weeks. Submit or correct the toll-free verification and wait for approval.

Why does GoHighLevel say 21610 recipient unsubscribed?

Error 21610 means the recipient opted out, usually by replying STOP, or has Do Not Disturb enforced on the contact. Sending is blocked by design. The recipient must opt back in, typically by replying START. Do not remove the opt-out flag manually, because that would send text without valid consent.

What is the difference between error 30003, 30005 and 30006?

Error 30003 means the handset is unreachable, such as powered off or out of service. Error 30005 means the number is unknown and may no longer exist. Error 30006 means a landline or an unreachable carrier. Retry only 30003; correct or remove numbers for 30005 and 30006, and verify the line type.

Why does my GoHighLevel text say delivered but the person never got it?

A delivered status only means the carrier accepted the message; it is not proof the handset displayed it. Silent carrier filtering, a full or off handset, blocked senders or a reply of STOP earlier can all sit behind it. Test-send to a known handset on the same carrier and compare content.

How many text messages can I send per day in GoHighLevel?

It depends on the brand's Trust Score. HighLevel's throughput guide gives speed in messages per second by score tier, while a separate daily cap applies to T-Mobile, and error 30023 means the daily cap was reached. HighLevel's guide does not publish a single daily figure, so check your brand's limit in your registration details.

How big can a picture or MMS be in GoHighLevel?

HighLevel's troubleshooting guide says MMS attachments should stay under 5 MB, while its error reference for code 11751 advises compressing media or sending a hosted link, keeping files under roughly 500 KB. Because the two figures differ, treat 500 KB as the safe target and 5 MB as the ceiling.

Do emojis make a GoHighLevel text cost more?

Yes, they can. A single emoji or accented character forces the entire message into UCS-2 encoding, which fits 70 characters in one segment instead of 160, per Twilio's documentation. GoHighLevel bills SMS per segment, so a long emoji-laden message can multiply cost and raise the chance of failure.

Can I keep retrying a failed text in GoHighLevel?

Only for transient errors like 30003. HighLevel's troubleshooting guidance says to resolve the underlying issue before retrying, since repeated failures without a fix can trigger account restrictions. For filtering, registration and opt-out errors, resending unchanged content is more likely to lower deliverability than to succeed.

How do I automatically clean up numbers that fail in GoHighLevel?

Use the Messaging Error - SMS workflow trigger. It starts a workflow when a message fails with a chosen error code, so you can tag or remove contacts with codes like 30005 or 21211 before the next send. HighLevel's guide says the trigger recognizes 23 error codes.

Want a second opinion on your setup?

A free 30-minute call with an engineer. A written read on your current setup, whether or not you hire us.