← All Articles

How to Stop Twilio SMS Throttling and Carrier Filtering (2026 Guide)

You wired up Twilio for sales follow-up. The first few messages went through. Then your queue started backing up, error 30007 showed up in the logs, and recipients stopped replying. Now you are not sure if the messages are being throttled, filtered, or just lost.

This guide is the diagnostic checklist used by sales engineering teams to fix Twilio SMS deliverability in 2026. It separates the two problems that look identical from the outside (throttling vs. carrier filtering) and tells you what to do for each.

Bottom line up front: If your messages are not landing, the cause is almost always one of three things: missing or incomplete A2P 10DLC registration, content patterns that trip carrier filters, or volume that ramped too fast for the carriers' reputation models. Fix those three and 90% of deliverability complaints disappear.

Throttling vs. carrier filtering: they look the same, they are not

Most "Twilio is broken" tickets are not actually Twilio's fault. There are two different failure modes, and the fix depends on which you have.

SymptomThrottlingCarrier filtering
Where it happens Twilio queue (your account) Carrier network (T-Mobile, AT&T, Verizon)
Twilio error code Messages stay in queued longer than expected 30007 (filtered/blocked) or 30003 (unreachable)
Twilio status queuedsent (eventually) sentfailed or undelivered
Fix Higher MPS tier or batch pacing A2P 10DLC, content cleanup, sender reputation

Step 1: Confirm A2P 10DLC registration is complete

This is the single most common cause of carrier filtering in 2026. If you skipped or partially completed A2P 10DLC registration, US carriers will filter your traffic regardless of how clean your content is.

What to verify in the Twilio Console under Messaging → Regulatory Compliance → A2P 10DLC:

  1. Your Brand is registered and approved (not "Pending" or "Failed")
  2. Your Campaign is registered, with use case selected (Marketing, Customer Care, Account Notification, etc.)
  3. Each phone number you send from is linked to the campaign
  4. Your sample messages in the campaign match what you actually send
  5. Your opt-in flow matches what is on your website or signup form

If any of those are missing, T-Mobile in particular will filter your traffic aggressively. AT&T is more lenient on Standard Brands but still filters Sole Proprietor traffic. Verizon falls somewhere between.

Step 2: Audit your message content

Even with A2P 10DLC done correctly, carrier ML filters look at message content. Patterns that trigger filtering in 2026:

Quick test: if your message looks like something a phisher might send, it will be filtered. Write like a real person who knows the recipient.

Step 3: Check your sending volume ramp

Carriers track sender reputation over time. A new 10DLC number that suddenly sends 1,000 messages a day looks suspicious. The fix is to ramp volume gradually.

A reasonable ramp for a brand-new registered campaign:

If you need to scale faster, distribute across multiple registered numbers from day one rather than spiking one number's volume.

Step 4: Verify your MPS limit and queue behavior

Standard Twilio accounts start at 1 message-per-second (MPS). If you try to send 100 messages in 1 second, the other 99 sit in the Twilio queue. They will eventually go out, but if you have a TCPA quiet-hours window or a customer-facing "you'll receive a confirmation in seconds" promise, the delay matters.

Higher MPS limits are available with:

If your application sends in bursts, build a queueing layer in your code that paces sends to your MPS limit rather than firing the API as fast as your CPU can.

Step 5: Look at your delivery rate per carrier

Twilio's Insights dashboard shows delivery rates broken down by carrier. If T-Mobile is at 60% delivered while AT&T and Verizon are at 95%, you have a T-Mobile-specific filtering problem. Common causes:

The diagnostic checklist (save this)

When messages stop landing, work through this list in order:

  1. What is the Twilio status: queued, sent, failed, undelivered?
  2. If failed or undelivered, what is the error code? Look it up in Twilio's error reference.
  3. Is A2P 10DLC fully registered, with the sending number linked to an approved campaign?
  4. Does the message content avoid URL shorteners, money keywords, all-caps, and "click here" phishing patterns?
  5. Is sending volume within the ramp curve for the number's age?
  6. Is the application respecting Twilio's MPS limit, or firing too fast?
  7. Is the failure carrier-specific (look at Insights)?
  8. Has the recipient explicitly opted in, and can you prove it (timestamp + IP + opt-in source)?

Most teams find their issue in steps 1–3. If you get through all 8 and traffic is still being filtered, open a Twilio support ticket with the message SIDs and your campaign info. They can see things you cannot.

The iMessage alternative

A2P 10DLC, carrier reputation, content filtering, and ramp curves are all problems specific to application-to-person SMS over US cellular carriers. They do not exist on iMessage, because iMessage is Apple's proprietary protocol and routes through Apple's infrastructure, not the carriers.

This is one reason field sales reps increasingly use iMessage from their personal iPhones for SMS follow-up rather than building on Twilio. The message comes from the rep's actual phone number, recipients see it as a normal text from a person they know, and there is no A2P 10DLC paperwork or carrier filtering to debug.

FollowUp takes this approach on its Pro tier: SMS follow-up sequences run through iMessage on the rep's own iPhone, so deliverability and reputation are not engineering problems you have to solve. The Business tier still uses a Twilio number (with A2P 10DLC handled for you) for teams that need a dedicated business line.

Skip the Twilio deliverability rabbit hole

FollowUp's Pro tier sends SMS through iMessage on your own iPhone number. No A2P 10DLC, no carrier filtering, no sender reputation to manage. Free tier available with no credit card.

Get the iOS app

Frequently asked questions

What does Twilio error code 30007 mean?

Error 30007 means the message was filtered by the carrier, not by Twilio. The carrier blocked it before delivery to the handset. Common causes: missing A2P 10DLC registration, the message content tripped a carrier spam filter, the recipient's carrier flagged the sending number for prior abuse reports, or the sending number is on a blocklist.

How do I fix Twilio SMS throttling?

First, identify whether the issue is Twilio throttling (queue rate limits on your account) or carrier filtering (handled at the carrier level). Twilio throttling is solved by upgrading your account tier or requesting a higher MPS limit. Carrier filtering requires A2P 10DLC registration, fixing message content, ramping volume gradually, and resolving any abuse reports against your sending number.

Do I need A2P 10DLC registration in 2026?

Yes. A2P 10DLC registration is required for any business sending application-to-person SMS to US recipients on standard 10-digit long codes. As of 2026, all major US carriers enforce 10DLC and unregistered traffic faces severe filtering or outright blocking. There is no grace period anymore.

Can I avoid A2P 10DLC by sending from iMessage?

Yes. iMessage is Apple's proprietary protocol and does not route through US cellular carriers, so A2P 10DLC does not apply. This is one reason field sales reps using personal iPhones to send SMS via iMessage avoid the throttling and filtering problems that plague Twilio-based stacks.

What is the right messages-per-second limit for Twilio?

Standard Twilio accounts start at 1 MPS. Higher tiers and registered A2P 10DLC campaigns can request higher limits (3, 10, or more MPS depending on campaign type). The throttle exists to prevent abuse spikes; trying to send 1,000 messages in a few seconds will queue them and may trigger carrier-side rate limiting on top of Twilio's queue.

Related Articles

TCPA Compliance Guide for SMS Marketing →

SMS vs Email for Sales: 2026 Data Analysis →

FollowUp vs SimpleTexting: Comparison →

← Back to Blog