A school office can send an email to 1,200 families and many of them won't open it for days. A text to the same families is usually seen the same day. That gap is why schools, PTAs, youth leagues, clubs and member associations move their urgent notices to SMS. It is also why carriers watch this traffic closely. A text sent to a thousand numbers is application-to-person (A2P) traffic, and A2P traffic has rules about registration, consent and opt-outs.
This post covers the setup in order: how to collect consent so it holds up, which 10DLC use case to register, how opt-outs work at scale, which message types clear carrier review, and what a term of school notices costs. The examples use a school, and the same steps apply to a club, congregation, union local or member association.
Why "just text the parent list" gets filtered
Texting 1,200 families from a staff member's cell phone, or from an unregistered business number, looks to carriers like unregistered bulk traffic. They filter it. You won't always get an error. The messages simply don't arrive, and you find out when parents say they never heard about the early dismissal.
The fix is A2P 10DLC registration. You register a brand (the school or organization) and a campaign (what you send and how people opted in). After that, your numbers are tied to a known sender with a declared purpose. If the term is new to you, our 10DLC explainer covers the basics.
On Ready, registration happens in the app:
- Brand: ~$10/mo
- Campaign: ~$20/mo
- Numbers: $2/mo each
- At submit: no setup fee. You pay the first month, $25.
- Approval: most approvals take 2 to 7 days
While you wait, an account can send up to 500 texts a month at its normal per-text rate. An account that bought its number before registering sends on Ready's shared registration while its own registration is in review. The first 20 texts are free one-to-one sends, so use them to test before you register. They end when a registration is paid for, and campaigns are paid from the first text.
Consent: what you need and who keeps it
Schools have more room here than a retailer does. The FCC has said schools can send informational and emergency messages to numbers parents provided for that purpose. Carriers still check your opt-in flow at registration, though, and "they gave us the number at enrollment" is a weak answer if the form never mentioned texting. Collect explicit text consent anyway. It costs one checkbox. This isn't legal advice, so have counsel review the wording if your district has one.
A consent line that works on an enrollment or membership form:
"I agree to receive text messages from Lincoln Elementary about closures, schedule changes and school events at the number above. Message frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help."
Keep these records for each contact: the date they agreed, the form or page where they agreed, and the exact wording they saw. Your student information system or membership database keeps that record, not your texting tool. Ready records your attestation on each bulk send and each API send that sets consent_attested: who sent it, to how many people, and when. That gives you an audit trail of sends. It does not store each recipient's opt-in time, wording or source page, and a keyword reply doesn't create one. Compliance is ultimately the sender's responsibility, and the records above are how you show it. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)
One scope warning: consent to "closures and schedule changes" does not cover fundraising appeals. If you plan to text donation asks, advocacy alerts (call your representative, attend a board hearing), or anything aimed at voters, Ready's acceptable use policy requires written approval first. Email support@tryready.com before the first send and wait for our reply. Signing up and registering is not enough on its own for that traffic.
Picking the right 10DLC use case
The campaign registry offers several use cases. A mismatch between the use case you register and what you actually send is a common cause of throttling or rejection. These are the realistic choices:
| Use case | Fits | Watch out for |
|---|---|---|
| K-12 Education | Public and private K-12 schools texting families | Built for schools. Don't pick it for a youth sports league |
| Account Notification | Member organizations sending dues reminders and account updates | Too narrow if you also send event promos |
| Public Service Announcement | Community alerts with no commercial content | No promotional content at all |
| Mixed | Clubs or associations that send notices and event or merch promos | Sample messages must show every type you send |
| Marketing | Organizations that mainly promote events, tickets or merchandise | Gets more scrutiny, so the opt-in flow must say "promotional" |
On Ready you don't pick from this list in the app, and over the API use_case is one of MARKETING, CUSTOMER_CARE, MIXED, DELIVERY_NOTIFICATIONS, ACCOUNT_NOTIFICATIONS or FRAUD_ALERTS. Ready does not file the K-12 Education use case yet. For a Public Service Announcement campaign, email support@tryready.com before you submit.
If you send reminders, don't register as Marketing, and if you send promotions, don't register as Notification. Our guide on matching use case to what you send explains how a mismatch shows up as filtering after approval. For more per-industry picks, see 10DLC use case examples by industry.
Message types that clear carrier review
Reviewers look at your sample messages and your opt-in description together. School and organization traffic usually passes easily when the samples look like real notices. These samples work:
- Closure or delay: "Lincoln Elementary: School is closed today, Jan 14, due to weather. Updates at lincolnelem.org. Reply STOP to opt out."
- Schedule change: "Riverside FC: Saturday's U10 game moves to Field 3 at 10 AM. Reply STOP to opt out."
- Event reminder: "Lincoln PTA: Book fair runs Mon to Fri in the library, 8 AM to 3 PM. Reply STOP to opt out."
- Member notice: "Local 214: Dues for Q2 are due by April 30. Pay at local214.org/dues. Reply STOP to opt out."
- Pickup or attendance: "Lincoln Elementary: Early dismissal at 12:30 PM Friday for staff training."
Each sample names the sender, states one fact and includes opt-out language. These patterns cause trouble:
- Link shorteners. Public shortened links get filtered. Use your own domain.
- Fundraising language in a Notification campaign, such as "donate," "help us reach our goal." This is a use-case mismatch, and it also triggers the approval requirement above.
- Vague samples like "Important update from the school." Reviewers want to see what you will actually send.
For more examples and opt-in wording, see 10DLC opt-in examples and sample messages.
Opt-outs, quiet hours and the early-morning closure problem
STOP handling is automatic. When a parent replies STOP or UNSUBSCRIBE, Ready honors it, and the opt-out applies across every campaign on the account. Your office manager can't accidentally re-add that parent from a fresh spreadsheet. Later sends to that number are refused up front and are not charged. If a family wants back on, they text START, or you collect fresh consent.
Quiet hours are enforced by the recipient's area. A text sent outside permitted local hours is held and goes out later, and you're charged only when it sends. Most of the time this protects you. It matters for one school-specific case: the 5:45 AM snow-day alert. On Ready, a closure alert sent at 5:45 AM is held and goes out when the recipient's permitted hours start, 8 AM in most states. Many districts send the closure decision the night before or at the start of permitted hours, and use their phone tree for anything earlier. 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.
Replies are part of the cost. Parents will reply "thank you" or "is the bus running?" Replies land in the shared inbox, and each inbound reply is billed like a sent text. If you don't want a two-way thread for one-way alerts, add "This number is not monitored" to the notice. If you send to small groups, such as a team or class, group texting without reply-all explains how to keep replies private.
What a school year of texts costs
Ready charges one Standard rate: $0.0075 per segment, plus a $0.0045 carrier fee per segment, for both sent and received texts. That all-in figure excludes the optional compliance surcharge. DNC scrubbing and landline validation each add $0.003 per segment when switched on, and both are off by default.
Worked example (assumptions stated): 1,200 families, 2 notices a week, 36 school weeks. Every notice stays under 160 plain characters, so each one is 1 segment.
- Sends: 1,200 × 2 × 36 = 86,400 segments
- Ready rate: 86,400 × $0.0075 = $648
- Carrier fees: 86,400 × $0.0045 = $388.80
- Registration: $27 a month ($25 for registration, number $2) × 12 = $324
- Total: about $1,361 for the year, before replies
- Replies are extra at the same per-segment rate
Emojis double or triple the bill. A single 🍎 drops the segment limit from 160 characters to 70. A 140-character notice with one emoji becomes 3 segments instead of 1. In the example above, that turns 86,400 segments into 259,200. Ready swaps curly quotes, long dashes and ellipses for plain ones before sending, so text pasted from Word won't change your count. Emojis still will.
Our bulk SMS cost breakdown covers the rest of the bill.
Throughput for larger districts
A fresh standard campaign sends roughly 1 to 4 segments per second. At an assumed 2 per second, 1,200 notices take about 10 minutes. A district with 15,000 families runs into a different limit. T-Mobile's lowest trust tier caps a brand at about 2,000 messages a day. Optional brand vetting ($79 Standard, one-time) can move a brand to a higher daily tier. It doesn't change the per-second rate. A single school rarely needs vetting. A district usually does.
If you run software for schools
If you build a student information system, a league-management app or a membership platform, the same steps apply to each of your customers. Ready gives every customer a sub-account with its own numbers and registration. You send through POST /v1/messages/bulk (up to 100 recipients per call), and you can check status with GET /v1/registration. See the bulk messages docs.
The short version
Register as the school or organization under the use case that matches what you send. Collect explicit text consent on your forms, and keep the record in your own database. Write sample messages that look like real notices. Let STOP handling and quiet hours run automatically. Keep emojis out of notices if you want to control cost. Get written approval before sending fundraising or advocacy texts.
If you want to try it, create an account, use the 20 free one-to-one texts to test your notices, then submit your registration and plan for the 2 to 7 days most approvals take. Questions about your use case go to support@tryready.com.