Data · Consent
Subscription attributes
The system attributes behind consent: the five per-channel fields that store the marketing preference, the suppression state, the acceptance and refusal dates and the marketing level, and which channels carry a set.
Underneath the checkboxes you see on the profile, consent is stored as system attributes
on every contact: the two axes — the marketing preference and channel suppression — each get
their own field, with a separate set per channel. They're ordinary attributes, so they
appear in the attributes manager like any system
field (their names start with an underscore), and you can use them as columns and in segment
filters. In the filter search they show under their display name — for example,
_accepts_marketing_sms shows as Accepts SMS/RCS marketing and _accepts_marketing_email
as Accepts email marketing. This page lists them one by one.
Five attributes per channel
Each channel that tracks consent has the same five attributes. Taking SMS as the example:
_accepts_marketing_smsthree-stateThe marketing preference: accepted (opted in), declined (opted out), or no preference (unset). The default is no preference.
_is_subscribed_smsyes/noThe suppression axis: subscribed or suppressed. The default is subscribed.
_date_accepts_marketing_smsdateWhen the contact accepted marketing. You can send it yourself, for example the date you collected the consent, as a column in an import or through the API. If you don't, Instasent fills it in with the moment the preference was set to accepted.
_date_unaccepts_marketing_smsdateWhen the contact declined marketing. Read-only: Instasent fills it in with the moment the preference was set to declined.
_level_marketing_smstextA free text field for the level of marketing consent, if you track one: for example single opt-in, double opt-in or a complaint. There is no fixed list of values. You set it yourself (in an import, through a connector or the API); Instasent doesn't fill it in and doesn't use it to decide who receives marketing.
The two dates give each contact a dated record of when they opted in or out, which is what you rely on for compliance. Because the acceptance date can come from your own data, an import can carry the consent date you already hold.
Of the five, only the decline date is read-only. The acceptance date and the marketing
level are yours to write, and the marketing preference follows its own rule below. Suppression
(_is_subscribed_*) can't be set by a CSV import: a suppression column in the file is not
applied. The connectors that send your data by attribute name (Zapier, Make, n8n, Activepieces
and Pabbly Connect) and the Ingest API can write it like any other attribute, so only send it
to record a real block. The
marketing preference (_accepts_marketing_*) can arrive in an import while no value is
set yet, but once the contact has set it themselves — via STOP/START or an unsubscribe
link — an import no longer overwrites it; from then on only your team, the subscription API or
the contact change it.
Which channels have a set
The same five attributes exist per channel, but not every channel is an active sending channel in Instasent today:
| Channel | Attribute set | Notes |
|---|---|---|
| SMS | _*_sms | The active channel. Also governs RCS — RCS has no attributes of its own. |
| RCS | — (shares SMS) | No own set; reads and writes the SMS attributes. See Shared consent. |
_*_whatsapp | Provisioned, not yet an active sending channel. The attributes exist so that WhatsApp consent (for example a marketing column in a CSV) is captured from now on. | |
_*_email | The model includes Email, but it isn't an active sending channel in this Instasent release (the rollout is SMS-first). The attributes exist and show on the profile. |
Using them
These attributes behave like any system attribute:
- As columns — add them to the audience table to see consent at a glance across contacts.
- In segments — filter a segment on them, for example contacts who accept SMS marketing and are subscribed.
- On the profile — they're surfaced together in the Channel preferences card (see How consent works), not as raw attribute rows.
For how these attributes are set in the first place — by a contact, your team, a campaign or the API — see Opt-outs & reactivation and Manage via API.
Last updated