> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omneo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Comms Preferences

> How Omneo stores and manages customer communication preferences and opt-in status.

Communication preferences in Omneo are stored as part of the profile's Comms Attributes. These fields capture whether a customer has opted in or out of each communication type and channel, and are synchronised in real-time to connected comms platforms.

## Comms attribute fields

Comms attributes are grouped by channel and purpose:

### Opt-out flags

| Field          | Description                                           |
| -------------- | ----------------------------------------------------- |
| `email_optout` | Customer has globally opted out of email              |
| `sms_optout`   | Customer has globally opted out of SMS                |
| `push_optout`  | Customer has globally opted out of push notifications |
| `phone_optout` | Customer has opted out of phone calls                 |
| `post_optout`  | Customer has opted out of postal mail                 |

### Promotional opt-ins

Granular opt-in flags per channel:

* `email_promo`, `sms_promo`, `push_promo`, `phone_promo`, `post_promo`

### Consent timestamps

| Field                      | Description                                                                         |
| -------------------------- | ----------------------------------------------------------------------------------- |
| `email_consent_updated_at` | UTC ISO 8601 timestamp of the customer's most recent `email_promo` consent decision |
| `sms_consent_updated_at`   | UTC ISO 8601 timestamp of the customer's most recent `sms_promo` consent decision   |

When a payload sets `email_promo` or `sms_promo` **as a result of an end-user action** (sign-up form, preference centre, in-app toggle, SMS keyword reply, etc.), include the corresponding `*_consent_updated_at` timestamp in the same request. This records when the customer actually consented and is required to satisfy GDPR, Australian Spam Act, and TCPA audit requirements. The timestamp is also synced to downstream comms platforms so their subscription state reflects the correct consent date.

Do **not** send these timestamps for backend corrections, data migrations, or admin overrides that do not represent a fresh consent decision by the customer.

### Category-level preferences

Fine-grained preferences for specific communication purposes (available for email, SMS, push, phone, and post):

* `_discover`, product discovery and new arrivals
* `_benefits`, incentive notifications and benefit alerts
* `_reminders`, reminders and follow-ups
* `_account`, account-related notifications
* `_bookings`, appointment and booking confirmations
* `_feedback`, surveys and feedback requests
* `_location`, location-specific communications
* `_service`, service and support communications

### Bounce and verification flags

| Field                | Description                                         |
| -------------------- | --------------------------------------------------- |
| `email_bounced`      | Email address has hard bounced                      |
| `sms_bounced`        | SMS has failed delivery                             |
| `email_verification` | Verification status: `not_sent`, `sent`, `verified` |

## Where preferences are managed

Customers can update their preferences via:

* **Profile Portal**: the customer-facing self-service surface
* **Comms platform** (e.g., Klaviyo unsubscribe link): changes are synced back to Omneo
* **CX Manager**: admin-level updates
* **Clienteling**: in-store staff updates

Changes made in any connected system are propagated to all others in real time via webhook synchronisation.

## GDPR and consent compliance

Omneo's comms preferences model is designed to support compliant consent collection and management. The granular opt-in fields allow brands to collect category-level consent rather than a single "subscribe/unsubscribe" flag, enabling more precise compliance with email marketing regulations.

## Opting out and suppressing a profile

To suppress a profile from all communications, set the relevant `_optout` flags via the API. These are respected by Omneo's notification logic and synced in real time to connected comms platforms.

For broader suppression, excluding a profile from incentive automations, imports, or operational logic, use tags or statuses as a signal. See [Profile blacklist and opt-out](/dev-guides/profiles/profile-blacklist) for implementation details.
