STOP, HELP, and the texts you are required to answer
The keywords US carriers expect every business texting program to handle, what your replies should say, and the mistake that leaves people opted out on one channel and reachable on another.
Frontiva · · 6 min read
If you text customers in the US, a few words carry obligations. Handle them properly and nobody notices. Handle them badly and you get carrier filtering, complaints, and eventually a number that no longer delivers.
The words that matter
STOP, and the variants carriers treat the same way: STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT. Any of them means stop texting this person. It takes effect immediately and lasts until they opt back in.
HELP, and INFO. Means "who is this and how do I reach you". You must answer, and this is the one message you deliberately send to somebody even after they have opted out, because the requirement is that asking for help gets help.
START, and UNSTOP, YES. Means they want messages again, and it lifts a previous STOP.
Carriers handle some of this at the network level, but you cannot rely on that and you should not: your own records are what you will be asked for.
What your replies should actually say
For STOP, confirm once and then genuinely stop:
Bright Smile Dental: You're unsubscribed and won't receive further messages. Reply START to resubscribe.
One confirmation. Not a "sorry to see you go, here's a discount". A retention attempt after STOP is the message most likely to turn an opt-out into a complaint.
For HELP, identify yourself and give a real contact route:
Bright Smile Dental: Appointment reminders and replies. Call (555) 123-4567 or visit brightsmile.example.com. Msg&data rates may apply. Reply STOP to opt out.
That is the carrier-expected shape: who you are, what the program is, how to reach a human, the rates disclosure, and how to stop.
The mistake almost everybody makes
Recording the opt-out against the conversation instead of against the person.
It is the natural thing to build. Someone texts STOP in a thread, you mark that thread opted out, and it looks correct, because the thread goes quiet.
Then one of these happens:
- The same number messages you on WhatsApp. New thread, no flag, still reachable.
- A staff member starts a fresh conversation next month. New thread, no flag.
- Your CRM merges two contact records and the flag is attached to the one that loses.
In each case somebody who told you to stop gets texted again. From their side there is no distinction between "our software modelled this at the wrong level" and "they ignored me".
The obligation attaches to the person, identified by the address you reach them at. Record it there, and every thread (existing or future, on any channel) inherits it.
Normalising the number, which sounds pedantic and is not
An opt-out stored as (555) 123-0000 against inbound traffic that arrives as +15551230000 is an opt-out that does nothing. It sits in your database looking recorded and matches no message you ever send.
Normalise to E.164 before you store it and before you look it up. If a staff member is typing a number into an opt-out form by hand, validate it rather than merely tidying it. A number typed without a country code should be rejected, not silently turned into something that looks like E.164 and is not.
Keep the evidence, not the conclusion
"We think they opted out" is not a record. What you want, per person:
- What they sent: the actual word, "stop" or "cancel" or "quit".
- When, to the second.
- How it arrived: inbound keyword, a staff member recording a phone request, or a list import.
That third one matters because a staff member should be able to record "they told me on the phone to stop texting" without needing a manager. The receptionist who was just told that is usually the most junior person in the room, and making her find somebody senior is how the instruction gets lost.
Lifting an opt-out is the opposite: that is a claim about somebody else's wishes, and it should need authority.
Frequency is the obligation nobody writes down
No rule caps you at a specific number of messages per day. But a program that texts three times a day gets STOPs, complaints, and carrier scrutiny, and that is a practical cap whether or not anyone wrote it.
Two things worth doing:
- Cap automated messages per person per day, and roll the window over 24 hours rather than resetting at midnight. Otherwise 11pm and 12:01am are two different days and your "daily" cap is doubled.
- Count per person, not per conversation. Somebody with a text thread and a WhatsApp thread should not get double.
And separate purposes. A practice answering a customer's own question should not burn the allowance its appointment reminder needs.
Quiet hours
The commonly cited window is 8am to 9pm in the recipient's local time. Some states are stricter.
The part that gets missed: the recipient's local time, not yours. A single-location practice can ignore the distinction. The moment you have two locations in different timezones, "9pm" stops being one moment.
And a deferred message is better than a dropped one. A reminder that would land at 3am should be held until morning, not silently discarded, because the appointment is still tomorrow.
What you need in place before sending
- An SMS terms page: program name, message frequency, "Msg & data rates may apply", STOP and HELP instructions, privacy policy link. Registration reviewers look for it.
- Consent evidence per person, with the wording they agreed to.
- STOP, HELP and START handled automatically, not by somebody reading the inbox.
- A registered number, because unregistered A2P traffic is filtered rather than rejected, so it looks like it sent.
Not legal advice. TCPA and state rules carry real penalties and change. Have counsel review your program.
How Frontiva handles it
Keyword handling is automatic and the AI is kept out of all three: STOP, START and HELP are answered by fixed code, not by a model deciding what to say to somebody who just asked to be left alone. HELP returns the carrier-required disclosure with your practice's own name and number, because a template with a placeholder in it is not what any customer saw.
Opt-outs are recorded against the address, so one STOP covers every thread you have with that number, on any channel, including ones opened later. Numbers are validated rather than merely normalised, and a staff member can record an opt-out with ordinary contact permissions while lifting one requires more.
Every outbound message (AI reply, reminder, automation, or a person typing) passes through a single check that reads purpose, consent, opt-out state, quiet hours and the frequency cap. A refusal names the rule that produced it, so you can tell a customer why rather than guessing.
You can see all of it on one screen: the wording your customers agreed to, the words the product acts on, who has asked you to stop, and why reminders were not sent.
Both keywords are handled before any AI sees the message in Frontiva: HELP gets the fixed required reply even to somebody who has opted out, and STOP is recorded against the person. The unified inbox then shows that thread as blocked.