Internal SMS means texting your own staff, not your customers: open shifts, schedule changes, safety alerts and HR reminders sent to the phone they already carry. It works best for deskless teams who never open email or a company chat app. Done properly, it runs on its own registered number, with written employee consent, and stays apart from your customer messaging.
This guide covers how to set up a text alert system for your business. It explains the consent you need from employees, how A2P 10DLC registration treats internal traffic, how to split staff into groups, and what a month of employee text messaging costs. We make Ready, so we use it as the worked example. The setup applies to any registered sender.
What internal SMS is good for (and what it isn't)
Text works for staff who are on their feet all shift: retail, restaurants, warehouses, home health, field service, security, cleaning crews. These people often check a work inbox once a week, if that. A text gets read within minutes.
The four jobs it does well:
- Shift fills. "Open shift Sat 7 AM to 3 PM at the Main St store. Reply YES to claim, first reply gets it." This is the highest-value internal text because an empty shift costs real money.
- Schedule changes. Posted schedules, swaps you approved, a site closing early.
- Safety and operational alerts. Weather closures, a system outage, a "don't use the north entrance" notice.
- HR updates. Open enrollment deadlines, payroll schedule changes, a required training due Friday.
Where it's the wrong tool:
- Desk teams who live in Slack or Teams. If everyone already reads a chat app all day, texting them adds noise. Keep SMS for the people chat can't reach.
- Sensitive HR content. Disciplinary notes, medical details and pay specifics don't belong in a text. Send "Your benefits packet is ready in the HR portal," not the packet.
- True middle-of-the-night emergencies. More on this below. Ready enforces quiet hours, and you should know what that means for an alert at 3 AM before you rely on it.
Employee consent: yes, you still need it
Some teams assume employees count as an existing relationship, so no consent is needed. That's a risky assumption. Carriers treat employee texts like any other application-to-person traffic. They expect opt-in, a way to opt out and honest message content, and TCPA exposure doesn't disappear because the recipient is on your payroll.
What good practice looks like:
- Collect written consent at onboarding. Use a separate line in the onboarding packet: "I agree to receive work-related text messages (shift offers, schedule changes, safety alerts) from [Company] at the number below. Message and data rates may apply. Reply STOP to opt out." Record the date and keep the signed form.
- Keep it in your own records. When you send through Ready, each bulk send and each API send that sets
consent_attestedrecords your opt-in attestation: who sent, to how many and when. That is an audit trail of your promise. It is not a per-employee consent record. Ready does not store each employee's opt-in date, wording or form, so your HR system has to keep that. (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.) - Honor STOP even from staff. Ready handles STOP and UNSUBSCRIBE automatically, and the opt-out propagates so that contact can't be texted again across campaigns. If an employee opts out, you reach them another way. Re-adding them because "they work here" defeats the purpose of the rule.
- Ask an employment lawyer about off-the-clock texts. If hourly staff are expected to read and act on texts while off shift, that can raise wage-and-hour questions in some states. Keep after-hours texts optional ("reply if you want it"), not mandatory.
None of this makes you immune to a complaint. Compliance is the sender's responsibility. These steps reduce risk.
How 10DLC registration treats internal messaging
Any business texting from a regular 10-digit number needs A2P 10DLC registration: a brand (your company) and a campaign (what you send and to whom). Unregistered traffic gets filtered by carriers. If you're new to it, our 10DLC explainer covers the basics.
There's no special "employee" lane. Internal traffic is registered like anything else, so the campaign description and sample messages have to make the audience obvious. Carriers check that what you describe matches what you send. A clear description looks like this:
"Operational messages to our own employees who opted in at onboarding: shift offers, schedule changes, site closures and HR deadline reminders. No marketing."
Then supply sample messages that look like your real texts, including the opt-out line. Pick the use case that matches what you actually send. Staff notifications are not marketing, and registering them as marketing can get you throttled. Our guide to matching the use case to what you send goes through the options.
On Ready, registration happens in-app:
- Fees: $25/mo for registration and $2 per number. There's no setup fee. The charge at submit is the first month, $25.
- Timing: most approvals take 2 to 7 days.
- Before approval: an account can send up to 500 texts a month before it registers, at its normal per-text rate. After that it has to register. If you bought your number first, you send on Ready's shared registration at the same rate while your own registration is in review.
For a full breakdown of registration charges, see 10DLC cost: every fee explained.
Keep internal traffic separate from customer numbers
If you also text customers, don't send staff alerts from the same number. There are three reasons.
Reputation. Your customer number's deliverability depends on how recipients react to it. Mixing in internal traffic muddies that signal, and a deliverability problem on one stream can hit the other.
Confusion. An employee who also shops with you shouldn't get "Open shift Saturday" and "20% off this weekend" in the same thread. That's also how staff end up replying STOP to the wrong thing.
Registration accuracy. Your customer campaign describes customer messages. Internal texts sent under it no longer match what you registered.
The clean setup on Ready is a separate sub-account for internal messaging. Each sub-account gets its own numbers and its own carrier registration, so staff texts have their own number, campaign and reporting. Platforms use the same structure: a workforce-scheduling product that texts shift offers for each of its customers gives each customer a sub-account through the API (POST /v1/sub-accounts). Our post on 10DLC for SaaS platforms covers who registers the brand in that setup.
Groups: who gets which text
A shift offer for the Main St store shouldn't reach the warehouse crew. Organize contacts by who needs what. A practical starting set:
- By site: each store, warehouse or office.
- By role: shift leads, drivers, nurses, kitchen.
- By message type: everyone gets safety alerts, while only certified staff get offers for shifts that require a forklift license.
In Ready's app, contact management and bulk campaigns handle this. Reusable templates keep the weekly "schedule is posted" text consistent. If your scheduling system triggers texts itself, the bulk endpoint takes up to 100 recipients per call:
POST https://api.tryready.com/v1/messages/bulk
X-API-Key: <key>
Idempotency-Key: <any UUID>
{"to": ["+12125550199", "+15559876543"], "body": "Open shift Sat 7 AM-3 PM, Main St. Reply YES to claim. Reply STOP to opt out.", "consent_attested": true} Split larger lists into batches of 100. The Idempotency-Key makes sure a retried request never sends twice, which matters when "first YES gets the shift" is the rule. Full details are in the bulk messages docs.
Replies land in the Inbox, so a manager sees who said YES first. A person confirms who got the shift, which is what you want for something that affects pay.
Quiet hours and real emergencies
Ready holds sends outside permitted local hours, based on the recipient's area. A one-off text sent during someone's quiet hours is held if their window opens within 6 hours, and charged only when it goes out; sent earlier than that, it is refused and not charged. That protects you from a 6 AM "open shift" text you shouldn't have sent.
It also means a text alert system is the wrong first line for a 2 AM emergency. For overnight problems, such as a burst pipe or an alarm at a site, call the people who need to know. The Ready Dialer lets a manager click-to-call from the dial pad in the dashboard at $0.025/min, with each started minute billed as a full minute. If you need automated, round-the-clock mass emergency notification, a dedicated emergency-notification product is the honest recommendation.
What a month of employee texting costs
Ready bills one Standard rate: $0.0075/segment, plus a $0.0045 carrier fee per segment. Replies you receive are billed the same way. Scrubbing and landline validation are off by default and add $0.003 per segment each if you switch them on. You would rarely need them for a staff list you collected yourself.
Worked example (assumptions stated). An 80-person company texts its staff:
| Message | Volume | Segments |
|---|---|---|
| Weekly "schedule posted" text (1 segment, 4x/month to 80 staff) | 320 texts | 320 |
| Shift offers (12/month, each to about 30 eligible staff) | 360 texts | 360 |
| Replies to shift offers (assume about 25% reply, 1 segment each) | 90 replies | 90 |
| Total | 770 |
Messaging: 770 × $0.0075 = $5.77, plus 770 × $0.0045 in carrier fees. Registration adds $25/mo and $2/mo per number.
Watch the emoji. A 150-character shift offer is 1 segment. Add one emoji and the limit drops to 70 characters, or 67 per part, so the same text becomes 3 segments. That triples the cost of every shift offer. Plain text costs less and reads fine. Ready swaps curly quotes, long dashes and ellipses for plain ones automatically, so those don't change the count.
The first 20 texts are free one-to-one sends, so use them to test with a few staff before you register. They end once a registration is paid for. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it. Pricing is on our pricing page.
Getting started
The practical version: collect consent at onboarding and keep it in HR records. Register a separate campaign, ideally in its own sub-account, whose description says plainly that the recipients are employees. Group staff by site and role, write plain-text templates, and don't rely on texts for overnight emergencies. Before you register, read what carriers check in 10DLC rules and requirements.
When you're ready to try it, you can create an account and send your first test texts to a few colleagues.
FAQ
Do I need consent to text my own employees? Treat it as yes. Collect written opt-in at onboarding, include STOP language and keep the record in your HR system. Ready records your send-level attestation but not each employee's consent details.
Can internal SMS share a number with my customer texts? It can, but it shouldn't. A separate number and registration, such as a dedicated sub-account on Ready, protects deliverability and keeps staff texts out of your customer reporting. A STOP to either number still blocks that employee on both, so ask staff to reply STOP only to the stream they want to leave and call them if they do.
Which 10DLC use case fits employee text messaging? Pick the one that matches what you actually send, which is usually notifications rather than marketing. Write a campaign description that says plainly that recipients are opted-in employees.
Will my 5 AM shift-fill text go out? Not if it falls in the recipient's quiet hours. Ready holds it and sends it when permitted, and charges only when it sends. Schedule early-shift offers the evening before.
What if an employee replies STOP? Ready honors it automatically and blocks further texts to that number. Reach that employee by phone, email or in person instead.