SMS codes not arriving: why delivery fails.
Every verification SMS that does not arrive costs you a sign-up, and often a support request. The causes are rarely the user’s phone: number formats, carrier filters, sender registration and slow routes play a bigger part. This guide shows why SMS codes do not arrive, what you can do as a site operator and when it is worth turning the direction around.
- Five reasons SMS codes get lost
- What you can fix yourself
- When the user should send instead
Five verification SMS, four problems
What delivery reports show
-
+49 151 …1167 Delivered after 4 s 09:12
Delivered The normal case.
-
0151 …0388 Number without country code 09:20
Not arrived Sent with the wrong country code because the leading zero was not converted.
-
+1 415 …2290 Filtered by the carrier 09:31
Not arrived Sender not registered for this country.
-
+49 176 …8835 Delivered after 2 min 10:02
Late The user had already asked for a new code, the first one no longer works.
-
+49 160 …5521 Expired undelivered 11:45
Not arrived Phone off or no reception until the code had expired.
Sign-ups by message. No form, no code.
Sendity is a sign-up widget for your website. Instead of filling in a form, your visitors send one short message via WhatsApp or email. Sendity checks who it came from and hands your site the name and the confirmed phone number or email address.
See how Sendity works →-
One message instead of a form Visitors tap send in WhatsApp or their email app. Nothing to type, no confirmation email to click.
-
Confirmed by the message itself The contact comes from the sender of the message, so typos and made-up addresses never reach your list.
-
Pay per confirmed contact Start with 1,000 free credits, no credit card. After that, prepaid packages with no subscription.
Most failures happen before the SMS reaches the phone.
Number format
Users type 0151, +49 151 or 0049 151. If you do not convert numbers into the international format with country code, some SMS go to the wrong country or nowhere.
Carrier filters
Carriers filter messages that look like spam or fraud. Codes with links, unusual sender names or sudden volume peaks are hit first.
Sender registration
More and more countries require registered senders, for example the USA for its local numbers or India for all business SMS. Unregistered messages are blocked without a notice to the user.
Routes and delays
Cheap routes pass through several intermediaries. A code that arrives after two minutes is often worthless, because the user has asked for a new one by then.
The phone
No reception, roaming, a full memory or a filter for unknown senders. These cases exist, but they are rarer than support requests suggest.
What you can fix yourself.
Three measures that noticeably raise the delivery rate.
Normalise numbers
Convert every number into the international format with country code before sending, and check that it is plausible.
Measure per country
Evaluate delivery reports by country and route. A sudden drop usually points to a filter or a missing registration.
Wait before resending
Allow a new code only after 30 to 60 seconds, say clearly that the newest one counts, and offer a second channel.
Outgoing SMS code or reverse OTP?
With reverse OTP, the user sends the code, so there is no delivery to fail.
| Aspect | Outgoing SMS code | With Sendity |
|---|---|---|
| Delivery to the user | Depends on routes and filters | Nothing is delivered |
| Number format | Typed by the user | Comes from the sender |
| Sender registration | Per country, for you | Not needed for you |
| Resending | Costs another SMS | The user sees in their app whether it was sent |
If SMS stays, make it robust.
Three habits for operators who keep sending codes.
Plain message text
Code and service name, no link and no shortened URLs. That passes filters more easily.
More than one route
Providers with direct carrier connections and a backup route reduce failures in single countries.
A second channel
Email, WhatsApp or a voice call as an alternative, so a lost SMS does not end the sign-up.
Live on your page in minutes.
Sendity runs as a compact widget on your page. Pick the path that fits your website.
SMS delivery: common questions.
Why do codes arrive late?
Usually because of the route: intermediaries, queues at peak times or a carrier that holds messages for checks. Measure delivery times per country and provider.
Should every resend get a new code?
If it does, only the newest one may count, and the page should say so. Otherwise a late first SMS confuses users.
Can the user’s SMS fail with reverse OTP?
Rarely, and the user sees it in their own messages app. With Sendity, SMS is only an optional fallback next to WhatsApp and email, which you switch on per campaign.
Does the user pay for sending?
A WhatsApp message or an email costs nothing extra. An SMS costs the normal rate of the user’s contract, which is usually included in flat rates.
Keep reading.
Reviewed for accuracy in by Christian Schätzlein.
Verify numbers without delivering a code.
Try the live demo on your phone. It takes ten seconds.