Skip to content

Attributes vs Fields

Attributes and fields serve fundamentally different purposes. Mixing them up is the single most common setup mistake, and it causes silent issues — wrong segmentation, broken personalization, or missing data in copy.

Attributes describe who the user is. They’re used for segmentation and decisioning — JustAI uses them to decide which variant to serve a given user.

Examples: locale, gender, plan_type, lifecycle_stage

Attributes are configured at the org level and auto-populate across all templates. They support four types:

  • String — e.g. locale: "en-US"
  • List — e.g. interests: ["fitness", "nutrition"]
  • Numeric — e.g. days_since_signup: 14
  • Date — e.g. created_at: "2025-06-01"

Fields are content-specific variables that get pulled directly into copy via Liquid syntax. They represent data about the product, listing, or offer — not the user.

Examples: shop_name, price, discount, product_name

Fields map to connected content variables in your CRM. They show up in variant copy as {{ product_name }} or {{ price }}.

AttributesFields
What they representUser characteristicsContent/listing data
Used forSegmentation, decisioningDynamic copy insertion
Configured atOrg levelTemplate level
Examplelocale, plan_typeproduct_name, price
How they appear in copyThey don’t (used behind the scenes)As Liquid variables: {{ field_name }}
Auto-populate?Yes, across all templatesNo, set per template

How your CRM’s terminology maps to JustAI:

CRMCRM ConceptJustAI Equivalent
BrazeCustom attributes ({{custom_attribute.${attr_name}}})Attributes
BrazeConnected content variablesFields
Customer.ioCustomer attributes ({{customer.attr_name}})Attributes
Customer.ioEvent/trigger dataFields
IterableUser profile fields ({{attr_name}})Attributes
IterableEvent/catalog dataFields

Setting product_name as an attribute. Product data changes per message, not per user. It belongs as a field. If you set it as an attribute, JustAI will try to use it for segmentation, which produces nonsensical results.

Setting locale as a field. Locale describes the user, not the content. If you set it as a field, JustAI can’t use it to personalize variant selection — it’ll just appear as a Liquid variable in copy.

Forgetting to map CRM accessor syntax. Each ESP formats attribute references differently. Make sure your CRM’s attribute syntax is correctly mapped during integration setup so JustAI can resolve values at send time.