You scheduled the flash sale for noon. At 11:59 you queue a text to your 40,000 opted-in subscribers: "⚡ 2 HOURS ONLY — 30% off everything, code FLASH30." You hit send at 12:00:00 and picture 40,000 phones buzzing at once.

They don't. The first few thousand land in the first minute. The rest arrive over the next 90 minutes — some after your two-hour window is already half gone. By the time your last subscriber gets the text, the sale is closer to over than to starting. That's not a bug in your platform. It's the carrier throughput ceiling doing exactly what it's designed to do, and almost nobody tells DTC teams about it until they've already burned a discount window.

Full disclosure: I work for ReadySMS, so I have skin in this game. But the physics of throughput apply no matter whose platform you send on, and the fix is mostly about timing, not about paying more.

Why "send now" isn't instant

Every 10DLC campaign has a per-second sending rate — messages per second, or TPS (transactions per second). The carriers assign it based on your brand's trust score and campaign type. It's not something your SMS platform overrides by throwing more servers at the problem. The carrier accepts messages at your registered rate and no faster; anything above it gets queued or rejected.

So when you "blast" 40,000 messages, your platform hands them to the carrier at whatever TPS your campaign is registered for, one batch per second, until the queue drains.

We wrote a longer breakdown of this in Why Your 50,000-Contact Blast Takes 4 Hours — the short version is that the send duration is almost entirely a function of TPS, not list size in isolation.

The math on your flash sale

Say your campaign is registered at a modest, common throughput. Here's how long a single-segment blast takes at a few different TPS rates:

List size10 TPS30 TPS75 TPS
10,000~17 min~6 min~2 min
40,000~67 min~22 min~9 min
100,000~2h 47m~56 min~22 min

At 10 TPS, your 40,000-person "instant" flash sale takes over an hour just to leave the building. If your offer is a two-hour window, more than half your list gets the alert with less than an hour left to act — and the last few thousand may get it after the sale ends.

And that assumes single-segment messages. If your promo runs long or includes an emoji, it fragments, and each fragment counts against your throughput.

The emoji tax on throughput

A single SMS segment is 160 GSM-7 characters. Add one emoji — that ⚡ you love — and the whole message flips to unicode, dropping the limit to 70 characters per segment (67 for multipart). A 175-character promo with an emoji becomes 3 unicode segments.

That matters twice. First, cost: on ReadySMS Standard pricing, 40,000 contacts × 3 segments × ($0.02 + $0.0045 carrier) = $2,940 instead of $980 for a tight single-segment version. Second, throughput: three segments per message means your effective message delivery rate is a third of your segment TPS. Your 22-minute blast becomes closer to 66 minutes for the same list.

Tight copy is a throughput strategy, not just a cost strategy.

Match the discount window to the delivery curve

The fix isn't "send faster." It's designing the offer so delivery time is baked into the window. Three ways to do that:

1. Widen the window past your worst-case send time. If a 40,000-list at 10 TPS takes ~67 minutes to fully deliver, a two-hour sale gives your last recipient roughly 50 usable minutes. Make it a four-hour or same-day window and everyone gets a fair shot. Shorter, more urgent windows feel better in the copy but punish the tail of your list.

2. Send earlier than the window opens. Queue the blast 60–90 minutes before the sale technically starts, with copy like "Starts at noon — set your alarm." By the time the discount is live, the whole list already has the message. This is the cleanest fix for genuinely short windows.

3. Start the timer at delivery, not at your click. If your commerce platform supports it, key the countdown to when each contact receives the text ("30% off for the next 3 hours") rather than a fixed clock time. Every recipient gets the same window regardless of where they fall in the send queue.

Raise your throughput ceiling before the big sale

Timing works, but you can also lift the ceiling. Two levers:

Register correctly and early. Your TPS is tied to your 10DLC brand and campaign. A properly registered marketing campaign gets a real throughput allocation; unregistered or mis-registered traffic gets filtered or crawls. If you registered a "marketing" use case for what's actually transactional (or vice versa), your delivery silently suffers — we covered that trap in Registering a 'Marketing' Campaign for Transactional Texts. On ReadySMS the registration happens in-app, usually approved in 1–3 days, so don't start it the morning of your sale.

Consider brand vetting if volume justifies it. External 10DLC brand vetting ($40 Standard / $100 Enhanced, one-time) raises your trust score and daily throughput limits. For a store blasting tens of thousands per campaign, that can be the difference between a 20-minute send and an hour. It's not worth it for small lists — we ran the break-even in Is 10DLC Brand Vetting Worth $40?.

The carrier you forgot: T-Mobile and AT&T deliver at different speeds

Here's the gotcha that surprises people even after they understand TPS. Your registered throughput isn't uniform across carriers. The same campaign can fly on one carrier and crawl on another, because each carrier enforces its own per-campaign limits on top of your registered rate.

So your blast doesn't deliver evenly — a chunk of your list on the slower carrier is the actual tail, and it can lag well behind the rest. If you're timing a window down to the minute, plan for the slowest carrier segment, not the average. We dug into this in Same Campaign, Different Carriers.

What "delivered" actually means during a blast

One more thing to watch during a flash sale: your dashboard's "delivered" number. A high delivered rate tells you the carrier accepted the message — it doesn't confirm the phone lit up, and it definitely doesn't tell you when relative to your window. During a staggered send, a contact can show "delivered" at the moment the carrier accepted the segment, which is not the same as the moment it arrived. If you're measuring flash-sale conversion against send time, know what your receipts are and aren't confirming — we broke down that gap here.

A pre-flash-sale checklist

Before you queue the next time-boxed offer:

  • Register the campaign at least a week out. 1–3 day approvals plus buffer.
  • Estimate your send duration. List size ÷ TPS ÷ segments-per-message = seconds. Run it through the cost calculator while you're at it.
  • Trim copy to a single segment. Drop the emoji if it pushes you into unicode; 70 characters disappears fast.
  • Widen or pre-send the window so your last recipient has real time to act.
  • Plan for the slow carrier, not the average.
  • Check quiet-hours overlap — a slow send that starts at 8pm can push part of your list past permitted local hours. If your list spans timezones, read this first.

The practical takeaway

Your flash-sale blast is a queue, not a lightning strike. The list drains at your registered throughput, one batch per second, and if you don't account for that, half your subscribers get the offer with the clock already running out. Tighten your copy so it stays single-segment, register your campaign properly and early, size your discount window against your worst-case delivery time, and — for genuinely short windows — pre-send before the sale opens.

None of that requires spending more per message. It requires knowing your TPS and treating the send as something that takes time. If you want to see what your throughput and per-segment cost look like for a real list size, the ReadySMS pricing page and calculator will get you a concrete number in a couple of minutes — and if you're already on GoHighLevel, the native integration keeps the whole blast, and its receipts, in one place.