Here's a sequence that plays out more often than most senders realize. A contact gets a promo text, replies STOP, and your SMS platform dutifully suppresses them. Good. Except the next morning your power dialer calls them anyway, because the dialer has never heard of the STOP — it lives in a different system, reads a different list, and nobody wired the two together. Now you've got a person who explicitly told you to stop, receiving a phone call, with a timestamped text message on their phone proving they asked you not to.
That's not a hypothetical edge case. It's the default behavior of most multi-channel stacks, because opt-out is almost always stored per-channel and per-tool. Full disclosure: I work for Ready, and unified STOP handling across SMS, voice, and the inbox is something we built specifically because we kept watching this happen. This post is about why the gap exists, what the law actually expects, and how to close it.
Why a STOP almost never crosses channels on its own
Opt-out started as an SMS-carrier mechanic. When someone texts STOP, UNSUBSCRIBE, CANCEL, END, or QUIT, the carrier itself will often intercept it and block further messages from that sender — regardless of what your software does. So SMS platforms got very good at honoring STOP, because the carrier forced the issue.
Voice and email never had that enforcement layer. There's no carrier sitting between you and a phone call that reads the recipient's prior text and slams the brakes. So the suppression has to happen in your software — and if your dialer, your email tool, and your texting tool are three separate products (or three separate accounts in the same product), the STOP lands in exactly one of them.
The result is a contact who is:
- Suppressed in SMS — the carrier and your texting tool both got the memo.
- Wide open in voice — the dialer queue has no idea.
- Wide open in email — unless they also clicked an unsubscribe link, which is a completely separate action.
Three channels, one opt-out signal, and it only reached one of them.
What the law actually expects (and where it's murkier than STOP-means-stop)
The clean version: under the TCPA, consent is tied to the person, not the channel. A revocation of consent — "stop contacting me" — is generally meant to be honored across the channels the revocation reasonably covers, and courts have been increasingly willing to read a revocation broadly. Texting STOP is an unambiguous "stop," and there's real risk in treating it as SMS-only when the same person is on your call list.
Where it gets murkier:
- A STOP text is clearest for SMS. Whether it automatically revokes call consent depends on how the consent was collected and how the revocation is worded. But "the contact asked me to stop and I kept calling" is a bad place to be arguing fine distinctions.
- Email opt-out (CAN-SPAM) is a separate legal regime with a 10-business-day window to process an unsubscribe. Different rules, different clock.
- A DNC complaint or a request to a specific channel doesn't always mean every channel.
I'm not a lawyer and this isn't legal advice. But the defensible operating posture is simple: when a human tells you to stop in one channel, suppress them everywhere unless you have a specific, documented reason not to. The cost of over-suppressing one contact is a lost lead. The cost of under-suppressing is $500–$1,500 per unwanted contact under TCPA statutory damages — and those stack.
The math that makes this worth solving
Say you run a modest outbound operation: 20,000 contacts, and over a quarter roughly 2% text STOP. That's 400 people who've opted out of SMS. If your dialer runs the same source list and doesn't know about those 400, you'll call them.
Not every unwanted call becomes a lawsuit. But you only need a small fraction to find a litigator — or to be a litigator, since some of these numbers are seeded specifically to catch this behavior. One call to one flagged, opted-out number:
- $500 per violation (negligent), up to $1,500 (willful/knowing).
- A pattern — calling 400 people who told you to stop — reads a lot like "knowing."
Run the pessimistic version: even 10 of those 400 turn into claims at $500 each is $5,000, before legal fees. The engineering fix — one shared suppression list — costs you nothing but the discipline to wire it up. This is the same "the violation already happened" problem covered in scrubbing litigators before vs. after import: the expensive mistake is treating a suppression event as after-the-fact cleanup instead of a hard gate before the next send.
How siloed stacks create the gap — a worked example
Here's a typical agency or in-house setup and where it breaks:
| Channel | Tool | Where STOP is stored | Does it see the SMS STOP? |
|---|---|---|---|
| SMS | Texting platform A | Platform A's suppression list | Yes (native) |
| Voice | Dialer B (separate login) | Dialer B's DNC list | No |
| ESP C | ESP C's unsubscribe list | No | |
| CRM | GHL / your CRM | Contact record tags | Only if something writes back to it |
The CRM is supposed to be the source of truth — but it's only as good as the write-backs feeding it. If your texting tool honors STOP internally but doesn't push a sms_opted_out (or better, a channel-agnostic do_not_contact) flag onto the contact record, the dialer that reads from the CRM never learns anything changed. Three tools, three lists, and the human sitting behind all three phone numbers gets contacted on the two channels that didn't get the message.
This is the same failure mode we've written about with GHL workflows that send SMS and email from the same step — the tooling treats channels as independent when the person isn't.
What unified opt-out actually looks like
The fix is that a STOP has to resolve to the contact, not the channel, and then propagate to everything that can contact that person. Concretely:
- Inbound STOP is honored automatically — no manual list-scrubbing, no "we'll process it next week." In Ready, inbound STOP/UNSUBSCRIBE is caught and the opt-out is recorded on the contact.
- The opt-out propagates across campaigns and channels. Once a contact opts out, they can't be messaged again from another campaign — and because SMS, the power dialer, and the conversations inbox live in the same platform, the dialer honors the same suppression the texting side does.
- It writes back to the CRM. With the native GoHighLevel integration, the opt-out syncs to the contact record per location, so a downstream workflow or a rep working the pipeline sees the same do-not-contact state.
- Quiet-hours and litigator scrubbing sit alongside it. The opt-out list is one layer; the pre-send litigator/DNC scrub at $0.005 per contact is another. Together they catch "this person said stop" and "this person is on a list you should never have dialed in the first place."
The point isn't that any single feature is magic. It's that suppression only works when there's one shared source of truth that every send — text, call, and reply — checks before it goes out.
What you can do today, even without switching tools
If you're not on a unified platform, you can still close most of the gap with discipline:
- Pick one source-of-truth suppression list — usually the CRM contact record — and make every channel read from it before sending.
- Wire STOP write-backs. Whatever tool catches the SMS STOP needs to tag the CRM contact, and your dialer and ESP need to respect that tag. If your tools can't do this, that's the gap.
- Treat any human "stop" as global. A STOP text, a "take me off your list" voicemail, an email unsubscribe, a rep note — all of them should set the same do-not-contact flag.
- Audit the leak. Export your SMS opt-outs and cross-reference them against your active dialer list this week. The overlap count is your current exposure. It's usually not zero.
The takeaway
Opt-out was designed as an SMS-carrier mechanic, so it stops at the SMS boundary unless you deliberately extend it. Voice and email have no carrier forcing the same behavior, which means the suppression is entirely your software's job — and siloed tools hand that job to whichever product happened to receive the STOP. The person on the other end doesn't experience three channels. They experience you, still calling after they asked you to stop.
If you want the version where a STOP resolves to the contact and every channel — SMS, dialer, inbox — honors it from one shared list, that's the model Ready is built on. You can see how the platform and the compliance stack fit together on the product page, or start with 2,500 free credits and wire your suppression once instead of three times. Either way: run the audit above first. Knowing your overlap number is the cheapest risk reduction you'll do this quarter.