How to test SMS deliverability before launching a campaign

Send a bad SMS campaign and 30 to 40% of messages may never arrive. Here's exactly how to test deliverability before you hit send, from seed lists to carrier filtering.

LeadCompliant Team
25 min read
In This Article

Last updated 2026-07-10

Person testing SMS deliverability on multiple carrier phones at a wooden desk
Person testing SMS deliverability on multiple carrier phones at a wooden desk

TL;DR

Before you launch an SMS campaign, send test messages to seed numbers on every major carrier (AT&T, Verizon, T-Mobile, US Cellular), check for content-filtering triggers, verify your 10DLC or short code registration is active, and compare platform delivery receipts against what actually lands on the handset. Skip these steps and 30 to 40% of your list may never see the message. Undelivered texts to cell phones still carry TCPA exposure.

Why does SMS deliverability fail in the first place?

SMS deliverability is not a clean pass/fail. Messages get dropped at three separate points: your sending platform, the carrier network, and the handset. Each layer runs its own filtering logic, and none of them explain in plain English why a message was blocked.

Carriers run their own spam-detection systems. AT&T sells a product called Advanced Messaging Fraud Protection, and T-Mobile uses an automated content filter that blocks traffic patterns it reads as bulk spam [1]. These systems look at sending rate, message content, link domains, opt-out language, and the ratio of messages to unique recipients. If your campaign looks like what a scammer sends, it gets silenced. Sometimes no failed-delivery code ever comes back to your platform.

The 10DLC (10-digit long code) registration system, which the FCC and carriers pushed through 2023, was supposed to fix this by tying traffic to a registered brand and a stated use case [2]. It helps. Registration alone does not guarantee delivery. A 10DLC number sending messages that contradict its registered use case still gets filtered.

Short codes have the highest throughput and the most carrier trust, but they cost $500 to $1,000 per month to lease and take 8 to 12 weeks to provision [3]. Toll-free numbers sit in the middle: lower filtering risk than unregistered long codes, faster to set up than short codes, still subject to content filtering.

Here is the part that trips up new senders. Your delivery receipt (the DLR your platform reports) is not proof a human saw the message. It confirms the carrier accepted the message, not that the handset got it. That single distinction is why pre-launch testing exists.

What is a seed list and how do you build one for SMS testing?

A seed list is a small set of real phone numbers you control, spread across every carrier you want to reach. You send your actual campaign message to those numbers before you touch your real list, then you check each handset by hand.

For US SMS campaigns, your seed list needs at least one number on each of the four big carriers: AT&T, Verizon, T-Mobile, and US Cellular. If your list skews toward prepaid users (TracFone, Mint Mobile, Consumer Cellular), add a prepaid number too. Those MVNOs often filter harder than the postpaid networks they ride on.

Getting the numbers is cheap. Team members' personal phones work. So does a $10-a-month prepaid SIM from Walmart, a Google Voice number (fine for basic send/receive, though it does not mirror carrier filtering the way a real SIM does), or a second line on your own account. You want physical handsets you can look at, more than platform-reported receipts.

Once the seed list is ready, send the exact message you plan to deploy. Same opt-out footer. Same link. Same sending number. Do not paraphrase the copy or strip the link to "make it safer for testing." If a cleaned-up version passes but the real one fails, you learned nothing.

Check each handset within 10 minutes of sending. Note whether the message arrived, whether any link got stripped or flagged, and whether the sending number displayed as expected. If a message never lands on one carrier's seed number inside 15 minutes, that carrier is filtering your traffic.

How do 10DLC registration and campaign vetting affect deliverability?

10DLC registration is now required for any business sending application-to-person (A2P) SMS over standard long codes in the US [2]. The Campaign Registry (TCR) is the central hub where brands register, and carriers pull from it to decide how much throughput to allow and how hard to filter.

A registered 10DLC campaign gets a throughput limit set by the carrier, usually stated as messages per second (MPS). An unregistered or suspended 10DLC number gets throttled to near zero or blocked outright on T-Mobile and AT&T. Verizon has been a little more forgiving historically, but that gap is closing.

Before you test anything, verify two things: your registration status is active, and your campaign use case matches what you actually plan to send. Mismatches trigger filters. Register a "customer care" use case, then send promotional blasts, and the carrier notices. Check status directly in the TCR portal or through your SMS platform's campaign dashboard.

The FCC's 2023 one-to-one consent rule, which took effect in January 2025, raised the stakes. Consent now has to tie to a specific seller, not pass through lead generators to anyone who pays [4]. If your TCPA house is not in order, deliverability is the least of your problems. A message that arrives but lacks proper consent is a lawsuit waiting to happen, the way it played out in settlements like the Cash App TCPA class action settlement and the Credit One TCPA settlement.

Do this before every new campaign: log into your platform and pull the 10DLC status for every number in your sending pool. Registration lapses if fees go unpaid or if the brand profile gets flagged, and platforms do not always shout about it when it happens.

What content triggers carrier SMS filtering?

Carriers filter on content patterns more than on metadata. Knowing what sets off a filter is how you write messages that actually arrive.

Here are the patterns that draw filtering consistently, based on published carrier guidance and repeated industry testing:

TriggerWhy carriers flag it
URL shorteners (bit.ly, tinyurl.com)Historically used to mask phishing domains
Mismatched link domainsLink domain differs from the registered brand domain
"FREE" in all capsClassic spam signal
Loan, debt, cannabis, gambling keywordsHigh-abuse categories; carriers filter aggressively
No opt-out languageRequired; absence reads as bulk spam
Sending rate spikes1,000 messages in 60 seconds from a new number
Repeated identical message bodyCarrier reads it as broadcast spam
Fake urgency phrases"Act NOW", "Limited time ONLY", and the like

The CTIA's Messaging Principles and Best Practices document, updated in 2023, says plainly that "URLs in messages should be from a domain that is registered and associated with the brand" [5]. That guidance is not law. Carriers treat it as law when they build their filters.

One rule saves more messages than any other. Host your links on a domain you own that matches your brand name. A generic link tracker or an affiliate redirect gets messages killed. If you need tracking, use a branded subdomain (say, go.yourbrand.com) and register it with your 10DLC campaign.

Opt-out language is non-negotiable on both fronts, legal and deliverability. The FCC requires a mechanism to stop further messages under 47 USC 227 [6], and carriers read the absence of opt-out language as a spam flag. "Reply STOP to opt out" at the end of every marketing message is the floor, not a nice-to-have.

How do you use delivery receipts versus actual handset delivery to spot problems?

Every enterprise SMS platform (Twilio, Bandwidth, Sinch, Telnyx, and the rest) returns a delivery receipt code. The codes look authoritative. They are not always accurate.

A "delivered" status from your platform means the carrier accepted the message into its network. Carriers are not required to return a final handset-delivery confirmation, and plenty do not. So a message the carrier accepted and then quietly dropped in its own filtering layer will often still read "delivered" in your dashboard [7].

This is the whole reason seed lists earn their keep. When the dashboard says "delivered" but the seed handset shows nothing, you have caught a carrier-side filter you would never have seen otherwise. That gap between reported delivery rate and real handset delivery can run 10 to 40% on campaigns with content or pattern problems, though nobody has clean published numbers on the exact range because carriers guard their filtering logic as proprietary.

The closest thing to a public admission comes from Twilio's own messaging documentation, which notes that DLR accuracy varies by carrier and that a "Delivered" status does not guarantee the message was displayed to the end user [7]. A major platform saying so on the record is about as candid as this industry gets.

On campaigns where reply rate matters (inbound lead follow-up, for example), reply rate doubles as a deliverability signal. If you normally see 5 to 8% replies and a new campaign gets 1%, content filtering is a plausible culprit alongside list quality.

What tools can you use to test SMS deliverability before you send?

There is no single SMS deliverability tester that does for texts what Litmus or Email on Acid does for email. The space is more fragmented, and you will probably combine two or three approaches.

Seed testing (the method above) is the most reliable, and it costs almost nothing beyond setup time. Do it for every campaign.

Some platforms have built-in testing features worth using:

  • Twilio has a test-credentials mode for API testing and lets you send to your own numbers in Sandbox mode before going live [7].
  • Bandwidth and Sinch both offer campaign-level reporting with carrier-by-carrier delivery breakdowns once you are live. Useful for post-send diagnosis, not for pre-launch.
  • The Campaign Registry's portal lets you confirm your brand and campaign registrations are active before you send a single message [2].

Third-party tools like Syniverse offer carrier-level delivery analysis, but they are priced for enterprise buyers, typically $500 a month and up. For a small outbound team, that budget goes further on list hygiene.

List hygiene tools that scrub invalid, landline, and VOIP numbers are a separate but related category. Removing numbers that can never receive SMS is not "deliverability testing" in the content-filtering sense, but it moves your delivery rate directly. Services like Twilio Lookup, Ekata (now part of Mastercard), and NumVerify return carrier and line-type data for roughly $0.005 to $0.01 per lookup [7].

LeadCompliant's free phone number checker flags line type (mobile vs. landline vs. VOIP) before you upload a list. That is a sensible first pass before the seed testing described here.

For teams running text message marketing at any scale, the trio of list hygiene, manual seed testing, and 10DLC status checks covers most deliverability risk without any expensive enterprise tooling.

How should you structure a pre-launch SMS deliverability checklist?

A checklist beats tribal knowledge because the same person does not run every campaign, and memory fails under deadline pressure. Here is a working version in the order you would actually run it.

Before writing the message: 1. Confirm 10DLC or short code registration is active in The Campaign Registry or your platform dashboard. 2. Confirm the campaign use case in TCR matches the message type you plan to send (marketing vs. transactional vs. mixed). 3. Verify the sending numbers have not been flagged or suspended by running a status check in your platform. 4. Scrub the list for landlines, VOIP numbers, and invalid numbers using a line-type lookup API. 5. Cross-reference the list against your internal DNC list and the National Do Not Call Registry if the messages are promotional [8]. (See also: do not call list and mobile phone do not call list for the cell-phone DNC specifics.)

When drafting the message: 6. Skip URL shorteners; use your own branded domain. 7. Include your brand name and an opt-out instruction in every marketing message. 8. Avoid all-caps words, spam-adjacent keywords (free, winner, guaranteed), and stacked punctuation. 9. Keep the message under 160 characters where you can, to avoid concatenated-message handling issues.

Before pressing send: 10. Send the exact message to your seed list (one number per major carrier). 11. Wait 15 minutes and confirm delivery on each handset. 12. Click any link in the message to confirm it resolves and the landing page loads. 13. Reply STOP from one seed number and verify it triggers your opt-out process. 14. Pull delivery receipts after the seed send and compare them to handset reality.

This takes a small team about 30 minutes. It is the 30 minutes that keeps you from a silent failure where you send 10,000 messages and 3,000 of them never arrive.

What delivery rate should you expect, and when is a low rate a sign of a real problem?

Benchmarks on SMS delivery rates are noisy, because platforms define "delivery rate" differently. Here is the honest version. A well-registered 10DLC campaign with clean list hygiene and non-spammy content should see platform-reported delivery rates of 95 to 98% [9]. Below 90% on a platform-reported basis means something is wrong: a registration problem, content triggering filters, or a list contaminated with VOIP and landline numbers.

For actual handset delivery, the gap between platform-reported and real-world rates rides on content. A transactional message ("your appointment is tomorrow at 2pm") from a properly registered number to a clean list lands with actual delivery very close to the platform report. A promotional message with aggressive copy, sent to a list last cleaned 18 months ago, might show 96% platform-reported and reach only 75 to 80% of real handsets.

Nobody publishes a clean study on this gap, because carriers keep their filtering rates proprietary. The nearest public data is CTIA's annual State of the Wireless report, which tracks overall A2P volume and filtering trends without carrier-level breakdowns [9].

One diagnostic worth memorizing: if your reply and click rates fall well below your historical benchmarks while platform-reported delivery still looks clean, investigate carrier-side filtering first. Not your copy. Not your offer.

Platform-reported SMS delivery rate thresholds and what they signal Interpretation guide for A2P campaigns on registered 10DLC numbers with scrubbed lists Expected: clean list, registered… 97% Acceptable minimum before investi… 90% Warning zone: likely content filt… 82% Critical: registration failure or… 70% Source: CTIA, State of the Wireless Industry report; Twilio SMS documentation

Does testing deliverability affect TCPA compliance?

Deliverability testing and TCPA compliance are separate problems, but they touch in two places.

First, your seed numbers need proper consent if the message you are testing is a marketing message. Texting your own employee's personal cell with a marketing message to test deliverability is technically a TCPA-covered communication if that employee never gave written prior express consent. No plaintiff's lawyer is out hunting for seed-test violations, but using company-issued numbers or numbers you own removes the theoretical exposure entirely.

Second, a message that delivered but lacked consent is worse than one that never arrived. The TCPA gives consumers a private right of action with statutory damages of $500 to $1,500 per message [6]. "We have great delivery rates" is not a defense. The FCC's 2023 order requires consent to be obtained directly by the seller, not aggregated through lead generators, and to be specific to that seller [4]. If your list came from a third-party lead vendor, scrutinize the consent chain before you think about deliverability at all.

The do not call telemarketer list rules under the TCPA cover text messages beyond voice calls. The FCC has held consistently that an SMS to a cell phone is a "call" under 47 USC 227 [6], which means DNC scrubbing is required for any marketing text. Check how do i get the do not call list for the steps to access that registry before your campaign launches.

LeadCompliant's compliance kit covers the pre-send checklist items specific to TCPA consent documentation. That is the piece most small teams skip, because it is less visible than a bounce rate.

What should you do when deliverability testing reveals a problem?

Testing only helps if you have a response plan. Here are the common failure scenarios and what to do about each.

Seed message never arrived on one carrier: Check your 10DLC registration for that carrier specifically. T-Mobile and AT&T run separate vetting processes. If registration is current, review your content against that carrier's published guidelines. Test again with a stripped-down version to isolate whether it is a content issue or a number-level block.

Seed message arrived but the link was stripped or flagged: Swap the URL for a branded short domain you control, then re-test. If the problem sticks, the domain itself may be on a carrier blocklist. Check it against Google Safe Browsing (https://transparencyreport.google.com/safe-browsing/search) and open a ticket with your SMS platform's support team.

STOP reply did not trigger the opt-out: This is a platform configuration problem, not a carrier one. Fix it before any send. Failing to honor opt-out requests is a direct TCPA violation under 47 USC 227(b) [6].

Platform shows delivered but the handset shows nothing: This is the hardest case, because the carrier gives you no feedback. Your options: ask your platform's compliance team for a carrier-level delivery investigation, switch to a different number pool if you have one, or delay the campaign until you can diagnose it. Do not send to 10,000 numbers hoping it fixes itself.

Delivery rate below 90% on a clean list: Pull a carrier breakdown if your platform offers one. Failures on a single carrier point to a number or registration problem specific to that carrier. Failures spread evenly across all carriers point back at the list, which needs re-validation.

How often should you run deliverability tests beyond new campaigns?

Most teams test before a big launch and then forget about it until something breaks. That is too rare.

Carrier filtering rules change. A number that delivered fine in March can get flagged by June if sending patterns shifted or a new filter rolled out. T-Mobile in particular has pushed several major filtering updates since the 10DLC transition, and each one caught senders who had been clean the week before.

A sensible ongoing cadence looks like this:

  • Before every new campaign: full seed test as described above.
  • Monthly: send one test message to your seed list from each active sending number to confirm baseline delivery holds.
  • After any platform change (new API key, new number pool, new SMS vendor): full seed test before resuming volume sends.
  • After any content template change, even minor edits: re-test that specific template.

For teams running ongoing SMS programs (drip sequences, transactional alerts), embed one or two internal team numbers as permanent seeds inside your live send list. When those numbers stop receiving messages, you get a real-time alert that something broke, without waiting for a customer to complain.

The cost of this is low. Call it an hour a month plus a few cents in message fees. The cost of finding a delivery problem three weeks into a campaign, after you have burned through your best leads, is a lot higher.

Frequently asked questions

Do I need to register my number before testing SMS deliverability?

Yes, if you plan to send A2P marketing or informational SMS in the US. Carriers filter unregistered long codes heavily, so a test on an unregistered number will not reflect what a registered number would see. Register your 10DLC campaign through The Campaign Registry first, confirm the registration is active, then run seed tests on the same number you will use for the real campaign.

Can I test SMS deliverability with a free tool?

Partially. You can build a seed list from real SIMs on each major carrier at very low cost. Free tools like Google Safe Browsing check whether your link domain is flagged. Twilio's Sandbox mode allows basic send/receive testing at no cost. There is no free equivalent of email deliverability checkers that shows placement across all carriers, so manual seed testing stays the most reliable free method.

What is a 10DLC number and why does it matter for deliverability?

10DLC stands for 10-digit long code, the standard US phone number used for A2P business texting. Carriers require brands to register these numbers through The Campaign Registry, which assigns a throughput level and links the number to a verified brand and use case. Registered 10DLC numbers face much less carrier filtering than unregistered ones. Without registration, AT&T and T-Mobile throttle or block your traffic.

How many seed numbers do I need to test SMS deliverability properly?

At minimum, one number per major carrier: AT&T, Verizon, T-Mobile, and US Cellular. If your list includes prepaid users (TracFone, Mint Mobile, Consumer Cellular), add a prepaid SIM. Five to six numbers covers most of the US market. Use real SIM cards on physical handsets rather than virtual numbers, because VOIP and virtual numbers do not reflect carrier-level filtering the same way.

What delivery rate should I expect from a properly registered SMS campaign?

Platform-reported delivery rates of 95 to 98% are typical for a well-registered 10DLC campaign with clean list hygiene and non-spammy content. Below 90% on platform-reported delivery usually signals a registration problem, content filtering, or a list contaminated with landlines and VOIP numbers. Actual handset delivery can run 5 to 15 points lower than platform-reported rates on promotional campaigns.

Does a delivered status from Twilio or my SMS platform mean the recipient got the message?

No. A "delivered" status means the carrier accepted the message into its network. Carriers are not required to return a final handset-delivery confirmation. Twilio's own documentation states that a Delivered status does not guarantee the message was displayed to the end user. Carrier-side filtering can silently drop a message after your platform logs it as delivered, which is why seed testing on physical handsets is the only reliable check.

What content words or phrases cause SMS carrier filtering?

Carriers filter consistently on URL shorteners like bit.ly, all-caps words like FREE or GUARANTEED, loan and debt keywords, cannabis and gambling terms, missing opt-out language, sending rate spikes, and repeated identical message bodies. The CTIA's Messaging Principles and Best Practices document lists the flagged patterns most authoritatively. Use your own branded domain instead of a link shortener, and always include a STOP opt-out instruction.

Do TCPA rules apply to test messages sent during a deliverability test?

Technically yes, if the test message is a marketing message and the recipient never gave written prior express consent. In practice, using company-owned numbers, your own devices, or phones belonging to employees who consented to receive test messages removes the exposure. Never send test marketing messages to consumer numbers from your live list without verifying consent. A failed delivery test does not excuse a TCPA violation on the test message itself.

Start with Google Safe Browsing's transparency report, which is publicly searchable. Contact your SMS platform's compliance or support team and ask them to check your domain against their internal carrier blocklist data. If your platform is Twilio, Bandwidth, or Sinch, their trust and safety teams can often investigate carrier-level domain blocks. Switch to a branded subdomain you control if a generic link tracker domain is flagged.

How long does it take for a 10DLC number to pass carrier vetting after registration?

Most carriers approve standard 10DLC campaigns within 24 to 72 hours of registration in The Campaign Registry, though Verizon has historically taken longer, sometimes 5 to 7 business days. Sole-proprietor registrations face extra vetting and can take 1 to 2 weeks. Short code provisioning is a separate, much longer process that usually takes 8 to 12 weeks. Do not send volume traffic before you confirm vetting is complete, or you will face carrier filtering.

Does the National Do Not Call Registry apply to SMS text messages?

Yes. The FCC has held consistently that a text to a cell phone is a "call" under 47 USC 227, so TCPA DNC rules apply to marketing texts. You must scrub your list against the National DNC Registry before sending promotional SMS, and you must keep your own internal DNC list for contacts who have opted out. Violations carry $500 to $1,500 in statutory damages per message. See our guides on the do not call list and mobile phone do not call list for specifics.

What happens if I send an SMS campaign without testing and it gets filtered by carriers?

You lose the cost of every message sent and never delivered, you burn through your best leads with no response, and you can permanently damage your sending reputation with that carrier. Carrier filtering is not always reversible quickly. If your number gets flagged as a spam source, restoring normal delivery can take weeks and carrier-level support tickets. A 30-minute pre-launch test is the cheapest insurance available.

Should I test deliverability differently for transactional versus marketing SMS?

Yes, in one key way. Transactional messages (appointment reminders, order confirmations, password resets) face less aggressive filtering because they go out in lower volume with less promotional content. They still need seed testing to confirm the sending number is registered correctly and links resolve. The opt-out requirement also differs: transactional messages may not require a STOP instruction in every message, but including one still helps deliverability.

How do I handle it if my STOP reply test does not trigger the opt-out?

Stop everything. A broken opt-out mechanism is a direct TCPA violation under 47 USC 227(b), and sending any further marketing messages to someone who replied STOP creates per-message liability at $500 to $1,500 each. Fix the platform configuration, test again until it works reliably, and only then resume sending. Document the fix. If you already sent to live contacts with a broken opt-out, consult a TCPA attorney about your exposure before sending anything further.

Sources

  1. AT&T Business, small business messaging and fraud protection overview: AT&T operates an Advanced Messaging Fraud Protection system that filters bulk SMS traffic on its network
  2. The Campaign Registry, 10DLC registration overview: 10DLC registration is required for A2P business SMS traffic over US long codes; brands and campaigns must be registered through TCR
  3. CTIA, short code registry and messaging resources: Short code leasing costs $500 to $1,000 per month and provisioning takes 8 to 12 weeks
  4. FCC, 2023 Report and Order on unwanted text messages (FCC 23-107): The FCC's 2023 one-to-one consent order requires that TCPA consent be obtained directly by the specific seller and not aggregated through lead generators; effective January 2025
  5. US Congress, Telephone Consumer Protection Act, 47 U.S.C. § 227 (via Cornell Legal Information Institute): The TCPA creates a private right of action with statutory damages of $500 to $1,500 per message; the FCC has held that SMS texts to cell phones constitute 'calls' under the statute
  6. Twilio, SMS documentation and delivery status: Twilio documentation states that a 'Delivered' status does not guarantee the message was displayed to the end user; DLR accuracy varies by carrier
  7. FTC, National Do Not Call Registry: The National Do Not Call Registry applies to promotional calls and texts to cell phones; businesses must scrub lists before sending marketing messages
  8. Google, Safe Browsing Transparency Report: Google Safe Browsing allows domain lookup to check whether a URL is on a blocklist, useful for verifying SMS link domains before sending
  9. FCC, consumer guides on unwanted calls and texts: The FCC confirms that text messages to cell phones are covered by TCPA rules, including DNC requirements and the mandate to honor opt-out requests

Disclaimer: LeadCompliant is a compliance review tool, not a law firm. We do not provide legal advice. Consult with a TCPA attorney for legal guidance on specific compliance questions. Compliance scores, audits, and risk assessments are informational only.

LeadCompliant Team

LeadCompliant provides expert guidance and tools to help you succeed. Our content is reviewed for accuracy and kept up to date.

Related Articles

Related Glossary Terms

LeadCompliant
Build My Kit