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.

Screenshot 2026-05-26 at 16.48.19.png
EIN / Brand / Campaign 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.

Screenshot 2026-05-26 at 16.48.40.png
Daily volume per channel cards

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.

Screenshot 2026-05-26 at 16.49.31.png

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

Screenshot 2026-05-26 at 16.49.59.png
Circuit-breaker thresholds

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