The consent model
Every contact carries a set of opt-in records, one per (channel, messaging account) pair they have interacted with. Each record stores:- Channel (for example, WhatsApp).
- Messaging account (the specific connected account on that channel, such as a WhatsApp Business number).
- Opt-in status (opted in, opted out, or never opted in).
- Source of the opt-in (CSV import, wa.me link, chatbot, ad, checkout, integration, API).
- Opt-in timestamp and, if applicable, opt-out timestamp.
Why per-account, not per-company
A contact may:- Have opted in on your customer-service WhatsApp number but not on your marketing number.
- Have opted out of one brand’s WhatsApp account without wanting to leave a sister brand’s.
Independent consent records
Each (channel, messaging account) record is independent of the others:- Opting in on one account does not opt the contact in on another account.
- Opting out on one account does not opt the contact out on another, and vice-versa.
- A send uses only the opt-in records for the account it is sent from; it ignores the consent state on every other account.
Opt-out sources
A contact can be marked opted-out on a given (channel, account) through several paths, all of which produce the same result:- Clicking a message button that leads to an opt-out step in the flow.
- Being manually unsubscribed by a Simio user from the contact detail view.
- Being unsubscribed programmatically through an integration (Brevo sync, Shopify, and future connectors) or through the Simio API.
