Segments
What are Segments?
Segments in SuperFCM are dynamic groups of subscribers that automatically update based on matching specific filter criteria. Each segment consists of:
- Name: A descriptive identifier for the segment (not visible to subscribers)
- Filter Groups: Sets of conditions that determine membership for the segment
- Status: The current state of the segment (
draft
,active
,archived
) - Multiple Entries: Determines whether subscribers can enter the segment once or multiple times
Segment Status
Each segment in SuperFCM has a lifecycle status that determines how it behaves and where it can be used within the platform. Understanding these statuses is critical for managing your segmentation strategy effectively.
Status | Dashboard Visibility | Subscriber Evaluation | Available for Messages | Editable | Deletable |
---|---|---|---|---|---|
Active | ✅ | ✅ | ✅ | ✅ | ❌ |
Draft | ✅ | ❌ | ❌ | ✅ | ✅ |
Archived | ❌ (by default) | ❌ | ❌ | ❌ | ✅ |
Active segments are fully functional: they can be used in messages, continuously update subscriber membership, and be edited at any time. Changes to active segments are reflected in linked messages immediately. Subscriber membership is automatically updated based on segment filters, typically within 5 minutes for time-based conditions.
Draft segments, while editable, are not evaluated or usable in campaigns until activated, making them ideal for building and testing segmentation logic in advance of a campaign.
Archived segments, by contrast, are frozen: they are hidden from the dashboard view, excluded from all messaging workflows, and no longer receive subscriber updates. If edits or reuse are required, archived segments must first be restored from archive.
Managing Segments
Creating Segments
To create a segment:
- Go to the Segments section in your dashboard.
- Click New Segment.
- Provide a descriptive name for the segment.
- Build your filter groups using the condition builder.
- Save the segment by clicking Save draft.
New segments are are automatically created as draft and require activation before they can be used.
Activating Segments
To activate a segment:
- Go to the Segments section in your dashboard.
- Find the segment you wish to copy.
- Click the context menu (three dots) next to it.
- Select Activate.
Editing Segments
To edit a segment:
- Go to the Segments section in your dashboard.
- Find the segment you wish to edit.
- Tap it and make the changes in the dialog that opens.
- Save the changes by clicking Save.
Changes to active segments have immediate impact on any linked messages.
Copying Segments
To copy a segment:
- Go to the Segments section in your dashboard.
- Find the segment you wish to copy.
- Click the context menu (three dots) next to it.
- Select Copy.
This will create a duplicate of the segment in draft state. To rename, simply edit the segment.
Archiving Segments
When a segment is no longer needed but should be preserved for future reference:
- Go to the Segments section in your dashboard.
- Find the segment you wish to archive.
- Click the context menu (three dots) next to it.
- Select Archive.
You cannot archive a segment that is still linked to an active message. You must first deactivate, archive, or unlink those messages.
Restoring Segments
To bring back an archived segment:
- Go to the Segments section in your dashboard.
- Find the segment you wish to restore (use the dashboard filters to show archived segments).
- Click the context menu (three dots) next to it.
- Select Restore.
Restored segments return to draft state and must be activated before use.
Deleting Segments
To permanently delete a segment:
- Go to the Segments section in your dashboard.
- Make sure the segment’s status is
Draft
orArchived
. - Click the context menu next to the segment.
- Choose Delete.
- Confirm the deletion.
You cannot delete a segment that is still linked to a message (regardless of message status). Unlink the segment first before deletion.
Segment Filters
SuperFCM provides a flexible filtering system for creating precisely targeted segments. All subscription properties are available for use in filter conditions. See the Subscription Properties Reference for a complete list of available fields.
Filters are organized into filter groups, where:
- Conditions within a group are combined using the AND operator — all must be true for a subscriber to match the group.
- Multiple groups are combined using the OR operator — matching any one group qualifies a subscriber for the segment.
This structure allows for both highly specific and broadly inclusive segmentation logic.
Custom Subscription Properties
Custom subscription properties allow you to tailor segmentation based on app-specific data. These properties must be registered in your app settings before they can be used in a segment filter.
To register a custom property:
- In the main menu, go to Settings.
- Scroll to the Custom Subscription Properties section and click Add Property.
- Enter a unique name and select the appropriate data type.
- Click Save to register the property.
Property names must use only letters, numbers, and underscores. Both snake_case (e.g., last_purchase_date
) and camelCase (e.g., lastPurchaseDate
) formats are supported, as long as they follow these character rules.
Custom properties that are in use within any segment (regardless of segment status) cannot be deleted.
Supported Operators
SuperFCM supports a rich set of filter operators, and each one is valid only for specific data types. When defining a filter, the system validates both the operator and the field type. For example, comparison operators like <
or >
are only valid for number
and date
types. Filters that apply to array
fields work with both arrays of strings and arrays of numbers.
Operator | String | Number | Boolean | Date | Array | Description |
---|---|---|---|---|---|---|
< | ❌ | ✅ | ❌ | ✅ | ❌ | Less than |
<= | ❌ | ✅ | ❌ | ✅ | ❌ | Less than or equal to |
== | ✅ | ✅ | ✅ | ❌ | ❌ | Equal to |
> | ❌ | ✅ | ❌ | ✅ | ❌ | Greater than |
>= | ❌ | ✅ | ❌ | ✅ | ❌ | Greater than or equal to |
!= | ✅ | ✅ | ✅ | ❌ | ❌ | Not equal to |
in | ✅ | ✅ | ✅ | ❌ | ❌ | Value exists in list |
not-in | ✅ | ✅ | ✅ | ❌ | ❌ | Value does not exist in list |
starts-with | ✅ | ❌ | ❌ | ❌ | ❌ | String starts with provided value |
ends-with | ✅ | ❌ | ❌ | ❌ | ❌ | String ends with provided value |
contains | ✅ | ❌ | ❌ | ❌ | ✅ | String or array contains value |
not-contains | ✅ | ❌ | ❌ | ❌ | ✅ | String or array does not contain value |
empty | ✅ | ❌ | ❌ | ❌ | ✅ | Field is empty or null |
not-empty | ✅ | ❌ | ❌ | ❌ | ✅ | Field is not empty or null |
Example: Active Samsung Users
The JSON example below defines a segment targeting subscribers who use Samsung devices and have been active within the last 24 hours (1,440 minutes). Subscribers who become inactive for more than 24 hours will automatically exit the segment. With allowMultipleEntries
set to true
, these users can re-enter the segment if they meet the criteria again in the future — ensuring dynamic, up-to-date membership based on user activity.
{
"name": "Active Samsung Users",
"status": "active",
"filterGroups": {
"group1": [
{ "field": "deviceManufacturer", "operator": "==", "value": "Samsung" },
{ "field": "dateLastSeen", "operator": "<", "value": 1440 }
]
},
"allowMultipleEntries": true
}