Skip to main content
Give users control over what communications they receive and how you use their data. This guide covers capturing, storing, and respecting preferences in Zixflow.

What Are User Preferences?

Preferences are settings that control:
  • Which channels you can use (email yes, SMS no)
  • What types of messages they want (product updates yes, promotions no)
  • How frequently they hear from you
  • When you can reach them (quiet hours)
Ask once, respect forever. Honor opt-outs immediately, store them permanently, and apply them across campaigns.

Why Preferences Matter

For users: Control fatigue, choose channels, set frequency limits. For you: Higher engagement, legal compliance (GDPR, CAN-SPAM, CCPA), better deliverability.

Types of Preferences

1. Channel Preferences (What to Reach Them On)

Definition: Which communication channels the user accepts messages through. Each channel has its own opt-out field and timestamp stored on the user profile. Channel opt-out fields: Each field uses one of three values:
  • 1NOT_OPTED_OUT: user is reachable (default for SMS/WhatsApp/RCS/Push)
  • 2OPTED_OUT: user explicitly opted out — all sends suppressed
  • 3UNKNOWN: intent not yet established (default for Email)
Each channel also stores an _opt_out_at timestamp:
Important: Email defaults to UNKNOWN rather than NOT_OPTED_OUT because email requires explicit confirmation before you can assume consent (GDPR). All other channels default to NOT_OPTED_OUT since they require an explicit action (push permission grant, phone number submission) to receive messages at all.

2. Category Preferences (What Type of Messages)

Definition: What topics or types of content the user wants to receive. Category preferences are custom attributes — you define the categories that make sense for your product and store them as profile attributes. Example:
Why categories matter:
  • User might want product updates but not promotional emails
  • Transactional messages (order confirmations, password resets) typically can’t be opted out
  • GDPR requires granular control (not just “all or nothing”)

3. Frequency Preferences (How Often to Message)

Definition: Controls how often users receive non-critical messages. Like categories, frequency preferences are custom attributes you define and check when building campaigns. Example:

4. User Suppression (Block All Channels)

Suppression is a server-side lifecycle event that blocks all outbound messages for a user across every channel, regardless of their individual opt-out settings. When to use suppression:
  • User requests complete silence (GDPR “right to be forgotten” equivalent)
  • Account fraud/abuse detected
  • Account is past-due / in bad standing
Suppression is distinct from channel opt-out: opt-out is per-channel and set by the user, suppression is workspace-controlled and blocks everything.

Capturing Preferences

Method 1: In-App Preference Center

Best for: Letting users manage their own preferences (GDPR requirement) Example UI:
Implementation:

Best for: One-click opt-out from email campaigns (CAN-SPAM requirement) Example flow:
  1. User receives promotional email
  2. Clicks “Unsubscribe” link at bottom
  3. Lands on preference page: “You’ve unsubscribed from promotional emails”
  4. Option to manage granular preferences or unsubscribe from all
Implementation:

Method 3: Onboarding Preference Collection

Best for: Setting preferences early (before first campaign) Example onboarding screen:
Why this works:
  • Sets expectations early (“we’ll email you weekly”)
  • Reduces future unsubscribes (they opted in knowingly)
  • Better engagement (only contact people who agreed)

Respecting Preferences in Campaigns

Transactional vs. Marketing Messages

Transactional messages (can’t be opted out):
  • Order confirmations
  • Password resets
  • Account security alerts
  • Billing notifications
Why: User needs these to use your service (GDPR carve-out) Marketing messages (must respect opt-out):
  • Newsletters
  • Promotional emails
  • Feature announcements
  • Re-engagement campaigns
Implementation:

Default Preferences (What If User Hasn’t Set Any?)

Conservative approach (better for compliance):
Aggressive approach (better for engagement, riskier legally):
When to use each:
  • Conservative: EU users (GDPR), healthcare, financial services
  • Aggressive: Existing customers, B2B, low-regulation industries

Preference Syncing Across Devices

Challenge: User opts out of push notifications on phone, but still gets them on tablet. Solution: Preferences are stored at the user profile level, not device level. How it works:
Device-specific preferences (if needed):

GDPR (Europe)

Requirements: ✅ Clear consent before marketing communications
✅ Easy way to withdraw consent (unsubscribe link)
✅ Granular control (not just “all or nothing”)
✅ Explicit opt-in for sensitive categories (health, finance)
Implementation:
  • Default users to opted OUT
  • Require checkbox during signup: “I agree to receive marketing emails”
  • Provide preference center with granular controls

CAN-SPAM (United States)

Requirements: ✅ Unsubscribe link in every marketing email
✅ Honor opt-out within 10 business days
✅ Clear “From” name (not deceptive)
✅ Accurate subject line
Implementation:
  • Include unsubscribe link in email footer
  • Immediately set subscribed_to_promotions = false on click
  • Exclude opted-out users from all marketing campaigns

CCPA (California)

Requirements: ✅ Allow users to opt out of data “sale” (sharing for advertising)
✅ Provide “Do Not Sell My Personal Information” link
✅ Honor opt-out immediately
Implementation:

Next: Server-side tracking and lifecycle APIs → Event API Reference