SMS troubleshooting — delivery failures, error codes, and carrier filtering
When SMS messages fail to deliver, the cause can range from A2P registration issues to carrier filtering to simple character encoding problems. This guide provides a systematic approach to diagnosing and resolving SMS delivery issues in the HoopAI platform.
Cannot message this contact unless they reply START
21611
Max message queue
Exceeded queuing limit
Reduce concurrent sends
21612
Number not SMS-capable
The “From” number cannot send SMS
Use an SMS-enabled number
21614
Invalid mobile number
”To” number is not a valid mobile number
Verify and correct the phone number
21408
Permission not enabled
Account lacks SMS permissions for this destination
Enable capability in Settings > Phone Numbers or contact support
63018
Rate limit exceeded
Exceeded A2P throughput limit
Slow down sending; check trust score in Trust Center
Error code 21610 is a compliance-enforced block. Attempting to bypass opt-outs violates TCPA regulations and carrier policies, and can result in permanent number suspension and legal liability.
Go to Settings > Phone Numbers. Confirm the sending number shows a green Active status. If it shows Suspended or Pending, see the number suspension section below.
2
Check A2P registration status
Go to Settings > Phone Numbers > Trust Center. Both your brand and campaign must show Active status. If pending or rejected, messages from local numbers will be filtered or blocked.
3
Check SMS credits / account balance
Go to Settings > Billing and confirm your account has available balance. Messages will silently fail if your balance is zero.
4
Check the error code
Open the conversation thread and click on the failed message to see the error code. Cross-reference with the error code table above.
5
Verify the recipient's number
Ensure the phone number is valid, is a mobile number (not a landline), and includes the correct country code. US numbers should be 10 digits.
6
Check for DND/opt-out
Open the contact record and check if they have a DND flag or have previously replied STOP. Error code 21610 indicates an opt-out.
A “Delivered” status means the carrier accepted the message — but the recipient may still not see it.
Cause
Details
Carrier-side filtering
The carrier accepted the message but silently dropped it before final delivery. Common with unregistered campaigns or spam-like content
Handset issues
Recipient’s phone may be off, in airplane mode, or have a full SMS inbox
Wrong number format
Numbers missing the country code or with extra digits may route incorrectly
Carrier queuing
Some carriers queue messages during congestion and deliver later; wait 15-30 minutes
“Delivered” only confirms the carrier network accepted the message. It does not confirm the message reached the handset. This is a limitation of the SMS protocol, not the HoopAI platform.
When a contact replies STOP, they are automatically added to the DND list. To resubscribe:
The contact can text START, YES, or UNSTOP to your number
Or you can manually remove the DND flag from their contact record under Contact > DND Settings > uncheck SMS
Only remove DND manually if the contact has explicitly requested to resubscribe through another channel (email, phone call, in person). Removing DND without consent is a TCPA violation. Document the re-opt-in request.
SMS messages are sent in segments. The character limit per segment depends on the encoding:
Encoding
Characters per segment
When used
GSM-7
160 characters (single) / 153 (multi-part)
Standard English text, basic punctuation
Unicode (UCS-2)
70 characters (single) / 67 (multi-part)
Emojis, non-Latin characters, special symbols
A single emoji switches the entire message from GSM-7 to Unicode encoding, reducing your per-segment character limit from 160 to 70. A 160-character message with one emoji becomes 3 segments instead of 1, tripling your cost.
To check how many segments your message will use before sending, use a tool like twiliodevsupport.github.io/sms-counter to count characters and segments.
Large MMS files (over 1 MB) may fail to deliver on some carrier networks or may be heavily compressed. Keep images under 500 KB and videos under 1 MB for best results.
For large files or unsupported formats, upload the file to a hosting service and include a link in your SMS instead of attaching directly.
International SMS is significantly more expensive than domestic US messaging and has varying deliverability depending on the destination country. For high-volume international messaging, consider using a provider specializing in that region.
Why do my messages show 'Sent' but never 'Delivered'?
Some carriers do not return delivery receipts, so the status remains at “Sent.” This does not necessarily mean the message was not delivered — it means the carrier did not confirm delivery. This is common with some pre-paid carriers and MVNOs (smaller carriers). If the recipient confirms they received it, the message was delivered successfully.
Why am I being charged for multiple segments?
SMS messages longer than 160 characters (GSM-7) or 70 characters (Unicode) are split into multiple segments, each billed separately. Emojis switch the encoding to Unicode, which reduces the character limit per segment. See the character limits section above.
Can I send SMS to landline numbers?
No. Landline numbers cannot receive SMS or MMS. If you attempt to send to a landline, you will receive error code 30005 or 30006. Verify that your contact list contains mobile numbers only.
Why are my messages being filtered by T-Mobile?
T-Mobile has the most aggressive content filtering. Common triggers include: unregistered A2P traffic, URL shorteners (bit.ly), identical messages sent to many recipients, and sudden volume spikes. Ensure your A2P registration is active, use your own domain for links, personalize messages, and ramp up volume gradually.
How do I know if my number is blocked?
If messages consistently fail to recipients on a specific carrier with error codes 30004 or 30034, your number may be blocked by that carrier. Test by sending to numbers on different carriers. If only one carrier fails, the number is likely blocked on that network.
What is the difference between error 30003 and 30005?
Error 30003 means the destination is unreachable (phone is off, out of service area, or temporarily unavailable). Error 30005 means the number does not exist or is not capable of receiving SMS (e.g., a disconnected number or landline). 30003 may resolve if you try again later; 30005 is permanent.
Can I send SMS without A2P 10DLC registration?
Technically, messages may still be transmitted, but carriers (especially T-Mobile) will heavily filter or block unregistered A2P traffic. Your messages will have very low deliverability. A2P registration is effectively required for reliable SMS delivery from local numbers.
Why did my message cost 3x what I expected?
Your message likely contained an emoji or special character that switched the encoding from GSM-7 to Unicode. This reduces the per-segment character limit from 160 to 70, causing a 160-character message to become 3 segments. Remove emojis and special characters to reduce segment count.
How long are messages queued before they expire?
Messages are typically queued for up to 4 hours. If the message cannot be delivered within that window (e.g., recipient’s phone is off for an extended period), it will be marked as undelivered. Messages queued due to quiet hours will be sent when the sending window opens.
Can I recall or delete a sent message?
No. Once an SMS is sent, it cannot be recalled or deleted from the recipient’s device. SMS is a fire-and-forget protocol. Always double-check message content and recipient before sending, especially for bulk campaigns.
A contact says they did not reply STOP, but they are blocked. What do I do?
Carriers sometimes process opt-outs from the wrong thread or due to a shared short code. Go to the contact record, check the DND settings, and manually toggle SMS back on if the contact confirms they want to receive messages. Document their re-opt-in for compliance.
Why are my messages being sent from a different number than expected?
If you have multiple numbers in the account, the platform may use number pool rotation. Check Settings > Phone Numbers to see which numbers are assigned to which campaigns. You can pin a specific number to a conversation or workflow.