Skip to content

Attribute Configuration

Attributes defined at the organization level are available to all templates in your account. This enables consistent segmentation across your messaging and reduces setup time when creating new templates.

JustAI supports four attribute types, each designed for different kinds of user data.

Map text values to canonical options. Use string attributes when your CRM stores categorical data like plan type, region, or user role.

Example: Subscription Tier

Option NameAliases
premium”vip”, “VIP”, “pro”, “paid”
free”basic”, “starter”, “trial”

Aliases can be exact matches or regex patterns. For example, /^(premium\|pro)$/i matches “Premium”, “PRO”, or “premium”.

Transform comma-separated values from a source attribute. Use list attributes when your CRM stores multiple values in a single field, like skills or interests.

Example: User Interests

  • Source attribute: interests (e.g., “sports,tech,music”)
  • Options: Map each value to canonical categories
Option NameAliases
sports”athletics”, “fitness”
technology”tech”, “gadgets”
music”audio”, “concerts”

Bucket continuous numbers into named ranges. Use numeric attributes for metrics like age, spend amount, or tenure.

Example: Customer Lifetime Value

  • Source attribute: total_spend
  • Buckets:
Bucket NameRange
low$0 – $100
medium$101 – $500
high$501+

Buckets are defined by maximum values. The first bucket covers values up to its max, and each subsequent bucket covers values between the previous max and its own.

Bucket dates by how recent they are. Use date attributes for recency-based segmentation like last purchase date or signup date.

Example: Purchase Recency

  • Source attribute: last_purchase_date
  • Format: ISO 8601, Unix seconds, or Unix milliseconds
  • Buckets:
Bucket NameAge
recent< 7 days
active7–30 days
lapsed> 30 days

Accessors define how JustAI extracts attribute values from your CRM data. Most integrations use Liquid template syntax, but Iterable accessors use Handlebars syntax instead.

{{ custom_attribute.${attribute_name} }}

For nested attributes:

{{ custom_attribute.${profile}.${tier} }}
{{ customer.attribute_name }}

With fallback for missing values:

{% if customer.plan %}{{ customer.plan }}{% endif %}

See the integration guides for complete examples:

Choose meaningful names. Use descriptive attribute names that reflect business concepts, not CRM field names. subscription_tier is clearer than plan_type_v2.

Consider cardinality. Attributes with many options (high cardinality) create more variant combinations. Start with 2–4 options per attribute and expand as needed.

Use aliases for data quality. If your CRM has inconsistent data (typos, case variations, legacy values), use aliases to normalize them to canonical options.

Start simple. Begin with 1–2 attributes that you know affect messaging performance. Add more attributes as you learn what drives engagement for your audience.