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:
CheckWhereWhat to look for
A2P 10DLC statusSettings > Phone Numbers > Trust CenterBrand and campaign must both be Active
Number typeSettings > Phone NumbersLocal numbers require A2P; toll-free requires verification
Contact DND statusContact recordContact may have replied STOP
Account balanceBilling > WalletInsufficient balance blocks all sending
Phone number activeSettings > Phone NumbersNumber must be active and assigned
Message contentConversation threadCheck for SHAFT content, blocked URLs, or excessive length

Quick-reference issue table

IssueLikely causeFix
Messages stuck in “Pending”A2P 10DLC registration incompleteComplete campaign registration in Trust Center
Error code 30007Carrier filteringReview message content for spam triggers; register your campaign
Contact never receives SMSNumber on Do-Not-Disturb listCheck and remove DND from contact record
”Message undeliverable”Destination is a landlineVerify the number type; use voice or email instead
Error code 21610Contact replied STOPContact opted out — cannot message until they opt back in
MMS fails to sendFile exceeds 5 MBCompress or resize the attachment below 5 MB
Two-way SMS not workingInbound routing misconfiguredCheck webhook and inbound routing in phone number settings
International SMS blockedCountry not enabledEnable destination country in Settings > Phone Numbers > International
Account suspended noticePolicy violation or billing issueContact HoopAI support
High failure rate on new numberNumber not warmed upGradually increase volume over 2-4 weeks

Message status definitions

StatusMeaning
QueuedMessage accepted and waiting to be sent
SentMessage sent to the carrier network
DeliveredCarrier confirmed delivery to the recipient’s device
UndeliveredCarrier attempted delivery but failed (see error code)
FailedMessage could not be sent at all (pre-carrier rejection)
ReadRecipient opened the message (not available on all carriers)

“Undelivered” vs “Failed”

UndeliveredFailed
Where it failedAt the carrier levelBefore reaching the carrier
Common causesCarrier filtering, invalid number, recipient opted outA2P not registered, account issue, invalid content
Has error codeYes (30xxx series)Yes (various)
Message left your systemYesNo

Error code reference

Common delivery error codes

Error codeNameCauseFix
30001Queue overflowToo many messages queued; volume spikeReduce sending rate; spread bulk sends over a longer window
30002Account suspendedAccount flagged or suspended for policy/billingContact HoopAI support to review the suspension
30003Unreachable destinationPhone is off, out of range, or number is temporarily unavailableVerify the phone number; retry later
30004Message blockedCarrier explicitly blocked the messageCheck A2P registration; review message content for spam triggers
30005Unknown destinationPhone number does not exist or is not a mobile numberRemove from contact list; landline numbers cannot receive SMS
30006Landline or unreachableNumber is a landline or carrier cannot route to itVerify number type; switch to voice or email for this contact
30007Carrier violationMessage violates carrier content policiesReview content for SHAFT, URL shorteners, or spam patterns
30008Unknown errorCarrier returned no specific reasonRetry; if persistent, contact HoopAI support with the message SID
30034Message filteringT-Mobile content filtering blocked the messageReview content; remove URL shorteners; ensure A2P is active

Registration and compliance error codes

Error codeNameCauseFix
21610STOP receivedContact opted out (replied STOP)Cannot message this contact unless they reply START
21611Max message queueExceeded queuing limitReduce concurrent sends
21612Number not SMS-capableThe “From” number cannot send SMSUse an SMS-enabled number
21614Invalid mobile number”To” number is not a valid mobile numberVerify and correct the phone number
21408Permission not enabledAccount lacks SMS permissions for this destinationEnable capability in Settings > Phone Numbers or contact support
63018Rate limit exceededExceeded A2P throughput limitSlow 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.

T-Mobile specific filtering

T-Mobile is the most aggressive carrier for content filtering. Common T-Mobile blocks:
TriggerErrorSolution
Unregistered A2P traffic30004/30034Complete A2P 10DLC registration
URL shortener (bit.ly, etc.)30034Use your own domain for links
High message volume spike30034Ramp up sending gradually
Content pattern match30034Vary message content; personalize with merge fields
Shared shortlink domains30034Use a custom tracking domain

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.
CauseDetails
Carrier-side filteringThe carrier accepted the message but silently dropped it before final delivery. Common with unregistered campaigns or spam-like content
Handset issuesRecipient’s phone may be off, in airplane mode, or have a full SMS inbox
Wrong number formatNumbers missing the country code or with extra digits may route incorrectly
Carrier queuingSome 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.

Messages going to spam on carrier networks

Even successfully delivered messages can be silently filtered:
CauseFix
URL shortenersReplace with your own branded domain links
Identical messages to many recipientsAdd personalization (first name, appointment date, etc.)
New A2P campaign (low reputation)Start with low volume and ramp up over 1-2 weeks
Aggressive promotional languageTone down marketing language; avoid ALL CAPS
Too many links in one messageLimit to 1 link per message
Free email domains in messageDo not include Gmail/Yahoo addresses in SMS content

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:
EncodingCharacters per segmentWhen used
GSM-7160 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.

Characters that trigger Unicode encoding

Character typeExamplesImpact
EmojisAny emojiSwitches to Unicode
Smart quotes” ” ’ ‘Switches to Unicode — use straight quotes instead
Long dashes— (em dash)Switches to Unicode — use hyphen instead
Non-Latin scriptsChinese, Arabic, CyrillicSwitches to Unicode
Some special symbolsCertain accented charactersDepends on specific character

How segments are counted

Message length (GSM-7)SegmentsCost multiplier
1-160 characters11x
161-306 characters22x
307-459 characters33x
460-612 characters44x
Message length (Unicode)SegmentsCost multiplier
1-70 characters11x
71-134 characters22x
135-201 characters33x
202-268 characters44x
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

FormatSupportedMax file size
JPEG (.jpg, .jpeg)Yes5 MB
PNG (.png)Yes5 MB
GIF (.gif)Yes5 MB (under 500 KB recommended)
MP4 (.mp4)Yes5 MB (under 1 MB recommended)
VCF (.vcf)Yes5 MB
PDF (.pdf)Limited carrier support5 MB
HEIC, WEBP, TIFF, AVINot supportedN/A
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

FeatureAvailability
Delivery receipt (DLR)Available for most US carriers; confirms message reached the carrier network
Read receiptNot available for standard SMS; only available with RCS (limited support)
Delivery status in platformShown in the conversation timeline as Delivered, Undelivered, or Failed

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

StatusMeaning
ActiveNumber is fully operational
PendingRegistration or provisioning in progress
SuspendedNumber has been suspended — cannot send or receive
FlaggedNumber is under review and may be suspended soon

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

IssueCauseFix
Message not deliveredInternational sending not enabledEnable in Settings > Phone Numbers > International Permissions
High cost per messageInternational rates vary by countryCheck rate card before sending
Number format rejectedMissing country codeUse E.164 format: +[country code][number] (e.g., +44 for UK)
Content blockedDifferent countries have different content rulesResearch destination country regulations
Sender ID mismatchSome countries require pre-registered sender IDsRegister sender ID with destination country carrier

Sender ID requirements by region

RegionSender ID requiredNotes
United StatesNo10DLC or toll-free number used as sender
CanadaNoLocal number used as sender
United KingdomYesMust register alphanumeric Sender ID
AustraliaYesPre-registered Sender ID required
IndiaYesDLT registration and entity ID required
EU (most countries)YesVaries by country
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 sub-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:
CauseTypical delayResolution
A2P throughput limitsSeconds to minutesUpgrade trust score or spread sends over time
Carrier congestionSecondsAutomatic retry; no action needed
Quiet hours queuingHoursMessages queued until sending window opens
Large campaign sendsMinutes to hoursPlatform throttles to comply with A2P limits
System maintenanceMinutesRare; messages are queued and sent after maintenance

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:
Information neededWhere to find it
Sub-account name and IDSettings > Business Profile
Phone number (From)Settings > Phone Numbers
Recipient phone number (To)Contact record
Error codeConversation thread > click failed message
Message contentConversation thread
Date and time of failureConversation thread
A2P registration statusSettings > Trust Center
Frequency of issueEvery message, intermittent, or carrier-specific?

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 March 6, 2026