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 last accepted marketing. Set automatically on each opt-in, for the compliance audit trail.
_date_unaccepts_marketing_smsdateWhen the contact last declined marketing. Set automatically on each opt-out.
_level_marketing_smstextA text field that records the type of marketing subscription, maintained automatically.
The acceptance and refusal dates are written by Instasent on every consent change — you don't edit them by hand. They're what gives each contact a dated history of when they opted in or out, which is the record you rely on for compliance.
As system attributes, most of these maintain themselves: the dates and the marketing
level are read-only and Instasent updates them on every change. Suppression
(_is_subscribed_*) isn't imported either — a CSV import or a connector can't write it. 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.