Phone & SMS

Why Business Texts Fail to Deliver and How to Fix Each Cause

A failed text is a clue, not a mystery. This guide shows how to diagnose SMS delivery failures by cause, from bad numbers to carrier filtering, and fix them without making things worse.

By SaaSVisionary Team · · 7 min read

Illustration for the article: Why Business Texts Fail to Deliver and How to Fix Each Cause

The appointment reminder went out, but the customer never got it. The campaign dashboard shows a cluster of red “failed” labels. The first instinct is to hit resend. That is usually the wrong move.

Every failed text has a reason, and the reason decides the fix. A mistyped number needs a correction. An opted-out contact needs to be left alone. A filtered message needs different content or a registered sender. Resending blindly can create duplicates, annoy people who did get the text, and hurt your sender reputation.

This guide gives you a repeatable way to investigate, with a table of common causes and a prevention checklist. The examples use Twilio, since many small business platforms connect to it, but the logic applies to most providers.

Rule one: diagnose before you resend

Before touching anything, answer three questions:

  1. Was the message actually attempted? A paused automation, an unsaved draft, or a scheduled send for next week is not a failure.
  2. Did the provider accept it? If the provider has no record, the problem is in the connection between your platform and the provider.
  3. What exact status and error code came back? That code points to the category of problem.

Write the answers down. If you ask your provider’s support for help later, they will ask for the same details.

Step-by-step investigation

1. Find the message in your platform

Open your messaging history and filter by recipient, time, and direction. Confirm which number sent it. Businesses and agencies often have several numbers, and the wrong one may be attached to a workflow. Check the status detail for a stored error code. If none is shown, that does not mean it succeeded.

2. Match it in your provider’s logs

In Twilio, open the Messaging Logs and search for the matching entry using its Message SID, or narrow by timestamp and the two phone numbers involved. Make sure every detail matches, not just a message sent around the same time.

If the provider shows a final status that differs from your platform, you have two issues: a delivery problem and a status-sync problem. Treat them separately.

3. Look up the error code

Use the provider’s current error reference for the exact code. Codes differ between providers, and descriptions get updated.

Common causes and what to do

These Twilio codes are among the ones small businesses see most. Always confirm against Twilio’s current documentation.

Code Plain-English meaning First fix to try
30034 Sending from a US 10-digit number that isn’t linked to an approved A2P 10DLC campaign Check campaign approval and that the number is in the right Messaging Service
30007 Message was filtered by a carrier or the provider Review content, links, consent, and volume patterns
21610 Recipient has opted out (replied STOP) Do not resend. Respect the opt-out
30003 Handset unreachable (off, out of coverage) Wait and retry once later, or use another channel
30005 Unknown or inactive destination number Verify the number with the customer
30006 Landline or carrier can’t receive SMS Switch to a call or email for that contact
21211 Invalid “To” number format Fix formatting, including the country code

Registration problems

In the US, texting from a local 10-digit number generally requires A2P 10DLC brand and campaign registration. Toll-free numbers need toll-free verification. Unregistered traffic is often blocked outright. If you see a sudden wave of failures across many recipients from one number, registration is the first suspect. Our explainer on A2P 10DLC registration covers the process.

Carrier filtering

Filtering is harder to diagnose because carriers don’t share their exact rules. Common triggers include:

  • Public link shorteners that spammers also use. Use your own domain instead.
  • Content that doesn’t match your registered use case, such as promotions from a number registered for account alerts.
  • Sudden volume spikes from a number that normally sends a few messages a day.
  • High opt-out or complaint rates.
  • Missing business name or opt-out language.

When a message is filtered, change the cause before you try again. Sending the same text a second time rarely helps.

Bad or outdated numbers

Lists collected years ago are full of numbers that changed hands or became landlines. Clean them before a campaign, not after.

A worked example

Summit Ridge Physical Therapy, an invented clinic, noticed that about a fifth of its reminder texts failed one Monday. The office manager followed the steps above.

The platform showed code 30034 on every failure. All failed messages came from a second number the clinic had added for a new location. That number had never been added to the registered campaign. The fix took a few minutes in the Twilio console. No messages were resent until the number showed as linked, and patients with same-day appointments got a phone call instead.

Prevention checklist

Most failures are preventable. Run through this before launching any campaign or automation:

  • Every sending number is linked to an approved registration
  • Message content matches the registered use case
  • Links use your own domain, not a public shortener
  • Every message names the business and includes opt-out language where needed
  • Opted-out contacts are excluded automatically
  • Numbers are validated and include country codes
  • Landline numbers are flagged for calls or email instead
  • Large sends are spread out rather than blasted at once
  • A test message to your own phone arrives with correct content

Build a failure-handling workflow

Instead of discovering failures by accident, route them. On SaaSVisionary, messages and their statuses show up in the shared inbox, and a workflow automation can react to a failed status by creating a task, tagging the contact, or trying email instead. That way a failed reminder turns into a follow-up, not a no-show.

Keep in mind that provider usage is billed by your provider, so repeated resends also cost money.

Frequently asked questions

Why do my text messages say failed or undelivered?

Common reasons include an invalid or inactive number, a landline that can’t receive texts, a contact who opted out, an unregistered sending number, or carrier filtering. The error code from your SMS provider tells you which category applies. Look it up in the provider’s current documentation before deciding whether to fix the number, change the content, or leave the contact alone.

Should I resend a text that failed?

Only after you know why it failed and have fixed the cause. Resending to an opted-out contact can break the rules. Resending filtered content usually fails again and may hurt your sender reputation. A temporary issue like an unreachable handset may justify one retry later, but consider another channel for anything time-sensitive.

What is carrier filtering?

Carriers scan business texts for signs of spam and may block messages that look risky. Triggers can include public link shorteners, content that doesn’t match your registered use case, sudden volume spikes, and high opt-out rates. Carriers don’t publish their exact rules, so the safest approach is registered sending, consistent content, and clear consent.

Why did my texts suddenly start failing from one number?

A sudden wave of failures from one number often points to registration. The number may not be linked to an approved A2P 10DLC campaign, or it may have been added after registration. Check your provider’s console for the number’s campaign status. Content changes and big volume jumps are the next things to review.

Want failed texts to turn into follow-up tasks automatically? Start a free 14-day trial.

#sms delivery failures#carrier filtering#twilio error codes#a2p 10dlc#sms troubleshooting
SaaSVisionary logo mark

Put every lead, call and payment in one place

Try the plan you choose free for 14 days. Switch plans or cancel any time from your billing settings.

  • 14-day free trial
  • No contract
  • Unlimited contacts
Open in new tab ↗

Loading…