SMS Sending Guide: Volume, Warm-up & Structure
Last updated: May 26, 2026
A reference guide for how sending volume, warm-up, and brand structure work across 10DLC, toll-free, and short codes. For the full interactive version: volt-sender-guide.netlify.app →
Quick reference
Three channels, three different volume profiles. Volt's recommendation is to operate at the safe target rather than push to the ceiling.
Channel | Safe daily volume | Upper ceiling | Applies per |
|---|---|---|---|
10DLC | 50,000 / day | 100,000 / day | Brand (not number) |
Toll-Free | 100,000 / day | 200,000 / day | Number |
Short Code | 250,000 / day | 500,000 / day | Code |
How EINs, brands, and campaigns relate
(Scope: 10DLC only)
On 10DLC, sending capacity is set at the brand level by The Campaign Registry. Everything traces back to the EIN. A single sender can register multiple EINs, each with one or more brands, and each brand can run one or more campaigns. Short codes and toll-free numbers do not use this hierarchy.

The most common misconception about 10DLC is that adding more numbers gives you more capacity. It doesn't. Plan totals at the brand level, not the number level.
Daily volume per channel
Each channel has a different upper ceiling. Operating at roughly the midpoint of each ceiling is the safest sustained sending volume. Pushing closer to the maximum increases the risk of carrier blocks and aggregator filtering.

Carrier rate limits (10DLC only)
Carrier | Limit type | Detail |
|---|---|---|
T-Mobile | Daily, per brand | 200K (top tier) / 40K (high) / 10K (medium) / 2K (basic) based on trust score |
AT&T | Throughput, per number | 240 TPM. Enforced per second, sustained excess triggers a 30-minute block |
Verizon | Throughput, per number | 6,000 TPM. No daily cap, but content-filtered against registered samples |
Two-week warm-up
All three channels follow the same warm-up shape: start small, increase steadily, give carriers two weeks to see consistent, predictable behavior before settling at the daily target. Only the target ceiling changes by channel.

Daily pattern by channel
Channel | Day 1 start | Day 14 target | Daily pattern |
|---|---|---|---|
10DLC | 5,000 / day | 50,000 / day per brand | Add ~5K/day week 1, taper in week 2 |
Toll-Free | 10,000 / day | 100,000 / day per number | Add ~10K/day week 1, ease in week 2 |
Short Code | 25,000 / day | 250,000 / day per code | Add ~25K/day week 1, smaller steps week 2 |
The ramp gates on opt-out signal

These thresholds are not optional. The warm-up schedule above assumes a happy path, and if either signal degrades, you hold or pull back before stepping up further.
Best practices to protect throughput
Once you're at full capacity, the goal is to stay there. Carriers and aggregators can throttle, filter, or block any sender whose behavior drifts from its registration. These patterns consistently keep accounts healthy.
Match registered samples. Sent messages should stay close to your registration samples in structure and intent. Drift is the most common cause of Verizon filtering, TFN aggregator blocks, and short code review flags.
Include opt-out language. Every campaign-initiated message must include opt-out language such as "Reply STOP to unsubscribe."
Watch AT&T per-second bursts (10DLC). Sustained per-second bursts trigger 30-minute blocks even when you're well under your daily cap. Spread sends across the day.
Monitor per-carrier delivery (10DLC). T-Mobile dipping usually means brand cap. AT&T dipping usually means a TPM issue. Verizon dipping usually means content drift.
Keep TFN opt-out rates below 1%. Zipwhip's filtering is highly sensitive to opt-out rate. Anything above 1% should trigger a hold on volume increases.
One content type during short code warm-up. First two weeks on a new short code, send a single content type per code.
Vary copy across brands. Sending identical copy across multiple brands is a spam signature. Vary the actual language, not just the sender.
Avoid shared link shorteners. Using the same shortener domain across brands means a flag on one brand inherits to all of them. Use brand-specific shorteners or verified domains.
Treat volume jumps as new warm-ups. Any future jump above 1.5x your established daily average should ramp again.
For the full interactive guide with live diagrams: volt-sender-guide.netlify.app →