SMS Deliverability: How to Maximize Delivery Rates and Avoid Filters
Practical guide to SMS deliverability — sender reputation, content optimization, number warm-up, delivery receipts, and strategies to avoid carrier filtering.
SMS Deliverability
SMS deliverability is the percentage of sent messages that actually reach the recipient's handset — not merely the percentage accepted by a carrier gateway. A message can be "accepted" by the SMSC and still silently dropped by downstream carrier filtering, never arriving on the device. The gap between acceptance rate and true delivery rate is where most deliverability problems hide.
Delivery Rate Benchmarks
| Range | Assessment | Typical Cause |
|---|---|---|
| 95%+ | Excellent | Properly registered sender, clean content, warm number |
| 90–95% | Acceptable | Minor filtering, some invalid numbers in the recipient list |
| 85–90% | Problematic | Active carrier filtering or reputation degradation |
| Below 85% | Critical | Likely blocklisted, unregistered, or sending prohibited content |
These benchmarks apply to A2P (application-to-person) traffic on US carriers. International rates vary significantly by country and operator.
Factors That Affect Deliverability
1. Sender Reputation
Carriers assign reputation scores to sending numbers based on historical behavior. The key inputs are:
- Number age. Newly provisioned numbers have no history, which carriers treat with suspicion. A number that has been active for months with clean traffic carries inherent trust.
- Complaint history. When recipients report messages as spam (via 7726 forwarding or carrier apps), the sending number accumulates complaints. Even a small number of complaints relative to volume can trigger filtering.
- Opt-out rate. High STOP reply rates signal unwanted traffic. Carriers monitor opt-out ratios as a primary reputation signal.
- Prior filtering events. If a number has been previously filtered or suspended, that history persists even after the issue is resolved.
2. Content Quality
Carrier content analysis systems (both rule-based and ML-driven) scan every message. The following patterns increase filtering risk:
- URLs, especially from shared shortener domains (bit.ly, tinyurl.com, t.co) — these are among the most heavily filtered elements in any SMS.
- Spam trigger phrases such as "free," "winner," "act now," "limited time," "click here," and similar direct-response marketing language.
- ALL CAPS text, excessive punctuation (!!!), or emoji-heavy content.
- Identical messages sent to many recipients without variation (template fingerprinting).
- Phone numbers or email addresses embedded in message bodies, which carriers associate with phishing.
3. Volume and Velocity
Sending patterns matter as much as content:
- Burst sending. Transmitting hundreds of messages per minute from a single number triggers rate-based filters. Carriers expect organic, distributed patterns.
- Snowshoe sending. Spreading traffic across many numbers to stay under per-number thresholds is a well-known spam technique. Carriers detect correlated sending across number pools and filter the entire group.
- Sudden volume spikes. A number that sends 10 messages per day and suddenly sends 10,000 will be flagged regardless of content quality.
4. Registration Status
US carriers require sender registration through one of three frameworks:
- 10DLC (10-Digit Long Code). Requires brand registration with The Campaign Registry (TCR) and campaign-level approval. Unregistered 10DLC traffic is subject to heavy filtering or outright blocking by all major US carriers.
- Toll-free verification. Toll-free numbers (8XX) must complete verification through the Toll-Free Hub. Unverified toll-free numbers face throughput limits and increased filtering.
- Short codes. Require carrier-by-carrier approval through the CSCA (Common Short Code Administration). Pre-approved short codes receive the highest throughput and lowest filtering rates.
Sending A2P traffic from an unregistered number is the single most common cause of poor deliverability.
5. Recipient Engagement
Carriers track how recipients interact with messages from a given sender:
- Reply rates. Two-way conversation signals legitimate communication. Numbers that only send outbound and never receive replies look more like spam sources.
- Opt-out velocity. A sudden spike in STOP replies after a campaign indicates recipients did not expect the message.
- Handset-level spam reports. Modern smartphones allow users to report spam directly from the messaging app, feeding data back to carrier filtering systems.
Number Warm-Up
New phone numbers — whether 10DLC, toll-free, or local — should be ramped up gradually. Warm-up establishes sending history and builds carrier trust before reaching production volume.
Why Warm-Up Matters
A new number with zero history that immediately sends thousands of messages exhibits the exact pattern carriers associate with disposable spam numbers. Gradual volume increase demonstrates legitimate, ongoing use.
Typical Warm-Up Schedule
| Day | Daily Volume | Notes |
|---|---|---|
| 1–2 | 10–25 | Seed messages to known, engaged recipients |
| 3–4 | 50–100 | Expand to broader recipient set |
| 5–7 | 100–250 | Monitor DLRs for any filtering signals |
| 8–14 | 250–500 | Steady increase, maintain consistent daily sends |
| 15–21 | 500–1,000 | Approaching production volume |
| 22–30 | 1,000–2,500 | Full ramp; adjust ceiling based on 10DLC trust score |
| 30+ | Production target | Stable volume; avoid sudden spikes beyond 2x daily average |
This schedule assumes a standard 10DLC campaign. Short codes and verified toll-free numbers can tolerate faster ramps due to their pre-approval status, but even these benefit from a 7–14 day warm-up period.
Warm-Up Best Practices
- Send to recipients who are likely to reply, as two-way traffic builds reputation faster.
- Vary message content across recipients to avoid template fingerprinting.
- Space messages evenly throughout the day rather than sending in bursts.
- Monitor delivery receipts daily and pause the ramp if delivery rates drop below 90%.
Content Best Practices
Avoid URL Shorteners
Shared-domain shorteners (bit.ly, tinyurl.com, goo.gl, t.co, ow.ly) are the single most effective way to get messages filtered. Spammers use these services to mask destination URLs, so carriers apply aggressive filtering to any message containing them.
Instead: Use a branded domain for links (e.g., links.yourdomain.com/offer). Branded short domains that resolve to known, reputable destinations pass carrier filtering at much higher rates.
Keep Messages Short
SMS messages are encoded in segments:
- A single-segment message can contain up to 160 characters using GSM-7 encoding.
- Multi-segment messages use 7 bytes per segment for the UDH (User Data Header) that enables reassembly, reducing usable payload to 153 characters per segment.
- Unicode messages (emoji, non-Latin scripts) use UCS-2 encoding: 70 characters for a single segment, 67 characters per segment for multi-part.
Single-segment messages are cheaper, faster to deliver, and less likely to encounter reassembly issues on older handsets. When possible, keep messages under 160 GSM-7 characters.
Use Opt-Out Language
Every A2P message should include a clear opt-out mechanism. The standard is:
Reply STOP to unsubscribeIncluding opt-out language is required by TCPA regulations and CTIA guidelines. Carriers also use its presence as a positive signal — messages without it are more likely to be filtered. Place opt-out text at the end of the message to avoid disrupting the primary content.
Avoid Spam Trigger Patterns
- Do not use ALL CAPS for emphasis. Use sentence case.
- Avoid excessive punctuation or special characters.
- Do not include "FREE" offers or urgency language ("Act NOW," "Limited time").
- Avoid dollar signs and price references in promotional messages.
- Do not use Unicode look-alike characters to bypass filters (e.g., replacing "a" with "а" from Cyrillic). Carriers detect this technique and treat it as a strong spam signal.
Multi-Segment Messages (Concatenation)
When a message exceeds the single-segment limit, the sending SMSC splits it into multiple segments, each containing a UDH (User Data Header) with three fields:
| UDH Field | Purpose |
|---|---|
| Reference number | Links segments belonging to the same logical message |
| Total segments | How many parts the complete message contains |
| Sequence number | Position of this segment in the sequence (1 of N, 2 of N, etc.) |
The recipient's handset reassembles the segments into a single displayed message using these headers. The UDH occupies 6–7 bytes per segment (depending on 8-bit vs 16-bit reference numbers), which is why multi-segment messages carry only 153 GSM-7 characters or 67 UCS-2 characters per segment instead of the full 160 or 70.
Practical implications:
- A 161-character GSM-7 message costs two segments (2x the per-message cost on most platforms), not 1.006 segments.
- Segment boundaries do not respect word boundaries. A word can be split across segments during transmission.
- Some older handsets or international carriers may not support concatenation, displaying each segment as a separate message.
- Maximum concatenated length is typically 10–15 segments (1,530–2,295 GSM-7 characters), though practical limits vary by carrier.
Monitoring Deliverability
Delivery Receipts (DLRs)
Delivery receipts are status callbacks from the carrier network indicating what happened to a message after submission. Common DLR statuses:
| Status | Meaning |
|---|---|
| Delivered | Message confirmed received by the handset |
| Sent | Message accepted by the carrier but no handset confirmation (common on some networks) |
| Undelivered | Carrier attempted delivery but failed (phone off, number invalid, mailbox full) |
| Failed | Message rejected by the carrier (content filtering, invalid number, blocked sender) |
| Queued | Message accepted and awaiting delivery attempt |
| Expired | Message exceeded the carrier's validity period (typically 24–72 hours) without delivery |
A healthy campaign should show Delivered rates above 95%. A Sent status without a subsequent Delivered confirmation is ambiguous — some carriers do not return final delivery confirmation, so Sent may represent either delivery or silent filtering.
Testing Across Carriers
Carrier filtering is not uniform. AT&T, Verizon, and T-Mobile each operate independent filtering systems with different thresholds and content rules. A message that delivers on T-Mobile may be silently filtered on AT&T.
Maintain test numbers on each major carrier and send representative message content before launching campaigns. This catches carrier-specific filtering issues before they affect production traffic.
Analytics and Dashboards
Most CPaaS providers (Twilio, Vonage, Sinch, Bandwidth, Telnyx) offer deliverability dashboards showing:
- Per-campaign delivery rates broken down by carrier
- Error code distribution (30003, 30005, 30006, etc.)
- Opt-out rates and complaint ratios
- Throughput utilization relative to 10DLC limits
Review these metrics daily during active campaigns and weekly during steady-state sending.
7726 (SPAM) Report Monitoring
Recipients can forward suspected spam messages to 7726 (which spells "SPAM" on a phone keypad). Carriers aggregate these reports and use them to identify spam senders. A spike in 7726 reports against a sending number can trigger immediate filtering.
Some CPaaS providers surface 7726 complaint data in their dashboards. Where available, monitor this metric and treat any complaints as high-priority issues requiring immediate content or targeting review.
Remediation: What to Do When Filtered
When delivery rates drop or messages are actively being filtered:
-
Identify the scope. Determine whether filtering is carrier-specific (e.g., AT&T only) or universal. Carrier-specific filtering suggests a content or reputation issue with that carrier's system.
-
Audit content. Remove or replace URLs, especially shortener links. Eliminate spam trigger language. Simplify the message to plain text without special characters.
-
Check registration status. Verify that 10DLC campaigns are approved and active. Confirm toll-free verification is complete. Registration lapses or suspensions cause immediate filtering.
-
Reduce volume. Drop to warm-up levels and gradually re-ramp. Continued high-volume sending into a filter worsens reputation.
-
Rotate numbers (with caution). Replacing a filtered number with a new one provides a fresh start, but the new number must be properly warmed up. Rapid rotation across many numbers triggers snowshoe detection and makes the problem worse.
-
File carrier appeals. Major carriers accept unblock requests through their A2P messaging portals or through the CPaaS provider's support channels. Include the sending number, campaign registration details, sample message content, and evidence of recipient consent.
-
Review recipient lists. Remove invalid numbers, long-inactive recipients, and anyone who has complained. High bounce rates and complaint ratios compound filtering.
Deliverability recovery is not instant. Expect 2–4 weeks for reputation to rebuild after a filtering event, assuming the root cause has been fully addressed.
Further Reading
- Carrier SMS Filtering — How AT&T, Verizon, and T-Mobile analyze and filter SMS traffic
- Short Code vs 10DLC vs Toll-Free — Comparing SMS sender types: cost, throughput, registration, and use cases
SHAFT+ Restricted SMS Categories: What Carriers Block and Why
Complete guide to SHAFT+ restricted SMS content categories — sex, hate, alcohol, firearms, tobacco, cannabis, gambling, crypto, and how each enforcement layer (carrier, TCR, CPaaS) treats them.
SMS Testing Tools: Seed Lists, Route Testing, and E2E QA
Internal evaluation of SMS testing approaches and vendors for Dial: app-flow SMS testing, route-quality testing, seed-list measurement, and recommended next steps.