User Attributes
Attributes are the details you know about people in your audience—such as their name, email address, plan type, or account status.
Attributes help you personalize messages, create targeted segments, and make your campaigns more relevant.
How attributes work
Attributes are data points stored on a person’s profile. They describe who someone is and what state they are in.
Examples include:
first_nameis_activebusiness_typeplan_namenum_projects
Attributes can be:
- Strings (e.g.
"free") - Booleans (e.g.
true) - Numbers (e.g.
15)
All attributes are stored on the person object and can be referenced anywhere using:
{{ person.attribute_name }}
For example:
{{ person.first_name }}
User attributes are available in all messages, while event attributes are only available in event-triggered messages.
What you can do with attributes
Attributes power many features in Conviso, including:
- Personalizing emails, push notifications, and SMS
- Creating dynamic audience segments
- Tracking user lifecycle and account state
- Adding conditional logic to campaigns
Once attributes are flowing in, you can build highly targeted and data-driven messaging.
Sending attribute data
You send attributes when you identify a person. You can do this using any Conviso source integration or API.
JavaScript source (recommended)
client.identify('userid_34', {
first_name: 'Joe',
email: '[email protected]',
created_at: 1339438758, // strongly recommended
plan_name: 'free',
is_account_manager: true,
num_projects: 15
});
We strongly recommend sending created_at the first time you identify a person. This enables time-based segmentation and helps maintain accurate data ordering.
Identifiers and attributes
Some attributes uniquely identify a person. These are called identifiers.
Common identifiers include:
idemail
Depending on your workspace settings, you may be able to create a person with just one identifier and add others later. Identifiers behave like other attributes once they are set.
Using attributes in segments
Once attributes are available, you can use them to define who should (or shouldn’t) be included in a segment.
Person attribute conditions
You can segment people based on attribute values such as:
- Equals or does not equal
- Exists or does not exist
- Greater than or less than

Example use cases:
- People on a paid plan
- Accounts with more than 5 projects
- Users older than 35

Using event attributes
Event attributes come from the data you send with events and are only available in event-based conditions and event-triggered messages.
For example, you can segment people who:
- Viewed their cart
- Completed a checkout
- Performed an action within a specific timeframe

You can refine event conditions by time, such as “within the last 30 days”.

Each condition can include one piece of event data.
Attribute naming guidelines
Attribute names are case sensitive.
For example:
first_nameandFirst_nameare treated as different attributes
To avoid issues with segmentation and personalization:
- Use consistent naming across all sources
- Prefer lowercase
snake_case - Avoid spaces, periods, and special characters
You can use the Data Index to identify naming inconsistencies.
Reserved attributes
Conviso reserves certain attributes to support core functionality.
| Attribute | Purpose | Required | Format |
|---|---|---|---|
id | Unique person identifier | When importing by ID | UTF-8, max 150 characters |
email | Person’s email address | When importing by email | RFC 5322 |
created_at | Profile creation timestamp | Optional (recommended) | Unix epoch |
Attribute data types
Attributes support all JSON data types, including objects and arrays.
Best practices:
- Store values in their native types (booleans as booleans, numbers as numbers)
- Avoid storing numbers or booleans as strings
Accessing complex attributes
You can reference nested data using dot notation:
{{ person.address.city }}
{{ person.address[0].city }}
Arrays are zero-indexed.
In segments, you can loop over arrays using:
person.address[].city
Attribute update order
Attribute updates are processed in the order they are received. To avoid conflicts caused by network delays, include timestamps with updates.
When multiple updates exist:
- Updates with newer timestamps take precedence
- New attributes are added automatically
Updating attributes manually
You can bulk add or update attributes by uploading a CSV file. This is useful for migrations, backfills, or correcting data.
Device attributes
Mobile devices have their own attributes, separate from person attributes.
Conviso automatically collects:
last_statuslast_usedplatform(via SDKs)
You can also set custom device attributes and use them in segments and conditions, just like person attributes.
Avoid storing sensitive information
Only store data you actively use in Conviso.
Do not store:
- Passwords
- Tokens or secrets
- Highly sensitive personal data
Limiting stored data reduces security risk and helps protect your users’ privacy.