# 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.

**Language:** en
**Audience:** platform
**TLDR:** Consent is stored as five system attributes per channel: _accepts_marketing_* (the preference: accepted, declined or no preference — the default), _is_subscribed_* (the suppression axis: subscribed by default), the two acceptance/decline dates (set automatically, for audit) and _level_marketing_* (automatic). They show in the attribute manager under their display names (e.g. Accepts SMS/RCS marketing) and work as columns and in segment filters.
**Translation key:** platform.consent.subscription-attributes
**Search keywords:** subscription attributes, consent attributes, accepts marketing, subscribed, marketing consent, subscription status, acceptance date, refusal date, marketing level, per channel attributes, sms consent attributes, whatsapp consent, email consent, system attributes, Accepts Email marketing, Accepts SMS/RCS marketing, Accepts WhatsApp marketing, SMS/RCS marketing level, Email marketing level, WhatsApp marketing level
**Related pages:** /platform/es/consent/subscription-attributes, /platform/en/consent, /platform/en/consent/marketing-preference-vs-suppression, /platform/en/consent/rcs-sms-shared-consent, /platform/en/audience/attributes-events
**Docs index (every page):** https://docs.instasent.com/llms.txt
**This zone's index:** https://docs.instasent.com/platform/en/llms.txt
**This page:** https://docs.instasent.com/platform/en/consent/subscription-attributes/ (HTML) · https://docs.instasent.com/platform/en/consent/subscription-attributes.md (Markdown)
**Other language (es):** https://docs.instasent.com/platform/es/consent/subscription-attributes.md

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](/platform/en/audience/attributes-events) 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_sms` — `three-state`
  The **marketing preference**: accepted (opted in), declined (opted out), or no
  preference (unset). The default is **no preference**.
- `_is_subscribed_sms` — `yes/no`
  The **suppression** axis: subscribed or suppressed. The default is
  **subscribed**.
- `_date_accepts_marketing_sms` — `date`
  When the contact last **accepted** marketing. Set automatically on each opt-in, for the
  compliance audit trail.
- `_date_unaccepts_marketing_sms` — `date`
  When the contact last **declined** marketing. Set automatically on each opt-out.
- `_level_marketing_sms` — `text`
  A text field that records the **type of marketing subscription**, maintained
  automatically. {/* VERIFY: exact enum values of _level_marketing_* not documented */}

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](/platform/en/consent/rcs-sms-shared-consent).                                                      |
| **WhatsApp** | `_*_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**    | `_*_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. |

> **Note**: **RCS doesn't have its own consent.** There is no `_accepts_marketing_rcs` or
> `_is_subscribed_rcs`. RCS consent *is* SMS consent — the `_*_sms` attributes govern both
> channels. This is why the profile shows a single **SMS / RCS** row. The full behaviour is
> in [Shared consent](/platform/en/consent/rcs-sms-shared-consent).

## Using them

These attributes behave like any system attribute:

- **As columns** — add them to the [audience table](/platform/en/audience/audience-table) to
  see consent at a glance across contacts.
- **In segments** — filter a [segment](/platform/en/audience/segments) 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](/platform/en/consent/marketing-preference-vs-suppression)), 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](/platform/en/consent/opt-outs-reactivation) and
[Manage via API](/platform/en/consent/managing-via-api).

---

This is one page of the Instasent documentation. For the complete machine-readable index of every guide and API reference, fetch https://docs.instasent.com/llms.txt — start there for full context.
