Traits

Introduction

You can think of Traits as a high level description of all the data that can be found in your Refiner environment. If you think about all your Refiner data as a giant spreadsheet, there would be one column for each Trait.

All data in your Refiner account is represented by a Trait – user data that you provide, automatically computed traits, as well as survey response data provided by your users.

Traits are created automatically for you whenever we receive user data for your Refiner environment.

  • When you identify a user, a trait is created for each data attribute that you include in the identifyUser call.
  • When we receive a new survey response, a trait is created for each survey question if no matching trait can be found
  • Computed traits are automatically generated when new user data is available, for example “User first seen”, “Last survey submission”, “Total survey submissions”, etc.

You can find all trait data we have on record for a given user in the User Details Panel.

Trait properties

Data types

Refiner supports the following data types:

  • Strings – 10.000 characters max length
  • Integer numbers – ranging from -2147483647 to 2147483647
  • Dates – ISO date format or Linux timestamp

Strings and Integer numbers are detected automatically by our APIs.

To import dates to Refiner, your field identifier needs to follow a certain pattern. Our APIs detect dates if the field name ends with “_at” (e.g. created_at, upgraded_at, another_event_at, …) or “_date” (e.g. subscription_date, last_login_date, …). You can provide dates as ISO strings or Unix Timestamps.

Reserved traits

You are in full control over what user data you want to send to Refiner. When identifying your users (e.g. with our Web-Client, Mobile SDKs, …) you have the option to provide any additional trait you think might be useful for segmentation and data analysis. A

Refiner has a couple of reserved field identifiers which you should be aware of. If you use any of the following data field, Refiner will interpret the provided data in a certain way or ignore the provided data.

idA unique string identifier for the current user. This field is the mandatory if you don’t provide an email address.
emailThe email address of a the current user. This field is optional. If provided without a user Id, Refiner uses the email address as the user identifier.
first_seen_atThe date and time when a user was first seen by any of our APIs. The date value is calculated automatically and can’t be overwritten.
last_seen_atThe date and time when a user was last seen by any of our APIs. The date value is calculated automatically and can’t be overwritten.
last_form_view_atThe date and time a user saw a survey the last time. The date value is calculated automatically and can’t be overwritten.
last_form_submission_atThe date and time a user responded to a survey the last time. The date value is calculated automatically and can’t be overwritten.
form_submissions_countThe number of times a user responded to a survey. The date value is calculated automatically and can’t be overwritten.
form_views_countThe number of times a user saw a survey. The date value is calculated automatically and can’t be overwritten.
localeIf provided when identifying a user with our Web-Client, Refiner uses the locale value to overwrite the automatically detected language of a user. The provided value is then used for the language targeting option, as well as for the multi-language translation feature. The expected value is a two characters ISO 639-1 code.
countryIf provided when identifying a user with our Web-Client, Refiner uses the value to overwrite the automatically detected country of the user. The value is then used for the country targeting feature. The expected value is a two characters ISO 3166 country code.

Account traits

Besides user traits, Refiner lets you also store data on an “account” level. An account groups multiple users in one entity. You can think of accounts as “groups” or “companies”.

Account traits are typically only created when you are using our Segment integration, or when you explicitly provide and account object when identifying users with our Web-client or our API. By default, all data in your Refiner environment is linked to user records.

Limitations

The number of traits is limited to 1.000 traits per environment. Once this number is reached, we won’t create new traits on data reception which might lead to data loss. If you think you’ll exceed 1.000 traits, please contact our support team.

Manage traits

The Traits Table is where you find a description of all traits that are stored in your Refiner environment for your users. The page lets you rename, disable and delete traits.

Rename traits

Trait names are created automatically based on the identifier used in your surveys or when calling our API. You can rename traits if you want to add more clarity to your Refiner account.

Get usage info

For each trait you’ll find check icon that indicates if a trait is currently used in your environment. Clicking on the icon will reveal detailed usage information.

Delete and disable traits

You can choose to delete a trait or disable it. When you delete a trait, it will be removed from your environment and all associated data with it. A deleted trait will reappear if we receive new data using the same identifier.

When you disable a trait, Refiner will ignore all incoming data for it and you won’t see the trait in other places in your dashboard.

You can also create traits manually if needed. For example if you want start building segments before connecting an actual data source to your environment.

Flag as finite data

Finite dataset means that there is a limited and well defined number of possible values. For example, a list all countries or the activation status of a user, are both finite datasets. The opposite of a finite dataset are continuous datasets, such as arbitrary strings (e.g. “first name”) or numbers (e.g. “login count”).

When a dataset is set to “Finite”, you’ll have access to different kind of filters when creating a data-driven segment.

Refiner tries to figure out automatically if a field holds a finite or continuous dataset, based on the name of the field (e.g. “country”, “role”, …). If Refiner didn’t get it right, you can change switch a data field from finite to continuous and vice versa anytime.

Was this helpful? Let us know with a quick a vote