Skip to main content
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

1

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.
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.

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:

Contact replied STOP but wants messages again

When a contact replies STOP, they are automatically added to the DND list. To resubscribe:
  1. The contact can text START, YES, or UNSTOP to your number
  2. 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

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.

MMS file limits and supported formats

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

1

Identify the violation

Check your email and the Trust Center for a suspension notice that details the reason.
2

Fix the root cause

If content-related, revise your messaging templates. If opt-out related, audit your DND and unsubscribe processes.
3

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:
1

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.
2

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.
3

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.
4

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.
5

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

1

Send to your own phone

Send a test message from the platform to your personal phone. Verify delivery and content.
2

Test across carriers

If possible, test delivery to phones on different carriers (AT&T, T-Mobile, Verizon). Carrier filtering varies.
3

Test with links

Send a message containing a link to verify it is not filtered. Use your own domain, not a URL shortener.
4

Test with media

Send an MMS with an image to verify media delivery and quality.
5

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

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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Last modified on May 19, 2026