Message category settings
Path: Settings > Messaging & Content > Message Categories
Message Categories define the business purpose of a campaign. They classify every message according to why it is sent, and they declare which channels that purpose applies to. Each user holds a separate opt-in state for every category + channel pair, so a user can accept a purpose on one channel and reject it on another. These states can be changed by the user through the Mobile SDK, or by the brand through the panel and the REST API.
Examples of categories:
promotions
order_tracking
security
transactions
announcements
A category can cover one channel or several. order_tracking can be defined for Mobile Push, Email, and SMS at the same time, while a category such as sms_otp can be restricted to SMS only.
Consent is stored per category + channel. A user who opts out of promotions on Mobile Push keeps receiving promotions on Email.
Why Message Categories Are Important
1. Purpose-Based Consent (Granular Permission Management)
Traditional communication models rely only on channel-based permission:
Push: allowed / not allowed
Email: allowed / not allowed
Modern privacy standards and user expectations require more granular control. Users may want to receive some types of communication while rejecting others, and they may want a different answer per channel.
Promotions
Opted out
Opted in
Opted out
Order Updates
Opted in
Opted in
Opted in
Security Alerts
Opted in
Opted in
Opted in
This is called purpose-based consent.
When a campaign is assigned a message category:
Netmera checks whether the user has granted permission for that purpose on the campaign's channel.
Delivery occurs only if both channel permission and purpose permission are valid.
If the user has opted out of that category on that channel, the message is automatically blocked.
Without a category assignment, purpose-level enforcement cannot be applied.
2. Compliance and Governance
Message Categories help ensure regulatory compliance and internal governance.
They:
Separate marketing content from transactional or mandatory messages.
Prevent accidental misuse of transactional channels for promotional content.
Provide a clear audit trail of communication intent.
Support compliance with regulations requiring explicit purpose limitation.
Each campaign must clearly define its purpose. This reduces ambiguity and operational risk.
Delivery Logic: Channel + Purpose Model
Netmera evaluates message delivery in three steps:
Channel permission Whether the user allows communication through the selected channel (Mobile Push, Email, SMS, WhatsApp, In-App, Web Push). If this is off, nothing is delivered, regardless of category preferences.
Category + channel preference Whether the user allows communication for this specific purpose on this specific channel.
Category default If no preference record exists for the category + channel pair, the category's Subscription Type decides the outcome.
Delivery occurs only when all applicable conditions are satisfied.
ON
ON, or no record on an Opt-in category
Delivered
ON
No record on an Opt-out category
Blocked until the user opts in
ON
OFF
Blocked for this category only. Other categories on the same channel are unaffected.
OFF
ON
Blocked
OFF
OFF
Blocked
Channels and API values
The same six channels are available in the panel, the REST API, and the Mobile SDK.
Mobile Push
MOBILE
EMAIL
SMS
SMS
WHATS_APP
In-App
IN_APP
Web Push
WEB
For the complete consent setup, see Granular Consent Management.
Create a Message Category
Field definitions

Category ID
Stable key used in permission storage, reporting, and exports. The ID is immutable: once the category is created, it cannot be changed. Attempting to change it returns Category ID cannot be changed after the category is created.
Category Name
Human-readable name shown in the panel and used by the REST API. Names must be unique; a duplicate returns Category name already exists. Naming can be adjusted later without breaking analysis, as long as the ID stays stable.
Channels
The channels the category applies to. Available options:
Mobile Push
ON
ON
SMS
ON
ON
In-App
ON
Web Push
ON

All channels are selected by default on a new category.
Channels are selected independently. One or several can be active.
At least one channel is required. If every channel is cleared, Create / Save is disabled and the field shows
At least one channel must be selected.Channel selection can be changed later from the Edit screen.
Subscription Type
Determines what happens when a user has no preference record for the category on a given channel.

Opt-in (default)
Subscribed
Only the users who opted out
Opt-out
Not subscribed
Only the users who opted in
Use Opt-in for categories users are expected to receive by default, such as order tracking or security alerts. Use Opt-out for categories that require explicit consent before the first send.
Best practices for Category ID
Keep it short and stable (example:
promo).Use a purpose, not a channel. A category can span channels; use the Channels field to scope it, not the ID.
Prefer lowercase and avoid spaces (example:
order_tracking).Don't change IDs after launch. The ID is immutable — create a new category instead.

Recommended category structure
Don't create separate categories for the same purpose, such as push_promo, sms_promo, and email_promo. Use a single promo category and select the channels it applies to. Channel-level consent is stored under that single category, so users and reports see one purpose with a per-channel breakdown.
Categories created before channel selection
Categories created before channel selection was introduced carry no channel information. They are treated as valid on all channels for backward compatibility, and they appear in the Edit screen with every channel selected. No manual migration is required.
Message Categories List
The list screen shows each category with its active channels and its per-channel audience.
Channels column
Displays the icons of the channels the category is active on.
Per-channel user counts
Opt-in Users and Opt-out Users are reported for each channel separately. There is no single category-level opt-in or opt-out figure, because a user can hold a different state on each channel.
order_tracking
Push, Email
1,250
24
1,180
94
-
-
Channels the category is not active on show
-instead of a count.Counts reflect the resolved effective permission for the category + channel pair, including the category's Subscription Type default.
Opt-in / Opt-out columns can be shown or hidden per channel. Hiding one channel's columns does not affect the others.

Example
A user opts out of the Newsletter category on Mobile Push and keeps Email permission.
Mobile Push
-1
+1
No change
No change
SMS
No change
No change
No change
No change
In-App
No change
No change
Web Push
No change
No change
The preference affects only the Newsletter + Mobile Push combination.
Assign a Category to a Campaign
Mobile Push
Categories with Mobile Push selected, plus legacy categories
Categories with Email selected, plus legacy categories
SMS
Categories with SMS selected, plus legacy categories
Categories with WhatsApp selected, plus legacy categories
In-App
Categories with In-App selected, plus legacy categories
Web Push
Categories with Web Push selected, plus legacy categories

More examples (different channels)



Manage Category Permissions on a User
Category permissions are visible and editable per channel in User Detail.
Each category is listed with a toggle for Mobile Push, Email, SMS, WhatsApp, In-App, and Web Push:
Category X
Toggle
Toggle
Disabled
Disabled
Disabled
Disabled
Only the channels the category is defined for are editable. The remaining toggles are disabled and produce no permission record.

A toggle with no stored preference reflects the category's Subscription Type: ON for opt-in categories, OFF for opt-out categories.
Legacy categories show every channel toggle as editable.
Changing a toggle updates only that category + channel pair. It does not change the user's general channel permission, the category's other channels, or the user's preferences in other categories.

User Detail cannot change which channels a category is defined for. That definition lives in Settings > Message Categories.
Target Users by Category Permission
Under Targeting > Find People, the By Category Permission condition accepts a channel selection alongside the category.
Select one or more channels to evaluate permission only on those channels.
Leave the channel selection empty to evaluate against the campaign's channel, or — with no campaign context — against the category's own channels.
For audience counting, reachability is based on whether the user has the identifier or token required by the channel (email address, phone number, or a registered mobile or web device).


Purpose-Based Reporting and Analytics
Message Categories enable reporting by business intent rather than by channel alone. Channel Reachability reports show how many users are reachable per purpose, broken down by channel:
promotions
order_tracking
security
Without category assignment, this level of analysis is not reliable.


REST API and SDK Overview
Message Categories are available outside the panel through two integration layers. The REST API is used from your backend to list categories, assign them to notifications sent by API, and read or update a user's category preferences. The Mobile SDK is used inside your app to show users their category preferences and let them change them, for example in a preference center or notification settings screen.
REST API
GET /rest/3.0/getPushCategories
Lists the categories defined under Settings > Message Categories. The returned names and IDs are used by the other endpoints.
POST /rest/3.0/setCategoryPreferences
Opts a user in or out of a category, for all channels or for one channel with channel.
GET /rest/3.0/getCategoryPreferences
Returns a user's category preferences with a per-channel breakdown. Can be filtered with categoryIds and channels.
POST /rest/3.0/sendBulkNotification
Assigns one or more categories to a notification sent by API through the categories field.
POST /rest/3.0/createNotificationDefinition
Assigns categories to a transactional notification definition through the categories field.
Mobile SDK
Android
getUserCategoryPreferenceList, setUserCategoryPreference
Read and update the user's category preferences. Channel-level read and write with NMCategoryPreferenceFilter, NMCategoryPreferenceUpdate, and NMCategoryChannel (4.21.0+).
iOS (Swift)
getUserCategoryPreferenceList, setUserCategoryPreference
Read and update the user's category preferences. Channel-level read and write with categoryIds, channels, and channel parameters (4.26.0+).
iOS (Objective-C)
getUserCategoryPreferenceList, setUserCategoryPreferenceWithCategoryId
Read and update the user's category preferences at category level.
Flutter
getUserCategoryPreferenceList, setUserCategoryPreference
Read and update the user's category preferences at category level.
On Android and iOS, the Push Inbox filter (NetmeraInboxFilter) also accepts category names, so an in-app inbox can list messages by purpose.
Manage Category Permissions Through SDK and REST API
Category + channel preferences are not limited to the panel. The same records can be read and written from the Mobile SDK and the REST API, so the consent state follows the user wherever the decision is made — inside the app, in your backend systems, or by your operations team — while Netmera keeps a single, enforceable record.
Mobile SDK
The user
In-app preference center or notification settings screen
REST API
The brand, on the user's behalf
CRM or consent-management platform sync, web preference center, email unsubscribe page, SMS keyword reply, call center request
Panel
The brand
Manual correction or support request in User Detail
The channel parameter is optional in every category preference method:
Without a channel — the call applies to all channels of the category, matching the behavior in place before channel selection. Existing integrations keep working without changes.
With a channel — the call applies only to that category + channel pair.
Responses keep their existing category-level field and add a channel breakdown alongside it, so an older integration reads the same value it read before.
Mobile SDK
The per-channel category preference methods require the following native SDK versions (released September 17, 2026):
Android
4.21.0
Netmera.getUserCategoryPreferenceList(filter, callback) with NMCategoryPreferenceFilter
Netmera.setUserCategoryPreference(NMCategoryPreferenceUpdate, callback)
iOS (Swift)
4.26.0
Netmera.getUserCategoryPreferenceList(categoryIds:channels:)
Netmera.setUserCategoryPreference(categoryId:categoryEnabled:channel:)
The aggregate status (
optInStatuson Android,categoryEnabledon iOS) istruewhen the category is enabled on any channel. Use the per-channel breakdown (channelPreferences) to render channel toggles.On Android,
Netmera.setUserCategoryPreference(categoryId, categoryEnabled, listener)is deprecated and behaves like the new method without a channel.
See the Developer Guide for full reference: Android — Message Categories and iOS — Manage Push Notification Categories.
REST API
POST /rest/3.0/setCategoryPreferences
Opt a user in or out of a category
channel (optional, per entry)
GET /rest/3.0/getCategoryPreferences
Read a user's category preferences
channels (optional, list filter)
GET /rest/3.0/getPushCategories
List the categories defined for the application
—
categoryPreferencesis kept for backward compatibility and istruewhen the user is permitted on any of the category's channels. Thechannelsfilter does not affect it.categoryChannelPreferencesreturns the per-channel state. Use it for channel-level decisions.An entry with an unrecognized
channelvalue is skipped and logged; the remaining entries are processed. A typo leaves that preference unchanged instead of updating every channel.
See the Developer Guide — Category Preferences for all parameters.
Use Cases
The following scenarios show how channel-based category consent supports common business and compliance requirements.
1. In-app preference center
A retail app shows a settings screen with a row per category and a toggle per channel. The user keeps Promotions on Email, turns it off on Mobile Push and SMS, and keeps Order Updates on every channel.
Implementation:
getUserCategoryPreferenceListwithchannelPreferencesto render the screen;setUserCategoryPreferencewithchannelfor each toggle.Result: Promotional push and SMS campaigns skip the user; promotional emails and all order updates are still delivered.
GDPR reference: Art. 7(3) — withdrawing consent must be as easy as giving it. Recital 43 — separate consent for different processing operations.
2. Channel-specific unsubscribe from an email or SMS
A user clicks the unsubscribe link in a promotional email, or replies with an opt-out keyword to a promotional SMS. The user objects to that message type on that channel, not to all communication.
Implementation: Your unsubscribe page or SMS keyword handler calls
setCategoryPreferenceswith"channel": "EMAIL"or"channel": "SMS"and"enable": false.Result: Only
promo+ Email (orpromo+ SMS) is turned off. Promotional push, order tracking, and security messages continue as consented.GDPR reference: Art. 21(2)–(3) — right to object to direct marketing at any time; once exercised, the data must no longer be processed for that purpose. Art. 7(3) — withdrawal of consent.
3. Consent collected in another system (CRM, CMP, web, call center)
Consent is captured outside the app — during web registration, in a consent-management platform, or by a call center agent — and Netmera must reflect it.
Implementation: Your backend syncs changes with
setCategoryPreferences, sending one entry per category + channel pair. UsegetCategoryPreferencesto reconcile states.Result: Netmera enforces the same decision the user gave elsewhere, without waiting for an app session.
GDPR reference: Art. 7(1) — the controller must be able to demonstrate consent; keeping one enforceable record per purpose and channel supports this. Art. 5(1)(d) — accuracy.
4. Explicit consent before the first marketing message
Some markets or internal policies require that no marketing message is sent until the user explicitly agrees.
Implementation: Create the marketing category with Subscription Type Opt-out. Users without a record are not subscribed. Write an opt-in record only after the user agrees on a given channel.
Result: New users receive no marketing on any channel until they opt in on that channel.
GDPR reference: Art. 4(11) and Art. 6(1)(a) — consent must be a clear affirmative act. Art. 25(2) — data protection by default. ePrivacy Directive Art. 13 — prior consent for electronic direct marketing.
5. Keeping service messages separate from marketing
A user opts out of every promotional channel but must still receive order and security notifications.
Implementation: Keep
order_trackingandsecurityas separate categories frompromo, and assign them to their campaigns.Result: A marketing opt-out never blocks service messages, and service channels cannot be reused for promotional content without a visible category mismatch.
GDPR reference: Art. 5(1)(b) — purpose limitation. Art. 7(2) — a consent request must be clearly distinguishable from other matters. Recital 32 — consent should cover all purposes; when processing has multiple purposes, consent should be given for each of them.
6. Purpose-limited SMS categories
An OTP category is defined for SMS only.
Implementation: Create
sms_otpwith only SMS selected. It does not appear in other channels' campaign editors, and no preference records can be created for it on other channels.Result: The purpose is restricted to the channel it was collected for.
GDPR reference: Art. 5(1)(b) — purpose limitation; Art. 5(1)(c) — data minimisation.
GDPR Reference Summary
Art. 4(11)
Consent is specific, informed, and unambiguous
Each category + channel pair is a separate, specific decision
Art. 5(1)(b)
Purpose limitation
Categories represent purposes; campaigns must declare one
Art. 5(1)(c)
Data minimisation
Categories can be restricted to the channels the purpose needs
Art. 5(1)(d)
Accuracy
REST and SDK keep the Netmera record aligned with decisions made in other systems
Art. 6(1)(a)
Consent as a lawful basis
Opt-out Subscription Type prevents sending before an explicit opt-in
Art. 7(1)
Ability to demonstrate consent
Per-channel states are visible in User Detail and retrievable through getCategoryPreferences
Art. 7(2)
Consent request clearly distinguishable
Separate categories for marketing and service messages
Art. 7(3)
Withdrawal as easy as giving consent
One toggle or one API call withdraws consent for a single purpose on a single channel
Art. 21(2)–(3)
Right to object to direct marketing
A marketing opt-out on a channel is enforced on the next send
Art. 25(2)
Data protection by default
Opt-out Subscription Type defaults new users to not subscribed
Recital 32, 43
Consent per purpose; separate consent for separate operations
Consent is stored per category and per channel
Summary
Message Categories are a structural foundation for:
Granular consent enforcement, per purpose and per channel
Compliance with purpose limitation principles
Clean campaign classification
Reliable reporting by business intent
They are not optional labels. They are a core part of how Netmera manages responsible and measurable communication.
Related Pages
Last updated
Was this helpful?
