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.
First steps — quick diagnostic checklist
Before diving into specific issues, check these common causes first:
Quick-reference issue table
Message status definitions
“Undelivered” vs “Failed”
Error code reference
Common delivery error codes
Registration and compliance error codes
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.
T-Mobile specific filtering
T-Mobile is the most aggressive carrier for content filtering. Common T-Mobile blocks:
Common delivery issues
Messages not sending at all
Verify the phone number is active
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.
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.
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.
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.
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.
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.
Messages marked as delivered but not received
A “Delivered” status means the carrier accepted the message — but the recipient may still not see it.
“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.
Messages going to spam on carrier networks
Even successfully delivered messages can be silently filtered:
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.
Character limits and message segments
GSM-7 vs Unicode encoding
SMS messages are sent in segments. The character limit per segment depends on the encoding:
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.
Characters that trigger Unicode encoding
How segments are counted
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.
Delivery receipts and read receipts
DLR limitations
- Delivery receipts confirm the message reached the carrier network, not necessarily the recipient’s device
- Some carriers do not return delivery receipts (message shows as “Sent” indefinitely)
- Pre-paid phone plans may not support DLR
- International messages have less reliable DLR
Number suspended or flagged
What triggers suspension
- Multiple spam complaints from recipients
- Sending to a high percentage of invalid numbers
- Violating carrier content policies (SHAFT content, debt collection without consent, etc.)
- Failing to honor opt-out requests
- Billing delinquency
Number status indicators
How to request reinstatement
Identify the violation
Check your email and the Trust Center for a suspension notice that details the reason.
Fix the root cause
If content-related, revise your messaging templates. If opt-out related, audit your DND and unsubscribe processes.
Submit a reinstatement request
Contact HoopAI support with your number, the suspension reason, and a description of the corrective steps you have taken.
Reinstatement is not guaranteed. If the violation is severe or repeated, you may need to provision a new number and re-register your campaign.
International SMS issues
Sender ID requirements by region
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.
Two-way SMS not working
If you can send messages but are not receiving inbound replies:
Verify number capabilities
Go to Settings > Phone Numbers and confirm the number has SMS and Inbound SMS capabilities enabled. Some numbers are provisioned as outbound-only.
Check inbound message routing
In the phone number settings, verify that inbound messages are routed to the correct account. Misconfigured routing sends replies into a black hole.
Review webhook configuration
If you are using a custom webhook for inbound messages, confirm the webhook URL is correct, reachable, and returning a 200 status code.
Check for conversation assignment
Inbound messages appear in the Conversations tab. If no user is assigned, it may not trigger notifications. Check your auto-assignment rules.
Test with a different carrier
Send an inbound test from a phone on a different carrier. Some carrier-to-carrier routes have intermittent issues.
Message queuing and delays
Messages may experience delays due to:
How to test SMS delivery
Send to your own phone
Send a test message from the platform to your personal phone. Verify delivery and content.
Test across carriers
If possible, test delivery to phones on different carriers (AT&T, T-Mobile, Verizon). Carrier filtering varies.
Test with links
Send a message containing a link to verify it is not filtered. Use your own domain, not a URL shortener.
Test with media
Send an MMS with an image to verify media delivery and quality.
Verify opt-out flow
Reply STOP from your test phone to confirm DND is applied. Reply START to confirm resubscription works.
Escalating delivery issues to support
If you have exhausted the troubleshooting steps above, contact HoopAI support with the following information:
Frequently asked questions
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.