Loyalty Rewards - Your SMS Says Delivered But Never Arrived: How to Find Out Why

Your SMS Says Delivered But Never Arrived: How to Find Out Why

This is the worst class of SMS problem, because every system you can see reports success. WordPress logged the send. The gateway returned a 200. The delivery report says delivered. The customer did not get the message.

First, understand what delivered means

A delivery receipt does not mean a human saw the message. Depending on the route, it can mean the message reached the destination carrier, or reached the handset, or merely that an intermediate aggregator accepted responsibility for it. On low-quality routes, the receipt is close to meaningless.

So the first question is not why did delivery fail. It is which system generated that receipt, and what does it actually attest to.

Work through the causes in this order

1. Sender ID rejection

The most common cause by a distance. The carrier rejected or rewrote your sender ID and dropped the message. The signal is geographic: it works in one country and fails in another. See sender ID rules by country.

2. Unregistered A2P traffic

If the destination is the US and you have not registered a 10DLC brand and campaign, filtering is the expected outcome, not an anomaly. See 10DLC registration.

3. Content filtering

Carriers filter on message content. Common triggers are URL shorteners on shared domains, all-caps promotional language, certain regulated words, and links with no surrounding context. If one template fails while others succeed to the same number, the content is the variable.

4. Grey routes

If your per-message price looked too good, this is where you pay for it. Grey routes deliver inconsistently by carrier and get shut down without notice. A campaign that worked last month failing this month with no change on your side is the classic symptom.

5. The number itself

Disconnected, ported, out of service, or simply mistyped at signup. Worth ruling out early with a second number on the same network.

The diagnostic that settles it

Send the same message to two handsets on two different carriers in the same country, then send a deliberately plain version, no links and no promotional words, to both.

  • Plain works, original fails, both carriers: content filtering.
  • Both fail on one carrier only: a routing or sender ID problem with that carrier.
  • Both fail everywhere: registration, sender ID, or account-level problem.
  • Both succeed: the issue is specific to the original recipient number.

Four messages will usually tell you more than an afternoon of reading logs.

Fixing it for good

Once you know the cause, the fixes are mostly structural rather than clever. Register properly in every market you send to. Use a dedicated link domain rather than a shared shortener. Split transactional and marketing traffic so a filtered campaign cannot take your OTP codes down with it. And keep a second gateway configured, because the fastest fix for a degraded route is a different route.

For the mechanical checks, credentials, endpoints and throughput, work through the gateway troubleshooting guide. If you conclude the route is the problem, compare supported gateways on delivery quality rather than headline price.

Connect any SMS gateway to WordPress

WP SMS supports more than 300 gateways, so you can pick on price and delivery in your own market rather than settling for whichever one your plugin supports. Switching later does not mean rebuilding your automations.

See WP SMS pricing  |  Browse supported gateways  |  Gateway support

Backed by a 14-day money-back guarantee.

You'll discover here