All posts

Twilio SMS Error Codes 30003 to 30008: What They Mean for Your List

··9 min read

Twilio's SMS error codes fall into three groups. List problems you can catch before sending: 21211 (invalid number format), 21614 (not a valid mobile number), 30006 (landline or unreachable carrier), plus 21610 (the recipient opted out). Sending and compliance problems that no list cleaning fixes: 30007 (message filtered), 30034 (unregistered US 10DLC number) and often 30004 (message blocked). Handset problems that may be temporary: 30003 (unreachable handset), 30005 (unknown handset) and 30008 (unknown error). Act on the group, not just the number.

This guide quotes Twilio's own error documentation for each code, says what each one tells you about your list, and gives a pre-send routine that prevents the list-level errors.

First, failed or undelivered?

Every Twilio message ends with a status. Two of them carry error codes. Per Twilio's Message resource documentation:

  • failed: "The outbound message failed to send." It never left Twilio.
  • undelivered: Twilio "received a delivery receipt indicating that the outbound message was not delivered." It left Twilio and a carrier reported failure.

Read the status together with the code. A list problem and a carrier problem can both end as undelivered, so the code is what tells them apart.

The codes at a glance

Code Twilio's title Group What to do with the number
21211 Invalid 'To' Phone Number List Fix the format or remove
21614 'To' number is not a valid mobile number List Remove from SMS; keep for calls if valid
30006 Landline or unreachable carrier List Don't resend; remove from SMS
21610 Attempt to send to unsubscribed recipient Consent Suppress until they text START
30005 Unknown destination handset Handset or list Retry once; suppress if it repeats
30003 Unreachable destination handset Handset Retry later
30008 Unknown error Handset or route Retry later; investigate patterns
30004 Message blocked Compliance or recipient Check opt-out, content and sender
30007 Message filtered Compliance Fix content, consent and registration
30034 US A2P 10DLC - Message from an Unregistered Number Compliance Finish 10DLC registration

Titles are from Twilio's error pages, checked on 13 October 2026.

List problems you can prevent

21211: Invalid 'To' Phone Number

Twilio's 21211 page says the number "is not a valid phone number or is incorrectly formatted". The listed causes include a missing + or country code, separators such as spaces and dashes, and too many or too few digits for the country.

The fix is formatting. Convert every number to E.164: a plus sign, the country code, then the subscriber number, with no separators. Our E.164 format guide has examples by country. If a number still fails after formatting, it does not fit its country's numbering plan, and it should leave the list.

21614: 'To' number is not a valid mobile number

Per Twilio's 21614 page, Twilio does not recognise the number as a valid mobile number. It is "likely a landline or otherwise invalid". Twilio suggests checking with a lookup that the number is not a landline.

These numbers may be fine for calls. Keep them in your CRM, but out of SMS sends.

30006: Landline or unreachable carrier

Twilio's 30006 page says "the destination number cannot receive your message." The first listed cause is a landline. Twilio's advice is direct: check the line type before sending, and don't resend the same SMS to a number identified as a landline.

In most countries the number's prefix shows whether it is a mobile. In the US and Canada it does not, because mobiles and landlines share area codes and numbers can be ported. Our explainer on mobile vs landline lookup covers why. For North American lists, you need a live line-type lookup.

21610: Attempt to send to unsubscribed recipient

Twilio's 21610 page says the recipient has opted out, usually by replying STOP, and you cannot message them until they opt back in with START. Twilio also lists "The phone number was recently reassigned to a different person" as a cause.

Suppress the number in your own system too, not only in Twilio. If a number was reassigned, the person who consented is no longer at it. In the US, the FCC's Reassigned Numbers Database lets callers check whether a number was permanently disconnected after a given date. Our guide to the Reassigned Numbers Database explains when to use it.

Handset problems: retry once, then decide

30003: Unreachable destination handset

Twilio's 30003 page says the phone "can't be reached over the carrier network", usually because it is off, has no service, cannot receive SMS, or is temporarily unavailable. Causes include weak signal and roaming. Twilio also lists landlines and other unsupported line types, and for long codes or toll-free numbers, repeated failures may point to carrier filtering.

Treat a single 30003 as temporary. Retry once, later. If the same number fails repeatedly, check its line type and stop sending to it.

30005: Unknown destination handset

Per Twilio's 30005 page, "the destination number is unknown and may no longer exist." Other listed causes include a powered-off device and a landline. One of Twilio's suggested steps is to confirm the number is in E.164 format with the right country code.

Check the format first. A missing country code can make a valid number look unknown. If the format is right and 30005 repeats, suppress the number.

30008: Unknown error

Twilio's 30008 page describes a generic delivery failure reported without enough detail. Causes include handsets that are off or roaming, a problem with one carrier path, an alphanumeric sender ID the destination does not support, and message length or character encoding.

Look for patterns. If 30008 clusters on one carrier or country, it is a route or sender problem. If it hits scattered numbers once, retry later.

Compliance problems: the list is not the cause

30007: Message filtered

Twilio's 30007 page says the message was blocked by Twilio or by a carrier. Twilio may block messages that violate its Messaging Policy or Acceptable Use Policy. Carriers block abusive traffic and messages that break their rules.

A clean list does not lift this block. Check consent, content, links and sender registration. Our guide to why SMS delivery fails covers carrier filtering in more detail.

30034: Unregistered 10DLC number

Per Twilio's 30034 page, Twilio blocks messages to US numbers sent from a +1 10DLC number that is not tied to an approved A2P 10DLC Campaign. The fix is to complete Brand and Campaign registration and add the number to the Messaging Service linked to the approved Campaign.

Every message from that sender fails until registration is done. Pause the campaign; the list is fine.

30004: Message blocked

Twilio's 30004 page says the destination number is blocked from receiving the message. Causes span both groups: the recipient blocking you or opting out, a device that is off, a landline, and carrier or Twilio filtering. If the recipient opted out, Twilio notes that messages fail with 21610 until they send START or UNSTOP.

Check opt-out status first. If the number never opted out, treat 30004 like 30007 and review content and sender.

Collecting the codes for a whole campaign

Single errors are easy to read in the Console. For a campaign, you need every code in one table. Twilio's error pages note that delivery errors appear in three places: the Messaging logs, the ErrorCode field on the Message resource, and the StatusCallback requests Twilio sends to your server. If you set a status callback URL, store the phone number, status and error code from each callback. Then count codes per group. One table of counts tells you whether the next fix is the list, the sender or the content.

A pre-send routine that prevents the list-level codes

  1. Normalise to E.164. This removes most 21211 errors and some 30005s.
  2. Validate against the numbering plan. Drop numbers with the wrong length or an unused prefix for their country.
  3. Deduplicate after normalising. The same number written three ways becomes one row. See removing duplicate phone numbers.
  4. Look up the line type. Remove landlines from SMS sends to prevent 21614 and 30006. Twilio's own Line Type Intelligence returns types such as mobile, landline, fixedVoip and nonFixedVoip, and notes that a landline "usually can't receive SMS".
  5. Apply your suppression list. Every 21610 and every manual opt-out, across all senders.
  6. Check consent records and, in the US, reassignment for numbers collected long ago.

Steps 1 to 4 can run on a whole CSV in one upload. Our guide to validating phone numbers before an SMS campaign covers each step.

Worked example (illustrative numbers)

The numbers below are invented to show the triage, not taken from a real campaign.

A US retailer texts 10,000 numbers collected over three years. 640 messages come back with errors:

Code Count Group Action
21211 90 List Reformat; 70 pass on retry, 20 removed
30006 260 List Removed from SMS, kept for calls
21614 40 List Removed from SMS
21610 35 Consent Suppressed everywhere
30003 110 Handset Retried next day; 80 delivered
30005 60 Handset or list Format checked; 45 repeat and are suppressed
30007 45 Compliance Content with a shortened link reviewed

390 of the 640 errors (21211, 30006 and 21614) were list problems that format validation and a line-type lookup would have caught before the send. The 30007s needed a content fix. The 30003s mostly cleared on their own.

What validation can and cannot tell you

A phone check can confirm that a number fits its country's numbering plan, return it in E.164, and with a live carrier lookup, return the current carrier and line type. It cannot tell you that the handset is on, that the person on your list still uses the number, or that a carrier will accept your message. Treat it as a way to remove errors before sending, not as a delivery guarantee.

SimpleVerifier's phone number validator does single checks. On the Pro plan, $29.99 a month, bulk uploads and the API return E.164 format, country and the numbering-plan type. The Email + Phone plan, $49.99 a month, adds 5,000 live carrier lookups a month with the real line type (mobile, landline or VoIP) and carrier name, including US numbers. See pricing. If you are comparing lookup providers, our Twilio Lookup alternatives page lists the options.

The short version

Group Twilio errors before acting. 21211, 21614 and 30006 are list problems: fix the format, and look up line type to remove landlines before the send. 21610 is consent: suppress until the person opts back in. 30003, 30005 and 30008 can be temporary: retry once, then suppress numbers that keep failing. 30007, 30034 and most 30004s are about your sender, registration and content, and no list cleaning will fix them.

Common questions

What does Twilio error 30006 mean?

Twilio titles it 'Landline or unreachable carrier': the destination number cannot receive your message. The most common cause is a landline. Twilio's advice is to check line type before sending and not to resend the same SMS to a number identified as a landline.

What is the difference between Twilio errors 30003 and 30005?

30003 is 'Unreachable destination handset': the phone is off, out of coverage, roaming or cannot take SMS at the moment. 30005 is 'Unknown destination handset': the number is unknown to the carrier and may no longer exist. 30003 is often temporary; repeated 30005 errors suggest the number is gone.

How do I stop 30007 message filtered errors?

30007 means Twilio or a carrier filtered the message as spam or against policy. Check that your use case complies with Twilio's Messaging Policy and Acceptable Use Policy, that your sender is registered where required, and that your content matches what recipients agreed to receive. A cleaner list helps engagement but does not lift a content or registration block.

What is the difference between failed and undelivered in Twilio?

Failed means the message never left Twilio, for reasons such as queue overflow or account problems. Undelivered means Twilio handed it to a carrier and received a receipt saying it was not delivered. Both include an error code.

Can phone validation guarantee my SMS will be delivered?

No. Validation confirms the number fits its country's numbering plan, normalises it, and with a live lookup returns the line type and carrier. It cannot confirm that the handset is on, that the person still uses the number, or that carriers will accept your content.

Verify unlimited addresses for $29.99/month

Real SMTP mailbox checks. No credits, no per-email fees.

Get Started