Use OneSignal Data Tags to store user properties and track events for advanced segmentation and personalized messaging.
Data Tags are key-value pairs that let you store custom properties and track user behavior in OneSignal. They enable powerful segmentation, automation, and personalization.
Use tags to:
subscription_tier
or name
purchases
, clicks
, or levels
Important: All Tag values must be strings. You can still store numeric, timestamp, and boolean-like values—just stringify them.
Value Type | Format Example | Notes |
---|---|---|
String Label | "free" , "VIP" | For user types, privileges, statuses |
Number | "42" , "3.14" | Enables numeric filters (greater than , less than ) |
Timestamp | "1685400000" | Unix timestamp (in seconds). Use with Time Operators |
Boolean | "true" / "false" , "1" / "0" | Use "1" /"0" to reduce payload size |
Not supported: Arrays, objects, nested values, or JSON blobs.
Data Tags should represent information you want to use in messages or audience segmentation. They’re not meant to store full user profiles or logs—use your backend database for that.
Track user actions with tags. Great for triggering Journeys, follow-ups, or reminders.
Key | Value Example | Description |
---|---|---|
cart_update | "1685400000" | Last time user added something to cart. Use Time Operators. |
last_order | "1684100000" | Last completed purchase timestamp |
amount_spent | "100" | Total spent—stringified number, no currency symbol |
social_share | "2" | Count of social shares or referrals |
tutorial_status | "step2" or "completed" | Tutorial progress—use readable or numbered string values |
Used by games to personalize based on user performance.
Key | Value Example | Description |
---|---|---|
points | "1250" | Experience or game points |
level | "8" | Current game level |
high_score | "3000" | Highest score achieved |
Use these to target users by account tier or change in status.
Key | Value Example | Description |
---|---|---|
user_type | "free" , "premium" | Subscription or access tier |
has_downgraded | "1" or "1685400000" | Boolean or timestamp of downgrade |
user_privileges | "admin" , "guest" | Role-based segmentation |
Use External ID to identify individual users. Do not use tags for this purpose. See External ID and Aliases.
Great for name-based message customization using Variable Substitution.
Key | Value Example | Description |
---|---|---|
first_name | "Jon" | First name |
last_name | "Smith" | Last name |
user_name | "PokeCatcher22" | Display or screen name |
Segment users by region or age.
Key | Value Example | Description |
---|---|---|
region | "New York" | Metro area, optionally use ISO 3166-2 |
postcode | "94105" | Zip or postal code |
location | "Downtown LA" | Custom string location |
birthdate | "915148800" | Unix timestamp in seconds (birth date) |
birth_year | "1998" | Four-digit birth year |
age_range | "18-35" | Useful for general audience segmentation |
You can manage Tags using any of the methods below, depending on your use case and technical setup:
Set tags in real time from your app or website as users perform actions.
Add, update, or remove tags server-side using our REST API.
Automatically apply tags as users move through Journey steps.
Bulk update user tags by uploading a CSV with external_id
or subscription_id
.
Prompt users to self-select interests, which are stored as tags.
Collect or update tags based on in-app message click actions.
Directly edit tags from the OneSignal Dashboard.
Some integrations support syncing tags automatically.
Depends on your plan. See your plan limits or contact sales to increase your quota.
Example:
status:active
)Need help?
Chat with our Support team or email support@onesignal.com
Please include:
We’re happy to help!
Use OneSignal Data Tags to store user properties and track events for advanced segmentation and personalized messaging.
Data Tags are key-value pairs that let you store custom properties and track user behavior in OneSignal. They enable powerful segmentation, automation, and personalization.
Use tags to:
subscription_tier
or name
purchases
, clicks
, or levels
Important: All Tag values must be strings. You can still store numeric, timestamp, and boolean-like values—just stringify them.
Value Type | Format Example | Notes |
---|---|---|
String Label | "free" , "VIP" | For user types, privileges, statuses |
Number | "42" , "3.14" | Enables numeric filters (greater than , less than ) |
Timestamp | "1685400000" | Unix timestamp (in seconds). Use with Time Operators |
Boolean | "true" / "false" , "1" / "0" | Use "1" /"0" to reduce payload size |
Not supported: Arrays, objects, nested values, or JSON blobs.
Data Tags should represent information you want to use in messages or audience segmentation. They’re not meant to store full user profiles or logs—use your backend database for that.
Track user actions with tags. Great for triggering Journeys, follow-ups, or reminders.
Key | Value Example | Description |
---|---|---|
cart_update | "1685400000" | Last time user added something to cart. Use Time Operators. |
last_order | "1684100000" | Last completed purchase timestamp |
amount_spent | "100" | Total spent—stringified number, no currency symbol |
social_share | "2" | Count of social shares or referrals |
tutorial_status | "step2" or "completed" | Tutorial progress—use readable or numbered string values |
Used by games to personalize based on user performance.
Key | Value Example | Description |
---|---|---|
points | "1250" | Experience or game points |
level | "8" | Current game level |
high_score | "3000" | Highest score achieved |
Use these to target users by account tier or change in status.
Key | Value Example | Description |
---|---|---|
user_type | "free" , "premium" | Subscription or access tier |
has_downgraded | "1" or "1685400000" | Boolean or timestamp of downgrade |
user_privileges | "admin" , "guest" | Role-based segmentation |
Use External ID to identify individual users. Do not use tags for this purpose. See External ID and Aliases.
Great for name-based message customization using Variable Substitution.
Key | Value Example | Description |
---|---|---|
first_name | "Jon" | First name |
last_name | "Smith" | Last name |
user_name | "PokeCatcher22" | Display or screen name |
Segment users by region or age.
Key | Value Example | Description |
---|---|---|
region | "New York" | Metro area, optionally use ISO 3166-2 |
postcode | "94105" | Zip or postal code |
location | "Downtown LA" | Custom string location |
birthdate | "915148800" | Unix timestamp in seconds (birth date) |
birth_year | "1998" | Four-digit birth year |
age_range | "18-35" | Useful for general audience segmentation |
You can manage Tags using any of the methods below, depending on your use case and technical setup:
Set tags in real time from your app or website as users perform actions.
Add, update, or remove tags server-side using our REST API.
Automatically apply tags as users move through Journey steps.
Bulk update user tags by uploading a CSV with external_id
or subscription_id
.
Prompt users to self-select interests, which are stored as tags.
Collect or update tags based on in-app message click actions.
Directly edit tags from the OneSignal Dashboard.
Some integrations support syncing tags automatically.
Depends on your plan. See your plan limits or contact sales to increase your quota.
Example:
status:active
)Need help?
Chat with our Support team or email support@onesignal.com
Please include:
We’re happy to help!