For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Message Categories provide the technical structure for purpose- and channel-specific permissions. Your organization remains responsible for determining the consent model, lawful basis, and wording required by applicable regulations. The GDPR references on this page are for orientation and are not legal advice.

Why Message Categories Are Important

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.

Purpose
Mobile Push
Email
SMS

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:

  1. 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.

  2. Category + channel preference Whether the user allows communication for this specific purpose on this specific channel.

  3. 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.

General channel permission
Category + channel preference
Result

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

Category-level unsubscribe never changes the general channel permission. If a user turns off Mobile Push for one category, the general Mobile Push permission stays on and every other push category keeps its own state. When the general permission is turned off and later back on, the stored category preferences still apply.

Channels and API values

The same six channels are available in the panel, the REST API, and the Mobile SDK.

Panel channel
REST API / SDK value

Mobile Push

MOBILE

Email

EMAIL

SMS

SMS

WhatsApp

WHATS_APP

In-App

IN_APP

Web Push

WEB

For the complete consent setup, see Granular Consent Management.

Create a Message Category

1

Open Message Categories

Go to Settings > Message Categories.

2

Create and save

  1. Click Create.

  2. Fill in Category ID and Category Name.

  3. Select the Channels the category applies to.

  4. Select the Subscription Type.

  5. Click Save.

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:

Channel
Default state

Mobile Push

ON

Email

ON

SMS

ON

WhatsApp

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.

Subscription Type
Users with no record
What is stored

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.

Category ID and Name

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.

Category Name
Channels
Mobile Push Opt-in
Mobile Push Opt-out
Email Opt-in
Email Opt-out
SMS Opt-in
SMS Opt-out

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.

Channel
Opt-in Users
Opt-out Users

Mobile Push

-1

+1

Email

No change

No change

SMS

No change

No change

WhatsApp

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

1

Go to the content step

While creating a campaign, open Step 2: What (or the channel's equivalent "Content" step).

2

Select the category

Pick the category that matches the campaign's purpose. The list shows only the categories that are active on the campaign's channel.

Campaign channel
Categories listed

Mobile Push

Categories with Mobile Push selected, plus legacy categories

Email

Categories with Email selected, plus legacy categories

SMS

Categories with SMS selected, plus legacy categories

WhatsApp

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

Select a category in the campaign flow

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
Mobile Push
Email
SMS
WhatsApp
In-App
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

Endpoint
What it does
Developer Guide

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

Platform
Methods
What they do
Developer Guide

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.

Detailed parameters, request and response models, and error handling are documented in the Netmera Developer Guide. The section below summarizes channel-based preference management and its use cases.

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.

Source
Who changes the preference
Typical trigger

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):

Platform
Minimum version
Get preferences
Update preferences

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 (optInStatus on Android, categoryEnabled on iOS) is true when 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

Endpoint
Purpose
Channel parameter

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

—

  • categoryPreferences is kept for backward compatibility and is true when the user is permitted on any of the category's channels. The channels filter does not affect it.

  • categoryChannelPreferences returns the per-channel state. Use it for channel-level decisions.

  • An entry with an unrecognized channel value 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: getUserCategoryPreferenceList with channelPreferences to render the screen; setUserCategoryPreference with channel for 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 setCategoryPreferences with "channel": "EMAIL" or "channel": "SMS" and "enable": false.

  • Result: Only promo + Email (or promo + 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.

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. Use getCategoryPreferences to 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.

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_tracking and security as separate categories from promo, 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_otp with 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

Article
Principle
How Message Categories support it

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.

Last updated

Was this helpful?