SMS error codes are the diagnostic labels a messaging provider attaches to a message that failed or was not delivered, and the 300xx series (30003, 30004, 30005, 30006, 30007, 30008) covers the failures organizations see most often: unreachable handsets, unknown numbers, landlines, carrier filtering, and blocked recipients. Each code points to a different root cause and a different fix. This reference explains the widely documented codes in one lookup table, then goes deeper on the codes that cause the most confusion.

One caveat before the table: error codes describe how a message failed, as reported back through the delivery chain, but carriers do not always disclose exact reasons, so some codes (30007 and 30008 especially) are umbrella categories rather than precise diagnoses. Treat them as the start of an investigation, not the end.

Quick Lookup Table: Common SMS Error Codes

CodeMeaningMost likely causeHow to fix it
30003Unreachable destination handsetPhone switched off, out of coverage, or temporarily disconnected from the networkRetry later; if the number fails repeatedly over days, flag it for list hygiene
30004Message blockedThe recipient, their carrier, or a device setting is blocking messages from your number or from short codes generallyConfirm the recipient wants your messages and has not blocked the number; ask them to check device and carrier-level blocking
30005Unknown destination handsetThe number is invalid, disconnected, or no longer in serviceValidate the number; remove permanently unknown numbers from your list
30006Landline or unreachable carrierThe destination is a landline or a network that cannot receive SMSRemove landlines from SMS lists or reach them by voice; run a line-type lookup before sending
30007Message filtered by the carrierContent or sending pattern triggered spam filtering, or the traffic is unregisteredComplete 10DLC or toll-free registration, review content for filtering triggers, and warm up sending volume
30008Unknown errorThe carrier reported a failure without a specific reasonRetry; if it persists across many messages to one carrier, escalate to your provider with message IDs
21610Recipient has opted outThe contact previously replied STOP (or a similar keyword) to your numberDo not attempt to resend; the contact must text START to resubscribe voluntarily

Providers also report broader undelivered categories in the 4-series ranges (styled like 4720x by some platforms), which group failures such as carrier rejections and network unavailability at a coarser level. The exact numbering differs by provider, so always check your own platform's error dictionary; the underlying causes map closely to the 300xx categories above.

30003: The Phone Is Unreachable

A 30003 means the network could not reach the handset at delivery time: the phone was powered off, out of coverage, in airplane mode, or the subscriber's service was suspended. Nothing is wrong with your message or your number.

The fix: patience first. Carriers hold and retry messages for a limited validity period, and many 30003 failures resolve on a later attempt. If a specific number returns 30003 consistently across days and campaigns, the line is likely dormant; move it out of your active list so it stops dragging on your delivery metrics.

30004 and 21610: Blocked vs Opted Out

These two codes are cousins and worth distinguishing carefully. A 30004 (message blocked) means something between you and the handset refused the message: the recipient may have blocked your number on their device, their carrier may block certain traffic classes, or a premium and short code blocking setting on their account may be the culprit. A 21610 means something more specific: the recipient replied STOP to your number, your platform recorded the opt-out, and it is now correctly refusing to send to them.

The fix for 30004: if the contact is someone who wants your messages (a patient or a parent, for example), contact them another way and ask them to check their device block list and their carrier's messaging settings. The fix for 21610: there is not one, and that is by design. Consent revocation must be honored under the TCPA (47 U.S.C. 227) and the FCC's rules at 47 CFR 64.1200, and the CTIA Messaging Principles and Best Practices require that STOP always work. The only valid path back is the contact voluntarily texting START. Never manually re-enable an opted-out contact.

30005 and 30006: Bad Numbers and Landlines

A 30005 (unknown destination) means the number itself is the problem: mistyped at signup, disconnected since, or recycled by the carrier. A 30006 (landline or unreachable carrier) means the number is real but cannot receive SMS, most often because it is a landline or an unmessagable VoIP line.

The fix: hygiene and lookups. Validate numbers at the point of collection (a simple format check catches many typos), run a line-type lookup on your list so landlines are routed to voice instead of SMS, and suppress numbers that return 30005 repeatedly. High rates of these errors do more than waste money: sustained sending to invalid numbers looks like a purchased or scraped list, which is exactly the pattern that draws filtering onto your whole number.

30007: Carrier Filtering, the Code That Deserves Its Own Investigation

A 30007 means a carrier or its filtering partner evaluated your message and refused to deliver it. This is the most consequential code on the list because it is rarely about one message: it signals that something about your registration, content, or sending pattern tripped the spam defenses that United States carriers apply to all application-to-person traffic.

The usual suspects, in rough order of frequency:

  1. Unregistered or misregistered traffic. A2P messages on local 10-digit numbers must be registered through The Campaign Registry, and toll-free numbers must pass toll-free verification. Unregistered traffic is filtered aggressively, and traffic that does not match its registered campaign description gets flagged too.
  2. Content triggers. Public URL shorteners, ALL-CAPS urgency, certain regulated topics, and messages that resemble common scam formats all raise filtering risk.
  3. Pattern triggers. Sudden volume spikes from a quiet number, identical messages fanned to large lists, and high complaint or opt-out rates.
  4. Reputation. A number or campaign with a history of filtering events gets less benefit of the doubt on close calls.

The fix: verify registration first, since it is the most common cause and entirely within your control. Then review the failing message against known content triggers, use branded links rather than generic shorteners, and ramp volume gradually. Our guide to carrier filtering covers how the filtering systems work and how to stay on the right side of them.

30008: The Unknown Unknown

A 30008 is the honest shrug of the error taxonomy: the carrier reported a delivery failure without giving a reason, or gave a reason that does not map to a more specific code. Isolated 30008s are noise; every messaging program sees a few. A cluster of 30008s concentrated on one destination carrier or one time window usually indicates a temporary network-side issue.

The fix: retry the failures, and if the pattern persists, open a ticket with your messaging provider and include message IDs, timestamps, and destination carriers so they can trace the failures upstream.

Reading Error Codes Like an Operator

Individual codes diagnose individual messages, but the real value is in the aggregate. Watch the ratio of each error class across every campaign: rising 30005s mean your collection forms need validation, rising 30007s mean a registration or content problem is brewing, and rising 21610s right after a campaign mean the content or frequency is pushing subscribers away. Error codes are also only half the picture, because a message can be filtered silently with no error at all; for the full diagnostic method, see our companion guide on why text messages fail to deliver.

Frequently Asked Questions

What does error 30007 mean on a text message?

It means a carrier's filtering system blocked the message as suspected spam or policy-violating traffic. The most common root causes are unregistered A2P traffic, content that resembles spam patterns (generic link shorteners, urgent all-caps phrasing), and sudden volume spikes. Fix registration first, then content, then sending patterns.

What is the difference between error 30003 and 30005?

30003 means the handset is temporarily unreachable (off, out of coverage), so retrying later often succeeds. 30005 means the destination is unknown to the network (invalid, disconnected, or out of service), so retrying rarely helps and the number should be validated or removed.

Why am I getting error 21610 when the contact says they want my texts?

A 21610 means your platform has an opt-out on record for that number, usually from a STOP reply, sometimes sent accidentally or from a shared device. The contact must resubscribe themselves, typically by texting START to your number. Manually overriding an opt-out record is a compliance violation, not a workaround.

Do SMS error codes mean the same thing on every platform?

No. The 300xx and 21610 codes described here are widely used and documented by major messaging providers, but numbering schemes vary between platforms, and some report broader undelivered categories instead. Always confirm meanings in your own provider's error code dictionary before acting on a code.

Can a text message fail without any error code?

Yes. Silent filtering, where a carrier accepts a message and then discards it without a failure report, produces a message that shows sent or even delivered but never arrives. That is why deliverability troubleshooting combines error code analysis with real-handset testing across carriers.

Stop Decoding Errors and Start Reaching People

FRANSiS monitors delivery results across your campaigns, keeps registrations and opt-outs handled automatically, and its AI Powered Helper manages the two-way conversations that healthy, well-registered sending makes possible. Contact us to get your deliverability on solid ground.