Skip to content
OmniChannels.ai

SMS

Why are my SMS messages not being delivered?

Updated

Short answer

SMS messages usually fail to deliver because the number is invalid or inactive, the phone stayed off past the validity period, the sender ID is not registered for that country, the content was filtered as spam, or promotional rules blocked the send. Delivery reports show which: UNDELIV, EXPIRED or REJECTD each point to a different cause.

What are the most common causes?

SymptomLikely causeFix
UNDELIV or FAILEDWrong format, inactive or ported numberNormalise to E.164 and clean the list with HLR lookups
EXPIREDPhone off or out of coverageRetry later or fall back to another channel
REJECTD or REJECTEDUnregistered sender ID or blocked contentRegister the ID; review links and wording
No receipt at allOperator returns no receiptsAsk your provider which routes return receipts
Marketing only failsQuiet hours, DND list or missing opt-inSend within permitted hours to opted-in contacts

How do I diagnose a delivery problem?

  1. Check the API response: a rejected submission never reached the network.
  2. Read the delivery report status and error code for the failed messages.
  3. Group failures by country and operator to spot a pattern.
  4. Confirm the sender ID is registered for that destination and use case.
  5. Send a test to a known phone on the same operator.
  6. Share message IDs with your provider if the pattern persists.

What else can block SMS in the GCC?

UAE and Saudi operators expect registered sender IDs, and unregistered IDs are typically blocked. Promotional SMS is barred during quiet hours: 21:00 to 07:00 in the UAE under TDRA's spam policy, and 22:00 to 09:00 in Saudi Arabia under CST rules. Operator SMS firewalls also block suspicious links and traffic arriving over unsanctioned routes.

How can I recover failed messages?

For important messages, use channel fallback: if SMS fails, try WhatsApp or RCS, or the reverse. OmniChannels.ai supports configurable fallback order and normalises delivery statuses into one webhook format.

Official sources