Skip to main content

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_name
  • is_active
  • business_type
  • plan_name
  • num_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.

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:

  • id
  • email

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
Person attributes

Example use cases:

  • People on a paid plan
  • Accounts with more than 5 projects
  • Users older than 35
Attribute conditions

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
Event attributes

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

Event timeframe

Each condition can include one piece of event data.


Attribute naming guidelines​

Attribute names are case sensitive.

For example:

  • first_name and First_name are 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.

AttributePurposeRequiredFormat
idUnique person identifierWhen importing by IDUTF-8, max 150 characters
emailPerson’s email addressWhen importing by emailRFC 5322
created_atProfile creation timestampOptional (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_status
  • last_used
  • platform (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.