A bulk SMS service sends one message to a large list of consented contacts from carrier-registered (10DLC) numbers. It meters the job in segments, paces it to the throughput carriers allow, and enforces opt-outs and quiet hours along the way. Everything else, including the dashboard, the templates and the scheduling, sits on top of those four mechanics.
This post explains those mechanics: what has to be registered, how fast carriers let you send, how a 5,000-contact campaign turns into a segment bill, what gets traffic filtered, and what the law expects around opt-outs. "Bulk text messaging" and "bulk SMS marketing" are the same job with different labels, so we treat them as one thing. We make Ready, so the last third shows how a campaign runs on it. The mechanics apply to any provider.
What a bulk SMS service actually does
Strip away the interface and a bulk SMS service handles five things for you:
- Registration. It gets your business (the brand) and your use case (the campaign) registered with US carriers so your numbers can send application-to-person (A2P) traffic.
- Pacing. It queues the send and releases it at the rate your registration allows.
- Metering. It splits each message into segments and bills each segment.
- Suppression. It drops opted-out, blocklisted and invalid numbers before they cost you anything.
- Two-way handling. It routes replies (including STOP) back into an inbox and acts on them.
Any provider that skips one of these leaves that job to you. A raw CPaaS API, for example, gives you sending and metering but expects your engineering team to build suppression logic, quiet-hours holds and the registration flow.
Step one: registered 10DLC numbers
In the US, business texting from ordinary local numbers runs on A2P 10DLC. Carriers want to know who is sending (brand registration) and what they are sending (campaign registration, with a declared use case and sample messages). Unregistered traffic gets filtered, so registration is a prerequisite, not optional paperwork.
On Ready, registration happens in-app. It has no setup fee. When you submit, you pay the first month, $25. After that the monthly cost is $25 for registration and $2 per number. Most approvals take 2 to 7 days.
Before you register, an account can send up to 500 texts a month at its normal per-text rate. If you bought a number before registering, it sends on Ready's shared registration at the same rate while your own registration is in review. That covers testing and small one-to-one sends. It does not cover a real campaign to thousands, which is what registration exists for.
On Ready, the app files the campaign for you; over the API you set use_case. Either way, the use case has to match what you actually send. A campaign registered for one thing and used for another is a common reason approved traffic still gets throttled later.
Step two: throughput, or why "thousands" isn't instant
Carriers don't publish an official rate card, so every figure here is a rough approximation.
- Per-second rate. A fresh standard campaign with no vetting typically gets around 1 to 4 segments per second. Higher use-case tiers get tens, roughly 10 to 75.
- T-Mobile daily brand cap. This is set by trust score and runs at about 2,000, 10,000, 40,000, 100,000 or 200,000 messages a day, lowest score first.
- AT&T throttles per second and per minute rather than with a hard daily cap.
Worked example: how long a 15,000-segment campaign takes
Assume 15,000 segments at an assumed 3 segments per second:
- 15,000 ÷ 3 = 5,000 seconds, or about 83 minutes
- At an assumed 1 segment per second, the same campaign takes about 4 hours 10 minutes
If your brand sits at the lowest T-Mobile tier (around 2,000 a day), the T-Mobile share of a large list can spill into the next day no matter how fast the per-second rate is.
Brand vetting is optional and costs $79 Standard or $179 Enhanced, one-time. It raises your trust score. It moves the daily cap only if the new score crosses a tier, and it does not change the per-second rate. Most senders don't need it. Whether it pays off depends on volume, which our brand vetting breakdown works through.
Step three: segments, and how bulk SMS is billed
Carriers meter segments, not messages:
| Message type | Single segment | Each part of a multipart message |
|---|---|---|
| Plain text (GSM-7) | 160 characters | 153 characters |
| Contains an emoji or other non-GSM character | 70 characters | 67 characters |
One emoji switches the whole message to unicode. A 140-character text with one emoji is 3 segments, not 1. Ready swaps curly quotes, long dashes and ellipses for plain versions before sending, so those characters never change your count on Ready. An emoji still does.
Ready's Standard rate is $0.0075/segment plus a $0.0045 carrier fee per segment, itemized on the bill. There is one rate. Enterprise pricing is custom, so talk to us if that's you. Two optional compliance features each add $0.003 per segment when you switch them on for an account: scrubbing and landline validation. Both are off by default, and the per-segment rate above does not include them. Replies you receive are billed like sent texts.
Worked example: the emoji tax on a 5,000-contact campaign
Assume a 175-character promo with one emoji, sent to 5,000 opted-in contacts:
- 175 characters in unicode means 67-character parts, so 3 segments per message
- 5,000 × 3 = 15,000 segments
- 15,000 × $0.0075 = $113, plus 15,000 × $0.0045 in carrier fees
Rewrite it as a 155-character plain-text message with no emoji:
- 1 segment per message, so 5,000 segments
- 5,000 × $0.0075 = $38, plus 5,000 × $0.0045 in carrier fees
The rewrite removes 10,000 segments, or $75 of the per-segment charge. It also cuts the send time to a third, because throughput is counted in segments too.
On price per segment alone: raw CPaaS APIs such as Twilio and Telnyx, and GoHighLevel's LC Phone, charge less per segment. If you have engineers to build registration, suppression and an inbox yourself, that can be the right call. What our rate covers is everything in the next two sections plus the full platform: CRM, pipeline, automations and a unified inbox.
What gets bulk texts filtered
Registration gets you onto the road. Content and behavior decide whether carriers wave each message through. Common triggers:
- Unregistered or mismatched traffic. Sending promos on a campaign registered for account notifications.
- Public URL shorteners. Shared bit.ly-style links are a well-known filter signal. We cover the dedicated-domain fix in this post on shorteners.
- Restricted content. Sex, hate, alcohol, firearms and tobacco (SHAFT), cannabis, and lending language that reads like high-risk finance.
- Spammy formatting. All caps, piles of exclamation marks, "FREE!!!", and vague urgency with no brand name.
- Bad lists. High rates of invalid numbers, landlines and complaints tell carriers the list wasn't consented.
An approved campaign can still see individual messages blocked on content. This post on approved-then-filtered campaigns explains why registration doesn't fix that.
Opt-out law and consent: the part that costs real money
The TCPA allows statutory damages of roughly $500 to $1,500 per text. On a 5,000-contact campaign, that's the number to keep in mind. The basics:
- Text only people who agreed to it. Cold outreach belongs on the phone and in the mail. SMS goes to consented contacts and leads who have replied.
- Honor STOP immediately and everywhere. On Ready, inbound STOP and UNSUBSCRIBE are honored automatically, and the opt-out applies across all campaigns. Opted-out numbers are refused up front and not charged.
- Respect quiet hours. Ready holds sends outside permitted local hours based on the recipient's area and charges for them only when they go out. Campaigns, drip campaigns and automations wait up to 24 hours for the window; a one-to-one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be resent; a one-to-one reply to someone who texted you in the last 24 hours goes out at any hour.
- Screen risky numbers. The standalone TCPA & DNC Litigator Scrub costs $0.005 per contact and checks each number against known TCPA-litigator and DNC-complainer lists. If you'd rather scrub every send, switch on the per-segment scrub instead.
- Keep your own consent records. Ready records your opt-in attestation for each bulk send and each API send that sets
consent_attested: who sent, to how many, and when. That attestation is not a per-contact consent record. The opt-in time, wording and page URL for each contact have to live in your store, form tool or CRM.
None of this makes a sender lawsuit-proof. Compliance is ultimately the sender's responsibility. These tools reduce the risk; they don't transfer it.
How a bulk SMS service campaign runs on Ready
The dashboard flow:
- Register. Submit brand and campaign in-app. Use your 20 free one-to-one texts before you register, because the free texts end once a registration is paid for. Campaigns are paid from the first text, and to send any text you need a card and a number ($2 a month, the first month charged when you get it).
- Import contacts. Pull them in, or connect GoHighLevel over OAuth to get two-way sync mapped per location, so each sub-account stays isolated.
- Write the message. The AI message writer drafts it, the spam-filter check flags risky wording, and the segment count shows before you commit.
- Schedule or send. Ready paces delivery to your throughput and holds anything that would land in quiet hours. Local presence, on by default, sends from your number closest to each contact's area code.
- Handle replies. Replies land in the Inbox (and in GHL for connected accounts). STOP is processed automatically.
Campaigns and drip campaigns send from regular registered numbers. A blue line (iMessage) is for one-to-one conversations, not bulk sends.
Platforms that text on behalf of their own customers usually do this over the API, with one sub-account per customer. A bulk send looks like this:
POST https://api.tryready.com/v1/messages/bulk
X-API-Key: <key>
Idempotency-Key: 3f6c1a2e-8b1d-4d7a-9c55-2f0e7b6a91d4
{"to": ["+12125550199", "+15559876543"], "body": "Your spring service window opens Monday. Reply STOP to opt out.", "consent_attested": true} The Idempotency-Key header means a retried request never sends twice. Full details are in the bulk messages docs and the quickstart. For batching and retry patterns, see our bulk SMS API guide.
The practical takeaway
Sending to thousands comes down to four things: register first, plan around throughput, write to the segment, and let suppression run before every send. Get those right and the choice of provider is about what you want included versus what you'll build yourself. If you want to see the flow, sign up, send your free one-to-one texts to your own phone, and check the per-segment card on the pricing page before you register.
FAQ
Is bulk SMS marketing legal in the US?
Yes, when you text people who gave consent, honor opt-outs and respect quiet hours. TCPA damages of roughly $500 to $1,500 per text make consent the part not to skip.
How many texts can I send per day?
It depends on your registration. A fresh standard campaign sends about 1 to 4 segments per second, and T-Mobile caps brands at roughly 2,000 to 200,000 messages a day by trust score. These are approximations, since carriers publish no official figures.
Do I need 10DLC registration for bulk texting?
Yes. Unregistered traffic gets filtered. On Ready, registration has no setup fee: you pay $25 at submit for the first month, then $25 a month for registration and $2 per number. Most approvals take 2 to 7 days.
Why did my message cost three segments?
Either it ran past 306 plain-text characters (three 153-character parts), or it contained an emoji and ran past 134 characters (67 per part). Each segment is billed.
Can I send bulk campaigns from an iMessage blue line?
No. Campaigns and drip campaigns go out from regular registered numbers. A blue line is for one-to-one conversations and can start up to 50 new conversations a day.