How It Works
Three Levels of Control
What are user preferences?
Each user has a preference set that controls which notifications they receive. A preference set has three levels of control:channel_preferences— Global channel opt-outs (e.g., opt out of all email)categories— Category-level preferences (opt in/out of all channels of a notification type)opt_out_channels— Opt-in/out of specific channels within a category
invoice-ready category completely, and stays opted in to payment-reminder but without Slack.
How preferences are determined
When a user hasn’t set their own preferences in a category, SuprSend uses defaults in this order:- User Preference — Individual user’s explicit choices (highest priority)
- Tenant Default Preference — Default preferences set by tenant for the category
- Category Default Preference — Default preferences set at the category level (lowest priority)
Setting up preference categories
Before users can set their preferences, you must first create and configure preference categories. For step-by-step setup instructions, see Manage Categories and Preferences.Default preferences
Default preferences determine how users receive notifications when they haven’t set their own preferences. Configure these at the sub-category level when setting up categories.What default preferences control
Default preferences control:- Channel or Category defaults: Which categories or channels will be turned on/off by default on users’ preference page.
- Mandatory channels: Which channel or category users cannot opt out of (shown as disabled on preference page)
- Visibility: Whether a category appears on the preference page
Preference types
On — Users receive this category's notifications by default
On — Users receive this category's notifications by default
- All: All available channels are enabled by default
- Selected Channels only: Only specific channels you select are enabled by default (e.g., Email, Android Push, iOS Push, In-App Inbox, MS Teams, Slack)
Off — Users must opt in to get notifications
Off — Users must opt in to get notifications
Can't Unsubscribe — Users cannot opt out of mandatory channels in this category
Can't Unsubscribe — Users cannot opt out of mandatory channels in this category
- Mandatory Channels: Channels which can’t be opted out of by the user. Set to “All” or “Selected Channels”.
- Opt-in Channels: In case of “Selected” Mandatory Channels, you can configure the channels that will be opted in by default. Channels other than mandatory and opt-in will be skipped for sending notification unless user explicitly opts in to them.
Capturing user preferences
Users can set their preferences through one of the following methods:Hosted preference page
Once you publish preference categories, SuprSend automatically generates a dedicated unsubscription webpage for collecting user preferences. Users can set channel-specific preferences from the hosted page. If the link is included in an email, the hosted page will show and save email preferences.Include it in your templates using
{{$hosted_preference_url}}.
This page is currently hosted on a SuprSend domain, but you can reach out to [email protected] if you’d prefer it hosted on your own domain.
Embed in your product
You can embed the preference interface directly inside your product using SuprSend’s ready-made UI components. SDKs exist in the languages below. Update your product preference page link on the tenant page and render it in templates using{{$embedded_preference_url}}.

Embeddable preference page
Controlling what categories to show on UI
It’s always a good practice to show only the categories that are relevant to the user. There are two ways to achieve this:Hide categories for tenant users
In a multi-tenant setup, tenants or admins can control which categories their users see. Settingvisible_to_subscriber: false in tenant preferences hides the category from tenant users’ preference pages. Hidden categories won’t send notifications to those users, even if they previously opted in.
Filter categories with tags
Use tags to show categories based on user roles, departments, or teams. Filter categories in the preference center using thetags query parameter.
Setting Preference tags

Filter Categories with Tags
tags=tag1) or a more advanced filter using logical operators.Supported operators:| Operator | Operand Datatype | Description | Example |
|---|---|---|---|
exists | boolean | Returns categories where any tag is set | tags={ "exists": true } |
not | string | Excludes categories that have the specified tag | tags={ "not": "admin" } |
or | array | Returns categories that match any of the provided tags | tags={ "or": ["sales", "marketing"] } |
and | array | Returns categories that match all provided tags | tags={ "and": ["sales", "manager"] } |
tags={ "or": [{ "and": ["sales", "manager"] }, { "and": ["marketing", "associate"] }] }.If no tags are provided, the preference center returns all visible categories.Translating preference categories in user’s locale
You’ll first need to upload translation files for the locale you want to translate to. See How to manage Category translations for details. Once translation files are updated, pass alocale parameter (e.g., es, fr, de) when loading the embeddable preference center or pass locale as query parameter in the get user preference API.
How preferences are evaluated
SuprSend evaluates user preferences at send time. For every recipient, the system checks user-level preferences first, then tenant-level overrides, and finally category defaults. For detailed information on the evaluation process, see Preference Evaluation.Other ways to unsubcribe from notifications
In addition to the preference center within SuprSend, communication channels provide their own opt-out options, which SuprSend manages internally.Email: Unsubscribe URL header
Email: Unsubscribe URL header
{{$hosted_preference_url}} here to load the SuprSend hosted preference page from the email header.
Inbox (In-App): Render preference page inside your Inbox
Inbox (In-App): Render preference page inside your Inbox
Mobile Push: Preference Page in App settings
Mobile Push: Preference Page in App settings

SMS & Whatsapp: Reply `STOP`
SMS & Whatsapp: Reply `STOP`
FAQ
How do I set up a digest schedule?
How do I set up a digest schedule?
I have a use case where a company has multiple departments/roles, and the admin will set preferences for users in these departments.
I have a use case where a company has multiple departments/roles, and the admin will set preferences for users in these departments.
What happens to existing user preference view if I change default preference setting?
What happens to existing user preference view if I change default preference setting?
I have multiple enterprise customers with various product offerings. Customers should only receive notifications for the products they have enabled, and the same should be visible on their preference page. How can I manage this in SuprSend?
I have multiple enterprise customers with various product offerings. Customers should only receive notifications for the products they have enabled, and the same should be visible on their preference page. How can I manage this in SuprSend?
visible to subscriber to false in the default tenant preferences to hide the category from the tenant’s end users.Why don't I see the 'inbox' channel in my user preferences?
Why don't I see the 'inbox' channel in my user preferences?
Why do users still receive promotional notifications even after unsubscribing from all categories?
Why do users still receive promotional notifications even after unsubscribing from all categories?
"promotional" in your workflows, users cannot unsubscribe from those notifications through the preference center, even if they unsubscribe from all visible categories.Solution: Create sub-categories under the Promotional category (e.g., “Marketing”, “Newsletter”, “Product Updates”) and use those sub-category slugs in your workflows instead of the top-level category. This allows users to:- See and control preferences for each notification type
- Opt out of specific sub-categories
- Have their preferences respected when you send notifications
Can I use user preferences in workflow branching to control which notifications are sent?
Can I use user preferences in workflow branching to control which notifications are sent?
- Store the same preference data as custom properties in the user profile
- Use those custom properties in branch conditions to route notifications
- Store user preferences for each scenario as custom properties (e.g.,
wants_new_comment_notifications: true,wants_mention_notifications: true) - Use branch conditions to check these properties and route notifications accordingly
- This allows you to have one workflow that handles all scenarios while respecting user preferences
How do I let users control both notification on/off and the time they want to be reminded (e.g., medicine reminders)?
How do I let users control both notification on/off and the time they want to be reminded (e.g., medicine reminders)?
- Create a preference category (e.g., “medicine-reminders”) that users can opt in/out of using the preference APIs or preference center UI.
- When users select their preferred reminder time, store it as a custom property in their user profile. For example:
- In your workflow’s digest node, configure it to use a dynamic schedule that references the user property (e.g.,
."$recipient".medicineReminderTime). - The digest will only send if the user has opted in to the category, and it will send at their preferred time.
- Client side (React Native): Capture user’s time preference and call your backend API
- Server side (Supabase Edge Function): Update both the user’s preference (opt in/out) via SuprSend preference API and store the time preference as a user property
- Workflow: Use preference category to control on/off, and dynamic schedule to control timing
Related documentation
- Notification Categories - Setting up categories & defaults
- Manage Categories and Preferences - Complete guide to setting up and managing categories and preferences
- Tenant Preferences - Managing tenant-level preferences
- Preference Evaluation - How SuprSend evaluates preferences at runtime