Compliance policies
Every campaign carries a consent policy — Basic, Opt-out or Opt-in — that decides who it's allowed to reach and what happens when someone opts out. How each policy works and which to choose.
Every campaign carries a consent policy — chosen when you create it and editable in the campaign details, where the selector is labelled Consent policy. ("Compliance policies" is the name of this section; the setting on each campaign is the consent policy.) It decides two things at once: who the campaign is allowed to reach, and what happens when a contact opts out. There are three policies: Basic, Opt-out and Opt-in — from the widest reach to the most restrictive.
| Policy | In short |
|---|---|
| Basic | Sends to all subscribed contacts, ignoring marketing preferences. Maximum reach. |
| Opt-out | Excludes contacts who explicitly declined marketing. Reaches everyone else. |
| Opt-in | Only contacts who explicitly accepted marketing. The most restrictive policy. |
Who each policy reaches
Whether a contact gets the campaign depends on their marketing-consent state and the policy you pick:
| Contact | Basic | Opt-out | Opt-in |
|---|---|---|---|
| Accepted marketing (opted in) | ✓ | ✓ | ✓ |
| No preference set | ✓ | ✓ | ✗ |
| Declined marketing (opted out) | ✓ | ✗ | ✗ |
| Suppressed | ✗ | ✗ | ✗ |
A contact has no preference set when nothing has been recorded either way — it wasn't collected at signup, or the data source or CSV didn't bring a marketing preference. This is the default state. Suppressed contacts — those blocked from all sending on that channel (suppression is per channel) — never receive a campaign, under any policy. The difference between the policies is how they treat contacts who have no preference recorded and those who declined marketing.
The three policies form widening circles: Opt-in reaches the fewest contacts, Basic the most. Put the other way round, each contact's consent state decides which policies can reach them:
flowchart TD
C["A contact in your audience"] --> Q1{"On the suppression list?"}
Q1 -->|Yes| N["No policy reaches them"]
Q1 -->|No| Q2{"Their marketing consent?"}
Q2 -->|Accepted| All["Basic, Opt-out and Opt-in"]
Q2 -->|No preference| BO["Basic and Opt-out"]
Q2 -->|Declined| B["Basic only"]
class All success
class N destructive
class BO neutral
class B neutral
What happens when someone opts out
A contact can opt out in several ways — replying STOP (or the country's keyword), clicking an unsubscribe link, or a channel-native action on RCS or WhatsApp. They all lead to the same outcome, which depends on the campaign's policy:
- Basic — the contact is suppressed straight away, removed from all future sends on that channel. Because Basic ignores the opt-out preference, suppression is the only way to honour the request.
- Opt-out and Opt-in — the first opt-out marks the contact as opted out: they stop receiving marketing but aren't fully suppressed. If an already opted-out contact opts out again, they're then suppressed.
An opted-out contact isn't blocked from everything: they no longer receive campaigns sent under Opt-out or Opt-in, but a Basic campaign — which ignores marketing preferences — would still reach them. That's exactly why a STOP on a Basic campaign goes straight to suppression: nothing milder would stop the messages. The gentler policies give a contact a reversible opt-out first and only escalate to suppression on a repeat request.
flowchart TD
STOP["Contact opts out (STOP, unsubscribe link, ...)"]
STOP --> Q{"Campaign's policy"}
Q -->|Basic| S1["Suppressed — removed from every send"]
Q -->|Opt-out or Opt-in| OUT["Opted out — no more marketing"]
OUT -->|opts out again| S2["Suppressed"]
class OUT neutral
class S1 destructive
class S2 destructive
Choosing a policy
The default policy comes from the channel: SMS and RCS campaigns start on Basic, which is what a channel with no policy configured resolves to — out of the box none has one set. You can change it per campaign, and the per-channel default is configurable — see Compliance defaults. Every project can use any of the three policies; none is restricted by plan.
Pick the policy that matches how you collected your audience: Opt-in if you only want contacts who explicitly agreed to marketing, Opt-out to reach everyone except those who declined, Basic for maximum reach when marketing preferences don't apply to the message.
Counting from your own systems? The API can tell you how many contacts a policy reaches before you create the campaign: see Counting who can receive in the developer docs.