Opting contacts out of one inbox instead of all of them
If your team sends from more than one inbox, you can choose what an opt-out means: block the contact everywhere, or block them only in the inbox they opted out of.
For example, if you run a Support inbox and a Marketing inbox, a contact who unsubscribes from Marketing can keep receiving Support messages. Without this, one unsubscribe would cut them off from both.
This applies to text messages only. Email unsubscribes are handled separately and are not affected by anything in this guide.
A contact's record shows how many inboxes they're opted out of. Hover to see which ones.
Contents
- Choosing how opt-outs work
- Opting a contact out
- Opting a contact back in
- What your contacts can text
- Seeing where a contact is opted out
- Walkthroughs: what happens when
- Importing contacts who are already opted out
- Other opt-out settings
Choosing how opt-outs work for your team
In Admin, under Contacts, find the Global Opt-Out switch.
| Setting | What an opt-out means |
|---|---|
| On (default) | The contact is blocked in every inbox |
| Off | The contact is blocked only in the inbox where they opted out |
The switch is only available to owners and admins, on teams with more than one inbox. If either isn't true you'll still see it, greyed out — members can see how their team is set up without being able to change it, and on a single-inbox team there's nothing meaningful to change.
If your plan doesn't include it
Per-inbox opt-outs are available on current plans. If your team isn't on one, the switch is still there and you can still click it — but instead of changing the setting, it opens a chat with our support team with a short message already filled in asking to have the feature enabled.
Nothing changes on your team at that point. We'll get back to you, and once it's enabled the switch starts working normally. Turning per-inbox opt-outs back off is never gated — any eligible admin can return to team-wide opt-outs at any time, whatever the plan.
Switching to per-inbox opt-outs
Contacts who are already opted out of everything stay opted out of everything. Switching the setting doesn't reopen anyone — someone who asked not to be contacted shouldn't suddenly become reachable because an admin changed a preference.
So if you want one of those contacts to have per-inbox control going forward, opt them back in first, then opt them out of just the inboxes you want. From that point on, any new opt-out they make applies only to the inbox it happened in.
Switching back to team-wide — read this first
When you switch back to team-wide opt-outs, every existing per-inbox opt-out is converted into a team-wide one. A contact who had only opted out of Marketing becomes opted out of every inbox on the team.
This conversion cannot be undone. Turning per-inbox opt-outs back on afterwards will not restore the original per-inbox opt-outs — the record of which specific inboxes each contact had opted out of is gone for good. The confirmation dialog warns you about this, and it means it literally.
If you have contacts with per-inbox opt-outs you care about, note them down before switching back.
Opting a contact out
From a conversation. Open the conversation and set their status to opted out. This blocks them in that one inbox only — the inbox whose conversation you're looking at. Every other inbox on the team can still message them, and their status in those conversations will still show as active.
From the contact's record. Choose Opt Out. You'll be asked whether to opt them out of All Inboxes or Specific Inbox(es). Choosing specific lets you tick exactly which inboxes to block, which is the only way to opt someone out of several inboxes in one go.
Note that All Inboxes means all the inboxes you personally have access to. If your team has inboxes you can't see, this won't touch them — an admin would need to do that.
Opting a contact back in
From a conversation. This reopens that one inbox and nothing else. If the contact is also opted out of other inboxes, those opt-outs stay exactly as they were — reopening them in Support does not reopen them in Marketing. You'd need to do each one, or use their contact record to do several at once.
From the contact's record. Choose Opt In and pick the inboxes to reopen, or use Select All. Only the inboxes you tick are affected; anything you leave unticked stays blocked.
If the contact is blocked everywhere, opting them in reopens them everywhere — not just the inbox you happened to be looking at. This is deliberate: a team-wide block covers every inbox, so reopening "just this one" would leave them blocked anyway and the button would appear to do nothing. Once they're reopened, you can opt them out of individual inboxes again as needed.
What you can't undo
If the contact opted themselves out by texting you, nobody on your team can reverse it — not agents, not admins, not owners. Only the contact can, by replying START.
This isn't a permissions problem you can escalate around. When someone tells you directly to stop texting them, that instruction belongs to them and only they can withdraw it. If a contact has asked you to reopen them some other way — by phone, or by email — contact our support team rather than trying to force it through the app.
What your contacts can text
| They text | What happens |
|---|---|
| STOP, UNSUBSCRIBE, CANCEL, END, QUIT | Blocks the inbox they texted — or everything, if your team uses team-wide opt-outs |
| STOPALL | Blocks every inbox, always, whatever your settings |
| START, YES, Y, UNSTOP | Reopens them everywhere, including after a STOPALL |
Contacts always receive a confirmation reply, and these keywords always work regardless of how your team is configured.
STOP affects only the inbox that received it, STOPALL always affects everything, and START always reopens everything. There is no keyword a contact can text to reopen just one inbox — if they want that, someone on your team has to do it for them.
Seeing where a contact is opted out
In a conversation, the status reflects that inbox only. The same contact can show as opted out in your Marketing conversation and active in your Support conversation at the same time. That's the feature working as intended, not a display bug — each conversation tells you whether you can message that person from here.
On the contact's record, you get the complete picture across the team — "Opt Out of 3 Inboxes", with the inbox names shown on hover. If they're blocked everywhere it says that instead of counting inboxes, so you can tell the two situations apart at a glance.
The timeline on their record logs every opt-out and opt-in, who performed it and when. That includes ones the contact triggered themselves by texting, shown alongside the confirmation your team sent back, so you can reconstruct exactly what happened and in what order.
Filtering. Your contact list can be filtered by opt-out status and narrowed to a specific inbox. This is the practical way to check who is opted out of a particular inbox before you send a broadcast from it.
In reports. The Opt Out figure on your volume report counts opt-outs for whichever inboxes the report covers, so filtering the report to one inbox gives you that inbox's opt-outs rather than the whole team's.
Walkthroughs: what happens when
Some scenarios and what happens in each. All of them assume per-inbox opt-outs are on unless stated otherwise.
A contact texts STOP, then changes their mind
- The contact texts STOP to your Marketing number
- They're opted out of Marketing only — Support and Sales are unaffected and can still message them
- They text START to that same number
- They're reopened
Because there was no team-wide block in place, START simply undoes the Marketing opt-out and everything returns to how it was.
A contact texts STOPALL, then changes their mind
- The contact texts STOPALL to any of your numbers
- They're blocked in every inbox — STOPALL ignores per-inbox settings entirely
- They text START
- They're reopened everywhere
START after STOPALL is a complete reset. They aren't left half-blocked, and nobody on your team needs to do anything to finish it off.
A contact texts STOPALL and you try to reopen them
- The contact texts STOPALL
- You open their record and choose Opt In
- You see "This contact opted out of all inboxes. Opt-outs set by the contact can't be reversed here — contact support to update."
- Nothing changes
Only the contact can undo their own opt-out. This is the single most common reason an opt-in appears not to work.
A contact opts out of several inboxes separately
- The contact texts STOP to Marketing → opted out of Marketing
- Some time later they text STOP to Sales → now opted out of Sales as well
- Their record shows "Opt Out of 2 Inboxes"
- Support is still active, so you can carry on messaging them from there
Each opt-out is independent of the others. There's no threshold at which several per-inbox opt-outs add up to a team-wide block — even if they opt out of every inbox one by one, each remains a separate per-inbox opt-out.
You opted someone out, then they text STOP to the same inbox
- You opt a contact out of Support from their record
- They then text STOP to your Support number
The opt-out now belongs to them rather than to you, so from this point you can no longer reverse it. This is the safe outcome: their explicit instruction takes precedence over your team's record-keeping, and the app won't let an agent undo it by accident.
A contact is blocked everywhere and you opt them into one inbox
- The contact is opted out of everything — say from a delivery failure, rather than something they texted
- You open their Marketing conversation and choose Opt In
- They're reopened everywhere, not just Marketing
A team-wide block covers every inbox, so reopening only Marketing would leave them blocked in practice. Rather than appear to succeed while changing nothing, the opt-in clears the team-wide block entirely. If you only wanted them reachable from Marketing, opt them out of the other inboxes afterwards.
You send to a contact opted out of a different inbox
- The contact is opted out of Marketing
- You send them a message from Support
It delivers normally. That's the entire point of per-inbox opt-outs — an unsubscribe from one programme doesn't silence the others.
A message fails to deliver
This one depends on a separate setting — Auto Opt-Out on Failed Delivery, in the same Admin area. It's off unless someone turns it on.
With it on, a number whose message fails to deliver (a landline, or a disconnected number) is opted out automatically so you stop spending sends on it. This applies to every inbox, not just the one that hit the failure, because the problem is the number itself rather than anything to do with a particular inbox. That's true even when your team uses per-inbox opt-outs — it's a team-wide opt-out by design, and the setting says so.
If you know the number is good and the failure was temporary, you can opt them back in.
Importing contacts who are already opted out
If you're bringing contacts in from another system, your CSV can mark them as opted out, and Heymarket will honour that on import so you don't message someone who had already unsubscribed elsewhere.
Imported opt-outs always apply to every inbox. There is no way to say "opted out of Marketing only" in an import file — the format has one opt-out column, not one per inbox, so anyone marked opted out is blocked team-wide.
That's the safe default: an import usually comes from a system that has no concept of your inboxes, so the only honest reading of "this person unsubscribed" is that they unsubscribed from you entirely.
If you need per-inbox opt-outs for imported contacts, do it in two steps: import them, then opt them back in and opt them out of just the inboxes you want. Their contact records will show the per-inbox breakdown afterwards, the same as any other contact.
Re-importing does not clear an opt-out. Importing the same contact again without the opt-out column set will not reopen them — opt-outs are only removed deliberately, through the app or by the contact texting START. This is intentional, so a routine data refresh can never silently re-subscribe people.
Other opt-out settings
Three more settings sit alongside Global Opt-Out in Admin → Contacts. They control what else happens when someone is opted out, and they apply regardless of whether you use per-inbox or team-wide opt-outs.
| Setting | What it does |
|---|---|
| Close Chats with Opted Out Contacts | Automatically closes the chat when a contact is opted out of SMS |
| Remove Opted Out Contacts From Lists | Automatically removes them from all lists when they opt out of SMS |
| Auto Opt-Out on Failed Delivery | Opts a contact out across all inboxes when a message to them fails to deliver |
Two things worth flagging:
Removing from lists is team-wide, even on a per-inbox team. A contact who opts out of Marketing only is removed from every list, not just Marketing's — so a per-inbox opt-out can still affect sends from other inboxes indirectly, through the lists they were on. If that's not what you want, leave this setting off.
Auto Opt-Out on Failed Delivery always opts out everywhere. It's the one automatic path that ignores per-inbox scoping entirely.
If your team also uses email, there are equivalent settings for email opt-outs. They're separate switches and don't affect SMS.