sms delivery rate

SMS Deliverability: Why OTP Codes Don't Arrive and How to Fix It

Why OTP codes fail to arrive, how to compare providers on deliverability and latency, and how to get more codes to your users.

Rowan Haddad

Content & SEO Manager

Summary

SMS deliverability is the share of messages that actually reach users' phones. For OTP codes, it decides whether a user can sign up or log in. Most failures come from invalid numbers, carrier filtering, unregistered sender IDs, grey routes and single-route setups. Prelude Verify routes each code across 30+ providers and channels and retries on the next best route when an attempt fails.

A verification code that never arrives costs more than a message. The user who requested it can't sign up, log in, or confirm a payment, and some won't try again.

That’s where SMS deliverability becomes essential. This key performance indicator (KPI) helps you measure the number of recipients who actually receive your messages.

So, what is a good delivery rate? What causes OTP codes to fail, and how do you compare providers on it? And is there a more insightful KPI to track? (Hint: There is.)

What is SMS Deliverability?

SMS delivery is the process of successfully sending a text message from a sender to a recipient’s mobile device via Short Message Service.

In the context of business messaging (companies sending SMS to users), SMS delivery (or deliverability) also refers to a metric used to assess the success of SMS sending. Similar to email delivery rates, it keeps track of the volume of targeted users that actually received the SMS.

The SMS delivery rate is calculated as such:

Messages delivered / Messages sent = SMS delivery rate

For OTP codes, deliverability has a time limit. A code is typically valid for a few minutes, so a message that arrives after it expires counts as a failure for the user, even if the carrier reports it as delivered.

What is a Good SMS Delivery Rate?

A SMS delivery rate can be considered good when it falls between 95% and 98%. This means that the vast majority of your audience has received the message.

Why not 100%?

Reaching a perfect 100% delivery rate is nearly impossible due to various technical factors that can affect message delivery.

What if your rate is below 95%?

A delivery rate below 95% could indicate underlying issues, such as network problems, carrier filtering due to content violations, or a high number of invalid phone numbers in your database.

Can you aim for 99%?

You might be wondering if a 99% or even 99.9% delivery rate is achievable. While some sources suggest these rates are unrealistic due to the many variables involved, Prelude's experience is that it's possible with the right approach, as the Bitstack example below shows.

Delivery Rate vs Conversion Rate: The Metric that Matters for OTP

While tracking SMS delivery rates is useful, it's not the ultimate metric to focus on. The real goal is to measure conversion: how many recipients actually took the desired action as a result of receiving your SMS?

Let's take the example of a business that sends SMS to verify the identity of new users. Focusing on delivery rate will only capture the initial step of the authentication process: whether the verification code was sent or not. However, this overlooks the crucial next step: user conversion.

Conversion rate offers a more comprehensive view. It tracks how many customers successfully used the verification code, providing insights into those who don't convert and why.

This is why Prelude Verify measures conversion, not just delivery: it tracks the conversion rate of every provider and channel pair and uses it to choose routes. In November 2024, Prelude reported that its customers had raised conversion rates on verification messages to 95%.

Delivery rate vs conversion rate as KPIs for SMS verification

What Causes Low OTP Deliverability?

SMS delivery failures can happen due to various factors. Here are the most common ones, and how Prelude handles each.

Incorrect or invalid phone numbers

Messages will fail to deliver if the recipient's phone number is outdated, incorrectly formatted, or invalid, often due to users accidentally entering the wrong number. Prelude's Lookup API returns a number's carrier, line type and portability status, so invalid or unsuitable numbers can be caught before a code is sent.

Carrier filters

Carriers automatically filter messages that contain content perceived as prohibited, fraudulent, or spammy. For OTP messages, a short message with the code and the app name is less likely to be filtered than one with links or promotional wording.

Recipient's phone issues

Sometimes it's not your fault, but your users'. If their phone is turned off, out of service range, or has storage issues, messages may not be delivered, at least temporarily.

Technical issues with SMS gateways

Delivery can be disrupted if your SMS provider experiences server downtime, technical glitches, or misconfigured routes.

Using grey routes

Grey routes are unauthorized, lower-cost pathways that bypass standard billing channels by exploiting weaknesses in international SMS traffic. While cheaper, these routes are unreliable and often result in inconsistent or failed message delivery.

Short code or sender ID restrictions

Carriers frequently require short codes and sender IDs to be registered and approved before use. These requirements vary by country, with strict rules governing who can use them and how they must be formatted. Messages from unregistered or unauthorized codes are typically blocked to prevent spam and protect users.

For example, alphanumeric sender IDs are not supported in the United States and Canada. By default, Prelude sends verification codes through pre-registered shared sender IDs optimized for deliverability, and teams that want their brand name as the sender can configure a custom sender ID.

Relying on a single route

When all traffic goes through one provider, any outage, throttling or filtering on that route becomes a failure for every user it serves. This is the cause most teams only discover once a market stops converting.

Codes that arrive after they expire

OTP codes are time-sensitive. A message delayed by network congestion or a slow route can arrive after the code has expired, and the user sees a failure even though the SMS was delivered. Prelude lets teams configure the verification window and the maximum number of attempts from the dashboard, so the code's validity matches how long delivery realistically takes.

How to Compare OTP APIs on Deliverability and Latency

A provider's headline delivery rate tells you little on its own. Ask for numbers per country, measured as conversion and time to verify, and find out what happens when a message fails.

What to ask a provider

How Prelude Verify handles it

Conversion: What share of sent codes are entered correctly, by country?

Tracks the conversion rate of every provider and channel pair, and shows conversion rates in the dashboard

Latency: How long does it take, on average, from sending a code to the user entering it?

Reports average time to convert alongside conversion rate and price

Routing: Do you send through one provider or several? How is the route chosen?

Routes across 30+ providers, picking the best route per user on cost and conversion; the trade-off is set per country

Fallback: What happens when an attempt fails or the user asks for a new code?

Retries on the next best route, which can be another provider or another channel

Channels: Which channels can carry the code if SMS fails?

SMS, RCS, WhatsApp, Telegram, Viber, Zalo and Silent Network Authentication

Coverage: Which countries do you reach, and with what conversion?

230+ countries

Reporting: Can I see results by country and inspect a single verification?

Analytics by country, plus each verification’s outcome, channels, attempts and cost

Sender ID: Who handles registration rules by country?

Pre-registered shared sender IDs by default; custom sender IDs on request

Pricing: Am I charged per message, per verification, or both? Is there a markup?

€0.032 per verification on Pay As You Go, with messages billed at carrier cost and zero markup

Two of these matter most for latency. A provider that retries on a different route recovers a failed send within the same verification, and one that reports time to verify per country shows you where users are waiting.

For a provider-by-provider look at how the main options compare, see our guide to the best OTP service providers.

How to Improve Your SMS Deliverability

Now it's time to reveal our secret formula and explain how to achieve a 99% delivery rate (Bitstack reached 99.8% with Prelude).

1. Choose the right SMS service provider

Your SMS provider plays a major role in your delivery rate. You need to make sure of its reliability. When looking for a new provider, ask them for their delivery rate, time, conversion rate and prices (the comparison table above lists the questions to ask).

Additionally, check for compliance certifications as a sign of reliability. For example, many enterprise companies require their providers to be SOC 2 Type II compliant, which demonstrates adherence to rigorous security and operational standards. Prelude is SOC 2 Type II and ISO/IEC 27001 certified.

2. Use multiple routes

When a company deals with a large number of users in many countries, the traditional approach of using a single supplier is not enough to guarantee both the best delivery rate and the best cost. This is where multi-routing comes into play.

Multi-routing involves distributing your SMS traffic through multiple providers rather than depending on just one. This approach mitigates risks associated with provider downtime or deliverability issues by redirecting traffic to alternative providers if problems arise, ensuring uninterrupted service.

But manually adding new suppliers and negotiating rates with each of them becomes unmanageable as the business grows. Outsourcing this task to a multi-carrier provider simplifies the process.

For example, Prelude routes across 30+ providers, optimizing routes to balance cost and delivery efficiency. This integration allows you to streamline your SMS operations with a single point of contact, saving time on both implementation and day-to-day supplier management.

For each verification, Prelude's routing engine compares all available routes and picks the best one for that user, based on each route's cost and its live conversion rate. Teams can set the trade-off per country from the dashboard: prioritize price, balanced, or prioritize conversion.

If an attempt fails to deliver, or the user asks for a new code, Prelude retries on the next best available route, skipping the routes already tried. That next route can be a different provider or a different channel, so one failing route doesn't leave the user without a code. If the door is closed, Prelude opens the window.

And when flexibility matters, you can even select your preferred channel, such as SMS, WhatsApp or Telegram, or verify users silently with Silent Network Authentication (SNA).

3. Extend to multiple channels

SMS is not the only way to reach your users. Opening new channels to your delivery system is a great way to improve your deliverability.

Online messaging channels such as WhatsApp, RCS or Viber can be cheaper than SMS, depending on the country, and can be as efficient if used on the right person at the right time.

For example, if your user is in an area with poor cellular network coverage in Brazil, your OTP could be delivered through WhatsApp rather than SMS, as this channel is known to be more likely to reach the user in this country.

Prelude's routing engine makes this choice automatically for each user, across SMS, RCS, WhatsApp, Telegram, Viber and Zalo. Messages are billed at carrier cost with zero markup, on top of the per-verification fee.

This routing strategy, combined with maintaining a clean and accurate database and ensuring your message avoids any spam-like content, will significantly enhance your delivery success.

Case Study: How Bitstack Reached a 99.8% Delivery Rate

SMS is a versatile channel for various marketing purposes, but it's particularly crucial for delivering important notifications such as transactional and verification messages. When these messages suffer from poor delivery rates, significant issues can arise. Users might miss critical information or face barriers accessing your app, leading to frustration and potential disengagement.

This challenge is what drove Bitstack, a fintech app offering a crypto wallet, to partner with Prelude.

Bitstack had tested Firebase and Twilio, who worked fine in a few supported countries. But outside of this list of countries, deliverability was not reliable and Bitstack had no or little ways to see if the SMS was really delivered or not. When confirming a payment or a transfer, failing to receive an SMS adds unnecessary stress to already high-stakes transactions.

A low delivery rate not only affects user satisfaction but can also disrupt your growth strategy by breaking viral loops, such as invitations and referrals.

Partnering with Prelude led Bitstack to a 99.8% delivery rate and 95% conversion rate. It was a 10 points improvement globally compared to competitors and even higher in regions that were inadequately supported by the two other providers. By reducing the number of attempts, Prelude also lowered the cost of Bitstack's SMS verification service.

Start Improving Your Deliverability

Prelude Verify routes every code across 30+ providers and channels, retries on the next best route when an attempt fails, and shows conversion rates and average time to convert in the dashboard. Try Prelude for free or talk to our sales team.

What is SMS deliverability?

SMS deliverability is the share of sent text messages that reach the recipient's phone, calculated as messages delivered divided by messages sent. For OTP codes, the message also has to arrive before the code expires, usually within a few minutes.

What is a good SMS delivery rate?

A delivery rate between 95% and 98% is generally considered good, and 100% is nearly impossible because of factors outside the sender's control. With multi-routing, higher rates are achievable: Bitstack reached 99.8% with Prelude.

Why are OTP codes not delivered?

The most common causes are invalid phone numbers, carrier filtering, unregistered sender IDs, grey routes, outages on a single route, and delays that outlast the code's validity window. Providers that retry on a different route and channel recover many of these failures automatically.

How do you compare OTP APIs on deliverability and latency?

Ask each provider for conversion rate and average time to verify by country, not just a global delivery rate. Also check how many providers and channels they route through, what happens when an attempt fails, and whether you can inspect individual verifications.

What is the difference between delivery rate and conversion rate?

Delivery rate measures whether the SMS reached the phone. Conversion rate measures whether the user entered the code, which is what actually completes a signup or login. Prelude Verify tracks conversion for every provider and channel pair and uses it to choose routes.

How does Prelude improve OTP deliverability?

Prelude Verify routes each code across 30+ providers in 230+ countries, picking the best route per user on cost and conversion. When an attempt fails, it retries on the next best route, which can be another provider or a channel such as WhatsApp, RCS or Viber.

A verification code that never arrives costs more than a message. The user who requested it can't sign up, log in, or confirm a payment, and some won't try again.

That’s where SMS deliverability becomes essential. This key performance indicator (KPI) helps you measure the number of recipients who actually receive your messages.

So, what is a good delivery rate? What causes OTP codes to fail, and how do you compare providers on it? And is there a more insightful KPI to track? (Hint: There is.)

What is SMS Deliverability?

SMS delivery is the process of successfully sending a text message from a sender to a recipient’s mobile device via Short Message Service.

In the context of business messaging (companies sending SMS to users), SMS delivery (or deliverability) also refers to a metric used to assess the success of SMS sending. Similar to email delivery rates, it keeps track of the volume of targeted users that actually received the SMS.

The SMS delivery rate is calculated as such:

Messages delivered / Messages sent = SMS delivery rate

For OTP codes, deliverability has a time limit. A code is typically valid for a few minutes, so a message that arrives after it expires counts as a failure for the user, even if the carrier reports it as delivered.

What is a Good SMS Delivery Rate?

A SMS delivery rate can be considered good when it falls between 95% and 98%. This means that the vast majority of your audience has received the message.

Why not 100%?

Reaching a perfect 100% delivery rate is nearly impossible due to various technical factors that can affect message delivery.

What if your rate is below 95%?

A delivery rate below 95% could indicate underlying issues, such as network problems, carrier filtering due to content violations, or a high number of invalid phone numbers in your database.

Can you aim for 99%?

You might be wondering if a 99% or even 99.9% delivery rate is achievable. While some sources suggest these rates are unrealistic due to the many variables involved, Prelude's experience is that it's possible with the right approach, as the Bitstack example below shows.

Delivery Rate vs Conversion Rate: The Metric that Matters for OTP

While tracking SMS delivery rates is useful, it's not the ultimate metric to focus on. The real goal is to measure conversion: how many recipients actually took the desired action as a result of receiving your SMS?

Let's take the example of a business that sends SMS to verify the identity of new users. Focusing on delivery rate will only capture the initial step of the authentication process: whether the verification code was sent or not. However, this overlooks the crucial next step: user conversion.

Conversion rate offers a more comprehensive view. It tracks how many customers successfully used the verification code, providing insights into those who don't convert and why.

This is why Prelude Verify measures conversion, not just delivery: it tracks the conversion rate of every provider and channel pair and uses it to choose routes. In November 2024, Prelude reported that its customers had raised conversion rates on verification messages to 95%.

Delivery rate vs conversion rate as KPIs for SMS verification

What Causes Low OTP Deliverability?

SMS delivery failures can happen due to various factors. Here are the most common ones, and how Prelude handles each.

Incorrect or invalid phone numbers

Messages will fail to deliver if the recipient's phone number is outdated, incorrectly formatted, or invalid, often due to users accidentally entering the wrong number. Prelude's Lookup API returns a number's carrier, line type and portability status, so invalid or unsuitable numbers can be caught before a code is sent.

Carrier filters

Carriers automatically filter messages that contain content perceived as prohibited, fraudulent, or spammy. For OTP messages, a short message with the code and the app name is less likely to be filtered than one with links or promotional wording.

Recipient's phone issues

Sometimes it's not your fault, but your users'. If their phone is turned off, out of service range, or has storage issues, messages may not be delivered, at least temporarily.

Technical issues with SMS gateways

Delivery can be disrupted if your SMS provider experiences server downtime, technical glitches, or misconfigured routes.

Using grey routes

Grey routes are unauthorized, lower-cost pathways that bypass standard billing channels by exploiting weaknesses in international SMS traffic. While cheaper, these routes are unreliable and often result in inconsistent or failed message delivery.

Short code or sender ID restrictions

Carriers frequently require short codes and sender IDs to be registered and approved before use. These requirements vary by country, with strict rules governing who can use them and how they must be formatted. Messages from unregistered or unauthorized codes are typically blocked to prevent spam and protect users.

For example, alphanumeric sender IDs are not supported in the United States and Canada. By default, Prelude sends verification codes through pre-registered shared sender IDs optimized for deliverability, and teams that want their brand name as the sender can configure a custom sender ID.

Relying on a single route

When all traffic goes through one provider, any outage, throttling or filtering on that route becomes a failure for every user it serves. This is the cause most teams only discover once a market stops converting.

Codes that arrive after they expire

OTP codes are time-sensitive. A message delayed by network congestion or a slow route can arrive after the code has expired, and the user sees a failure even though the SMS was delivered. Prelude lets teams configure the verification window and the maximum number of attempts from the dashboard, so the code's validity matches how long delivery realistically takes.

How to Compare OTP APIs on Deliverability and Latency

A provider's headline delivery rate tells you little on its own. Ask for numbers per country, measured as conversion and time to verify, and find out what happens when a message fails.

What to ask a provider

How Prelude Verify handles it

Conversion: What share of sent codes are entered correctly, by country?

Tracks the conversion rate of every provider and channel pair, and shows conversion rates in the dashboard

Latency: How long does it take, on average, from sending a code to the user entering it?

Reports average time to convert alongside conversion rate and price

Routing: Do you send through one provider or several? How is the route chosen?

Routes across 30+ providers, picking the best route per user on cost and conversion; the trade-off is set per country

Fallback: What happens when an attempt fails or the user asks for a new code?

Retries on the next best route, which can be another provider or another channel

Channels: Which channels can carry the code if SMS fails?

SMS, RCS, WhatsApp, Telegram, Viber, Zalo and Silent Network Authentication

Coverage: Which countries do you reach, and with what conversion?

230+ countries

Reporting: Can I see results by country and inspect a single verification?

Analytics by country, plus each verification’s outcome, channels, attempts and cost

Sender ID: Who handles registration rules by country?

Pre-registered shared sender IDs by default; custom sender IDs on request

Pricing: Am I charged per message, per verification, or both? Is there a markup?

€0.032 per verification on Pay As You Go, with messages billed at carrier cost and zero markup

Two of these matter most for latency. A provider that retries on a different route recovers a failed send within the same verification, and one that reports time to verify per country shows you where users are waiting.

For a provider-by-provider look at how the main options compare, see our guide to the best OTP service providers.

How to Improve Your SMS Deliverability

Now it's time to reveal our secret formula and explain how to achieve a 99% delivery rate (Bitstack reached 99.8% with Prelude).

1. Choose the right SMS service provider

Your SMS provider plays a major role in your delivery rate. You need to make sure of its reliability. When looking for a new provider, ask them for their delivery rate, time, conversion rate and prices (the comparison table above lists the questions to ask).

Additionally, check for compliance certifications as a sign of reliability. For example, many enterprise companies require their providers to be SOC 2 Type II compliant, which demonstrates adherence to rigorous security and operational standards. Prelude is SOC 2 Type II and ISO/IEC 27001 certified.

2. Use multiple routes

When a company deals with a large number of users in many countries, the traditional approach of using a single supplier is not enough to guarantee both the best delivery rate and the best cost. This is where multi-routing comes into play.

Multi-routing involves distributing your SMS traffic through multiple providers rather than depending on just one. This approach mitigates risks associated with provider downtime or deliverability issues by redirecting traffic to alternative providers if problems arise, ensuring uninterrupted service.

But manually adding new suppliers and negotiating rates with each of them becomes unmanageable as the business grows. Outsourcing this task to a multi-carrier provider simplifies the process.

For example, Prelude routes across 30+ providers, optimizing routes to balance cost and delivery efficiency. This integration allows you to streamline your SMS operations with a single point of contact, saving time on both implementation and day-to-day supplier management.

For each verification, Prelude's routing engine compares all available routes and picks the best one for that user, based on each route's cost and its live conversion rate. Teams can set the trade-off per country from the dashboard: prioritize price, balanced, or prioritize conversion.

If an attempt fails to deliver, or the user asks for a new code, Prelude retries on the next best available route, skipping the routes already tried. That next route can be a different provider or a different channel, so one failing route doesn't leave the user without a code. If the door is closed, Prelude opens the window.

And when flexibility matters, you can even select your preferred channel, such as SMS, WhatsApp or Telegram, or verify users silently with Silent Network Authentication (SNA).

3. Extend to multiple channels

SMS is not the only way to reach your users. Opening new channels to your delivery system is a great way to improve your deliverability.

Online messaging channels such as WhatsApp, RCS or Viber can be cheaper than SMS, depending on the country, and can be as efficient if used on the right person at the right time.

For example, if your user is in an area with poor cellular network coverage in Brazil, your OTP could be delivered through WhatsApp rather than SMS, as this channel is known to be more likely to reach the user in this country.

Prelude's routing engine makes this choice automatically for each user, across SMS, RCS, WhatsApp, Telegram, Viber and Zalo. Messages are billed at carrier cost with zero markup, on top of the per-verification fee.

This routing strategy, combined with maintaining a clean and accurate database and ensuring your message avoids any spam-like content, will significantly enhance your delivery success.

Case Study: How Bitstack Reached a 99.8% Delivery Rate

SMS is a versatile channel for various marketing purposes, but it's particularly crucial for delivering important notifications such as transactional and verification messages. When these messages suffer from poor delivery rates, significant issues can arise. Users might miss critical information or face barriers accessing your app, leading to frustration and potential disengagement.

This challenge is what drove Bitstack, a fintech app offering a crypto wallet, to partner with Prelude.

Bitstack had tested Firebase and Twilio, who worked fine in a few supported countries. But outside of this list of countries, deliverability was not reliable and Bitstack had no or little ways to see if the SMS was really delivered or not. When confirming a payment or a transfer, failing to receive an SMS adds unnecessary stress to already high-stakes transactions.

A low delivery rate not only affects user satisfaction but can also disrupt your growth strategy by breaking viral loops, such as invitations and referrals.

Partnering with Prelude led Bitstack to a 99.8% delivery rate and 95% conversion rate. It was a 10 points improvement globally compared to competitors and even higher in regions that were inadequately supported by the two other providers. By reducing the number of attempts, Prelude also lowered the cost of Bitstack's SMS verification service.

Start Improving Your Deliverability

Prelude Verify routes every code across 30+ providers and channels, retries on the next best route when an attempt fails, and shows conversion rates and average time to convert in the dashboard. Try Prelude for free or talk to our sales team.

What is SMS deliverability?

SMS deliverability is the share of sent text messages that reach the recipient's phone, calculated as messages delivered divided by messages sent. For OTP codes, the message also has to arrive before the code expires, usually within a few minutes.

What is a good SMS delivery rate?

A delivery rate between 95% and 98% is generally considered good, and 100% is nearly impossible because of factors outside the sender's control. With multi-routing, higher rates are achievable: Bitstack reached 99.8% with Prelude.

Why are OTP codes not delivered?

The most common causes are invalid phone numbers, carrier filtering, unregistered sender IDs, grey routes, outages on a single route, and delays that outlast the code's validity window. Providers that retry on a different route and channel recover many of these failures automatically.

How do you compare OTP APIs on deliverability and latency?

Ask each provider for conversion rate and average time to verify by country, not just a global delivery rate. Also check how many providers and channels they route through, what happens when an attempt fails, and whether you can inspect individual verifications.

What is the difference between delivery rate and conversion rate?

Delivery rate measures whether the SMS reached the phone. Conversion rate measures whether the user entered the code, which is what actually completes a signup or login. Prelude Verify tracks conversion for every provider and channel pair and uses it to choose routes.

How does Prelude improve OTP deliverability?

Prelude Verify routes each code across 30+ providers in 230+ countries, picking the best route per user on cost and conversion. When an attempt fails, it retries on the next best route, which can be another provider or a channel such as WhatsApp, RCS or Viber.

Start optimizing your auth flow

Send verification text-messages anywhere in the world with the best price, the best deliverability and no spam.