Twilio
A Twilio SMS accepted with HTTP 201 can still fail to deliver. Pull the message from Messaging Logs and check the status and error code for the root cause.
Updated Jul 1, 2026
The short answer
"Twilio send message not working" isn't an error code; it's the symptom of an SMS that was accepted (HTTP 201/queued) but never reached the handset. To fix it, pull the message in Twilio's Messaging Logs and read its final status and error code. The usual culprits are A2P 10DLC registration gaps (error 30034), carrier filtering (30007), recipient opt-out, or invalid/unreachable numbers.
"Twilio send message not working" is not a specific Twilio error code. It is the catch-all symptom developers report when the API call appears to succeed but the recipient never sees the text. The key to fixing it is understanding that a successful API response does not mean the message was delivered — and then reading the message's final status and error code in Twilio's logs.
When you create a message, Twilio returns HTTP 201 Created with an initial status of queued (or accepted if you're sending via a Messaging Service without an explicit From number — it moves to queued once Twilio assigns a sender from the pool). Per Twilio's Message Resource docs, that only means Twilio accepted your request and created the Message resource — it is not proof of delivery. The message then moves through a lifecycle:
accepted / queued – accepted by Twilio, waiting to be sent (or assigned a sender)sending → sent – the nearest upstream carrier accepted it (still not on the phone)delivered – Twilio received a carrier delivery receipt (success)undelivered – the carrier returned a delivery receipt saying it was not deliveredfailed – the message failed before/at the carrier; an error code is attachedSo a message stuck at sent, undelivered, or failed is the real "not working" case. sent ≠ delivered.
GET /Messages/{Sid} via the REST API).3xxxx or 6xxxx error code that names the exact cause. If there is no log entry at all, the request never reached Twilio — check your application code, credentials, and that you are reading the correct (live vs. test) account. For a walkthrough of this process, see Twilio's debugging common issues guide.The error code tells you which fix below applies.
Error 30034 — US A2P 10DLC, message from an unregistered number. Twilio phased in blocking through summer 2023, with full enforcement from September 1, 2023 onward: every SMS/MMS to a US number sent from a +1 10DLC long code must go through an approved A2P 10DLC Campaign (Twilio error 30034). Fix: complete Brand + Campaign registration, and make sure the sending number is in the Sender Pool of the Messaging Service tied to that approved Campaign. (Sole Proprietor Campaigns allow only one 10DLC number.) This is the single most common reason US messages silently fail today.
Error 30007 — message filtered. The message was blocked by Twilio or the carrier as spam/phishing/fraud or for a policy/carrier-rule violation (Twilio error 30007). Fix: review content against Twilio's Messaging and Acceptable Use Policies, ensure your traffic is registered, and if you believe it is compliant, gather 3+ Message SIDs and contact Twilio Support.
Recipient opted out (STOP). Per Twilio's debugging guide, a recipient who replied STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT to your number is blocked; further messages return an error and aren't charged. Fix: the recipient must reply START or YES to that same number to opt back in — you cannot remove the block from your side.
Invalid, unreachable, or geo-blocked number. Confirm the To number is valid E.164, active, has reception, and isn't roaming internationally. International/short-code routes have carrier limitations, and your account's Geo Permissions must allow the destination country.
Status callbacks "missing." If you rely on a StatusCallback webhook to detect failures and see nothing, the message may have failed before a sender was selected, or your callback URL is localhost/non-HTTPS/firewalled — Twilio silently drops undeliverable callbacks. Verify in the Messaging Logs directly rather than trusting webhook silence.
If you have done all of the above and a delivered/undelivered mismatch persists, collect at least three Message SIDs and open a ticket with Twilio Support.
References
FAQ
No. HTTP 201 with an initial status of 'queued' (or 'accepted' if sent via a Messaging Service without an explicit From number) only means Twilio accepted your request and created the Message resource. Delivery is confirmed only when the status becomes 'delivered' after Twilio receives a carrier delivery receipt. A message can be 'sent' (accepted by the carrier) yet still end up 'undelivered'.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.