Skip to main content
How you reach users — push, email, SMS, and more — and how channel preferences work in Zixflow. Available today: Mobile push notifications (iOS / Android). Other channels are planned; opt-out fields already exist on profiles so you can store consent early.

What Are Communication Channels?

A channel is a pathway for outbound messages:
ChannelBest for
PushUrgent, short alerts on mobile
EmailRich content, newsletters, receipts
SMSCritical, high-urgency short messages
In-appGuidance while the app is open
Web pushBrowser alerts for web users
WhatsApp / RCSConversational messaging (where available)
Different channels trade off reach, speed, visibility, cost, and content richness. Use the channel that matches urgency and message complexity.

Channel Opt-Out Model

Every profile stores opt-out status per channel:
StatusValueMeaning
NOT_OPTED_OUT1Reachable (default for Push, SMS, WhatsApp, RCS)
OPTED_OUT2Explicitly opted out — sends suppressed
UNKNOWN3Intent not established (default for Email)
Each channel also has an _opt_out_at timestamp.
Zixflow.instance.setProfileAttributes({
  'sms_opt_out': 2,
  'sms_opt_out_at': DateTime.now().toIso8601String(),
});

Zixflow.instance.setProfileAttributes({
  'push_opt_out': 1, // NOT_OPTED_OUT
});
User Suppression blocks all channels at once (server-side lifecycle events User Suppressed / User Unsuppressed). See User Preferences & Consent.

Push Notifications (Available)

Platform: iOS, Android
Delivery: APNs / FCM
Latency: Typically under 5 seconds
Opt-in: System permission dialog
Opt-out field: push_opt_out (default NOT_OPTED_OUT)
Supported today:
  • Device token registration and multi-device profiles
  • Platform routing (iOS → APNs, Android → FCM)
  • Profile push_opt_out / push_opt_out_at
  • Deep linking
  • Delivery / open / action tracking — Push Notification Tracking
When to use: Order updates, payment failures, cart reminders, real-time alerts. Setup guides: Devices & Push and the SDK push docs.

Coming Soon

These channels are not live for delivery yet. Opt-out fields are already on the profile so you can capture consent ahead of launch:
ChannelOpt-out fieldsNotes
Emailemail_opt_out / email_opt_out_atDefault UNKNOWN until confirmation
SMSsms_opt_out / sms_opt_out_atDefault NOT_OPTED_OUT
WhatsAppwhatsapp_opt_out / whatsapp_opt_out_atDefault NOT_OPTED_OUT
RCSrcs_opt_out / rcs_opt_out_atDefault NOT_OPTED_OUT
In-app messagesRendered in-app when available
Web pushBrowser Push API

Choosing a Channel (Pattern)

Ask:
  1. How urgent? Critical → Push or SMS · Important but not urgent → Email · Contextual → In-app
  2. How much detail? Quick alert → Push/SMS · Long explanation → Email · Interactive → In-app
  3. Where is the user? In app → In-app · Away → Push/Email

Example: Cart recovery (orchestration pattern)

This is a common multi-channel pattern. Today you can implement the push steps; email/SMS steps apply when those channels ship.
Use casePrimaryBackup
Order shippedPushEmail
Cart abandoned (2h)PushEmail
Cart abandoned (24h)EmailPush
Password resetEmail + PushSMS
Weekly newsletterEmail
Flash salePushSMS
Feature tipIn-appPush
Payment failedEmailPush

Push Best Practices

Do: Request permission after showing value; personalize; clear CTA + deep link; respect quiet hours. Don’t: Ask on first launch; send generic spam; ignore opt-outs or quiet hours.
Next: User Preferences & Consent