The worst time to find out your alert system can't send 3,000 texts quickly is during the event that required them. A burst pipe closes a building, a storm shuts a campus, a gas leak empties a plant. You type the message, press send, and then you learn three things at once. Your carrier caps how many messages go out per second. A third of your list are desk-phone landlines. Your number was never registered, so carriers filter part of the traffic.
Each of those problems can be fixed ahead of time, and none can be fixed in the moment. This guide covers how to set up an SMS alert system for schools, employers and facilities: the contact list, the throughput math, delivery tracking and registration. It also covers where SMS falls short and needs a second channel next to it.
What is an emergency text alert system?
An emergency text message system sends one urgent SMS to a whole list, such as staff, students or residents, and tracks who got it. A mass notification system is the wider version, with texts alongside email, voice calls and desktop alerts.
Texting is the fast, universal channel in that set, since it needs no app and reaches nearly every phone. It still shouldn't be your only one, because carriers queue messages and some phones are off.
Decide what SMS is responsible for
Text messaging is fast and nearly everyone reads it, so it works well for "the building is closed, do not come in" or "shelter in place, updates to follow." It doesn't make a whole life-safety system on its own. Carriers queue messages, phones are switched off, and people opt out. A serious emergency plan uses texts together with email, phone calls, PA systems or desktop alerts. It doesn't rely on texts alone.
Be clear about which alerts you'll send by text:
- Urgent operational alerts: closures, delays, evacuations, lockdown notices, all-clear messages.
- Check-ins: "Reply SAFE if you are out of the building." These create inbound replies, which you'll need to plan for (see the cost section).
- Follow-ups: reopening times, where to report, who to call.
Promotional content such as fundraisers, event invitations or newsletters belongs on a separate campaign. Mixing it into your alert traffic is one of the fastest ways to get throttled. For the broader architecture of alert texting, see our guide to business SMS notification and alert systems.
Build the list before you need it
Collect consent on purpose
Parents, staff and tenants should opt in to alerts, and that opt-in should be recorded where you can find it later. That could be a line on the enrollment form, a checkbox in onboarding, or a sign-up page with clear wording. You, the sender, keep the consent record: who agreed, when, and to what wording. Ready records an attestation on every bulk send and every API send that sets consent_attested, covering who sent, to how many and when. That builds an audit trail of your sends. It doesn't replace your own per-person consent records.
Clean the numbers
Employee and parent lists contain a lot of landlines: office extensions, home phones, fax lines that someone typed into a "mobile" field. A text to a landline never arrives, and you won't know who missed the alert unless you check.
Run the list through a number validation check during setup and again each term or quarter. Don't wait for an emergency to do it. Ready's validation endpoint (GET /v1/validate/:phone) tells you what kind of line a number is. The number validation docs explain how to use it. Anyone whose only number is a landline needs a phone call tree or email instead.
Know who has opted out
If someone texted STOP to your number, Ready blocks every later text to them, emergencies included. That is the correct behavior, and it means those people have dropped out of your SMS channel. Pull the list with GET /v1/opt-outs and make sure each of them is reachable another way. That list holds only this account's opted-out contacts, so check GET /v1/opt-outs/:phone before another tool texts a number. Opted-out and numbers on your Ban list are refused before sending and you aren't charged for them, so they won't inflate your bill. They also won't get the alert.
Do the throughput math now
This section causes the most surprises. Carriers limit how fast a registered campaign can send, and they measure that limit in segments per second, not in messages per second. Carriers publish no official rate card, so treat these as round approximations:
- A fresh standard campaign with no brand vetting: roughly 1 to 4 segments per second.
- Higher use-case tiers: roughly 10 to 75 segments per second.
- T-Mobile also caps daily volume per brand by trust score, at approximately 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 instead of setting a hard daily cap.
Worked example: a 2,500-person campus
Assumptions: a single-segment alert sent to 2,500 phones.
| Assumed send rate | Time to send all 2,500 |
|---|---|
| 2 segments per second | 1,250 seconds, about 21 minutes |
| 4 segments per second | 625 seconds, about 10 minutes |
| 10 segments per second | 250 seconds, about 4 minutes |
Now add one emoji. An emoji lowers the segment limit to 70 characters (67 per part in a multipart message), so a 140-character alert becomes 3 segments. At an assumed 4 segments per second, the same 2,500-person alert takes about 31 minutes. For routine reminders that delay doesn't matter much. For an evacuation it can be the difference between people getting the message in time or not.
A 2,500-person list on the lowest T-Mobile trust tier (about 2,000 a day) has a second problem: the day's alert plus a follow-up can exceed the cap.
What to do about it
- Write alerts in plain GSM-7 text, under 160 characters. Leave out emoji and symbols. Ready automatically converts curly quotes, long dashes and ellipses to plain characters, but an emoji will still split the message.
- Prepare templates in advance. For example: "ALERT from Lincoln HS: Campus closed today due to power outage. Do not report. Updates by text. Reply STOP to opt out." That is short, a single segment, and reviewed before anyone is under pressure.
- Think about brand vetting if your list is large. Optional vetting costs $79 Standard or $179 Enhanced, one-time. It raises your trust score, and it moves the T-Mobile daily cap only if the new score crosses into a higher tier. It doesn't change your per-second rate. We go through the decision in is 10DLC brand vetting worth $79.
Register early so urgent texts aren't filtered
Carriers filter unregistered A2P traffic. An alert from an unregistered number can arrive late, arrive partly, or not arrive at all. Registration is the step most often left until it's too late.
Ready handles brand and campaign registration in the app. The first month, $25, is charged when you submit, and there's no setup fee. After that the monthly cost is $25/mo for registration and $2 per number. Most approvals take 2 to 7 days. That timeline is the reason to register this week instead of the morning of a storm. An account can send up to 500 texts a month before it registers, which is enough to test templates but not enough to alert a whole campus.
Choose a campaign use case that matches what you actually send. Registering alerts as marketing, or putting both types of traffic on one campaign, invites throttling. Our use-case picking guide explains how to choose. An approved campaign can still be filtered if the content looks spammy. Approved but still filtered covers that content-level filtering.
A note on quiet hours
Ready holds sends that fall outside permitted local hours, based on where the recipient is. This reduces TCPA exposure for normal business texting. A held text is charged only when it actually sends. For emergency alerts, though, an overnight hold is a real concern. If your plan depends on sending at 2 AM, email support@tryready.com and ask how quiet hours apply to your account and your alert traffic. Do this before you rely on it. It's much better to learn the answer during setup than during an incident. 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.
Send it so a retry never doubles up
If you're sending from your own system, such as a student information system, an HR tool or a building management console, the bulk endpoint accepts up to 100 recipients per call. Split larger lists into batches:
POST https://api.tryready.com/v1/messages/bulk
X-API-Key: <key>
Idempotency-Key: 6f1c2a9e-4b7d-4e1a-9c3f-2d8b5e7a1f04
Content-Type: application/json
{
"to": ["+12125550199", "+15559876543"],
"body": "ALERT from Lincoln HS: Campus closed today due to power outage. Do not report. Updates by text. Reply STOP to opt out.",
"consent_attested": true
} Give each batch its own Idempotency-Key and reuse that key if you retry the batch. When a network timeout hits mid-emergency, someone will press send again. The idempotency key means a parent gets the closure notice once instead of three times. Full request details are in the bulk messages docs.
Teams without developers can send the same alert as a bulk campaign from the Ready app, using a saved template.
Track delivery, then close the gaps
Sending the alert isn't the end of the job. You need to know who received it.
- Read message status.
GET /v1/messagesreturns sent messages and pages through them withbefore_id. Webhooks can push status updates into your own dashboard. The messages docs list what's available. - Act on failures. Any number that didn't receive the text goes on a call list. The Ready Dialer lets staff click to call from the dashboard at $0.025/min. Only answered time is billed, so calls that ring out cost nothing.
- Watch the inbox. Replies such as "SAFE" or "my kid is at the nurse" land in the Inbox, and someone should be assigned to monitor it during an incident.
What it costs
Ready Standard is $0.0075 per segment plus a $0.0045 carrier fee per segment, and inbound replies are billed the same way. For the 2,500-person single-segment alert, the rate portion is 2,500 × $0.0075 = $19, plus 2,500 × $0.0045 in carrier fees. If you ask for "Reply SAFE" and around half the list responds, which is a plausible rough figure for an urgent request, add about 1,250 inbound segments at the same per-segment price. Optional landline validation or scrubbing adds $0.003 per segment each, and both are off by default.
If you have engineers ready to build opt-out handling, quiet hours, registration and an inbox themselves, a raw CPaaS like Twilio costs less per segment and is a reasonable choice. What Ready adds is that the compliance and inbox pieces are already built, and registration can be completed in the app.
The checklist to finish before the next incident
- Collect opt-in consent and store your own records of it.
- Validate the list and route landline-only contacts to calls or email.
- Pull your opt-outs and give those people another channel.
- Write single-segment templates with no emoji and get them approved now.
- Calculate send time from your list size and an assumed rate, and consider vetting if the number looks too slow.
- Register brand and campaign this week, since most approvals take 2 to 7 days.
- Ask us how quiet hours apply to overnight alerts.
- Assign someone to monitor the inbox and run the call-back list.
If you want to try this yourself, create an account, register, and send a test alert to your own team. Watching how long it takes and who receives it will tell you more than any plan document.
Frequently asked questions
How does an emergency text notification system work?
You keep an opted-in list, register your number, and send one short message to everyone at once. Each text's delivery status then tells you who didn't get it, so you can follow up by call or email.
Is a text alert the same as a mass text notification system?
A text alert is a single message. A mass text notification system is the tooling around it: the list, consent records, opt-out handling, throughput and delivery tracking.