Consent and opt-out
Who agreed to hear from you on which channel, with the proof: the Consent lines on a contact, Record consent, the consent history, what customers change themselves (opt-in keywords, the opt-in link, STOP, the Stop promotions button, the confirmation message), and what happens on merge and erasure.
Marketing messages may only go to people who agreed to them, on that channel. OmniBrand keeps that agreement as evidence: every "yes", "no more offers" and STOP is a line in the contact's Consent history, with the channel, the date, where it came from and the proof. Data-protection laws such as the EU's GDPR, Brazil's LGPD or Saudi Arabia's PDPL expect you to be able to show this.
Where to see it
- Open Engage → Contacts (/app/contacts) and click a person.
- The Consent section shows one line per channel: WhatsApp, Email, SMS, Messenger, Instagram and Telegram, each with its state and the date:
- Agreed: they agreed to marketing on this channel.
- Withdrew: they took their marketing consent back. Service messages (a booking reminder, an order update) are still allowed.
- Stopped all messages: they asked to stop everything, usually by replying STOP. No template of any kind goes to them, not even Utility.
- No record: nobody has recorded anything yet. For marketing this counts as no.
- Open Consent history to see every change, newest first: what was decided, on which channel, the source (for example Recorded by a teammate, Replied with a keyword, Contact merge), who recorded it and the evidence in quotes.
The WhatsApp opt-in only filter on the list and WhatsApp broadcasts use the WhatsApp line: only Agreed receives Marketing templates.
Step by step: record consent
You need the Manage contacts task (Owners, Admins and Editors have it by default).
- On the contact, press Record consent.
- In Record consent for [name], pick the Channel (or All channels).
- In What did they decide? choose Agreed to marketing, Withdrew marketing consent or Asked to stop all messages.
- For an agreement, fill How did they agree? — it is required. Write what someone could check later, for example: ticked "Send me offers" on the paper form at the shop. For a withdrawal the box is What did they say? (optional). Without text an agreement stops with Say how they agreed.
- When is today; change it if it happened earlier. It cannot be after today: a later date shows The date cannot be after today. Pick today or an earlier day. under When, and nothing is saved. The decision with the latest date counts: an agreement dated before a later STOP or withdrawal is kept in Consent history as evidence, but it does not switch messages back on.
- Press Save to consent history. The line for that channel changes at once and the entry appears in Consent history.
On a merged contact (Contacts) the decision is recorded for every channel of the person, and the history shows it once with on 2 linked identities (or however many).
Record consent for many people at once
In Contacts, tick the people (or Select all [n] who match the filters), then choose Actions → Record consent. The dialog Record consent for [n] contacts works like the one above, one channel at a time (there is no All channels here), and every person gets their own entry with your evidence. When you record agreement, people who withdrew on that channel — a STOP, an unsubscribe, a Stop in the WhatsApp app — are skipped and the message says how many; record their agreement one by one, only when they give it again (Contacts).
What happens automatically
Customers can change their own consent by message; nobody on your team has to do anything. Each change is a line in Consent history with its source and proof, and it happens once: the same message delivered twice, or a second START from someone already subscribed, changes nothing.
- Opt-in keyword on WhatsApp: a message that is exactly START, SUBSCRIBE, YES OFFERS, OPT IN, اشتراك, اشترك or نعم للعروض (or one of your own words from Messaging rules) marks the person Agreed for WhatsApp, with the source Replied with a keyword and their message as the evidence. Capital letters, punctuation, emoji and Arabic spelling variants (أ or ا, ى or ي, diacritics) do not matter. A plain "yes" or "نعم" is not enough, and a longer message ("I want to subscribe to the gym, how much?") is left for your team. A keyword also lifts an earlier STOP.
- WhatsApp opt-in link or QR code: the keyword followed by a code, as a link made on Contacts → Opt-in link & QR sends it (for example SUBSCRIBE SPRING-FAIR), is recorded with the source WhatsApp opt-in link and the code in the evidence (WhatsApp opt-in link and QR code).
- STOP on WhatsApp: a short reply such as STOP, unsubscribe, إيقاف or إلغاء الاشتراك marks the person Stopped all messages for WhatsApp, with the source Replied with a keyword and the word they wrote as the evidence; the word is recognised in any case, with punctuation or an emoji around it, and in Arabic with or without diacritics. Queued broadcast messages to them are skipped (WhatsApp broadcasts). The same words sent to your Telegram bot, Facebook Page or Instagram account in a private chat mark the person Stopped all messages for that channel only (Telegram, Messenger or Instagram), skip their broadcasts there that have not gone yet, and get one short reply in their language (on Messenger and Instagram only within 24 hours of their message); START, SUBSCRIBE, اشتراك (or /start on Telegram) subscribes them again on that channel. A reply of just cancel, end, quit or إلغاء is treated differently on all four channels, because customers often mean their order or booking: it marks the person Withdrew for marketing on that channel (the evidence ends with "read as stop offers only"), skips their queued marketing broadcasts, keeps order updates and other service messages going, and sends no reply. To make one of these words stop all messages, add it to your own opt-out words in Settings → Messaging rules.
- Stop promotions button: tapping a Stop promotions (إيقاف العروض) quick-reply button on one of your templates marks the person Withdrew for WhatsApp, with the source Template button. Only marketing stops: their queued Marketing broadcast messages are skipped, and order updates and other Utility templates still go. A Yes, send me offers (نعم للعروض) button marks them Agreed the same way.
- Confirmation message: when a keyword, STOP or one of these buttons changed someone's consent, they get one short confirmation in the same WhatsApp chat, in Arabic or English ("Thanks, you're subscribed…" or "You're unsubscribed…"). It is free, because they have just written to you, and it shows in the conversation as a message from Consent confirmation. Change the texts or turn them off in Messaging rules. Nothing is sent when their consent did not change.
- Stop in the WhatsApp app: in WhatsApp a customer can tap Stop on your business's offers and announcements. The person shows Withdrew for WhatsApp, with the source WhatsApp settings, and queued marketing broadcast messages to them are skipped (order updates and other Utility templates still go). If they tap Resume later, the agreement they had before is restored with the same source; a Resume never turns on consent they had not given you. This needs the owner's one-time Meta setting (What each template status means).
- WhatsApp refuses a marketing message (error 131050): this means the person stopped your marketing inside WhatsApp. They are marked Withdrew for WhatsApp, with the source Stopped marketing in WhatsApp, and the rest of their queued marketing is skipped. No confirmation is sent.
- A bot's consent question: a bot with an "Ask for marketing consent" step records Agreed for the channel of the chat when the customer taps Yes, send me offers, with the source Bot and the question as the evidence (Where the bot saves what customers tell it). No, thanks records nothing.
- Email unsubscribe link: someone who unsubscribes from your email list with the link in an email is marked Withdrew for Email on every contact with that address, with the source Email unsubscribe link.
- Telegram block: when a person has blocked your Telegram bot, the next message to them fails and they are marked Stopped all messages for Telegram, with the source Blocked the Telegram bot. On Messenger, subscribing to a topic of your Page marks the person Agreed for Messenger with the source Messenger marketing messages opt-in, and stopping their last topic marks them Withdrew with the source Stopped Messenger marketing messages (Messenger marketing messages).
- Merging: if either contact had said STOP, the whole merged person is stopped, recorded with the source Contact merge. If either had withdrawn WhatsApp marketing, the other's WhatsApp marketing consent is withdrawn too, with the same source. A merge never turns consent on.
- Contacts from before the consent history: people who had the old "Marketing opt-in" switch on show Agreed with the source Before the consent history; people who had replied STOP show Stopped all messages the same way. Nothing was lost.
Changing your mind, and mistakes
Entries are never edited or deleted: that is what makes them evidence. If something was recorded wrongly, record the correct decision with Record consent and say why in the text box. The latest entry decides.
Erasing a person
Erase contact (Contacts) removes the person. Their consent history stays as your accountability record — that consent was given or withdrawn, on which channel and when — but the evidence text is deleted and the entries no longer point at anyone.
Developers (API)
PATCH /workspaces/{workspaceId}/contacts/{contactId} with {"consent": {"channel": "whatsapp", "action": "granted", "evidence": "..."}} records a decision; action is granted or revoked, purpose marketing (default) or all for a stop, and occurredAt an optional past date. Evidence is required to grant. GET .../contacts/{contactId}/consents returns the current state per channel and the history. With an API key the source is API. Recording consent from an imported list ("source": "import") needs the Import contacts task. An import with a consent declaration records one row per person and channel with the source Import and the declaration as evidence (Importing contacts).