Skip to main content

Custom Fields

Custom fields allow you to store any additional data about your customers beyond the standard fields (email, name, city, country, score). They enable powerful personalization and segmentation.

How Custom Fields Work

Custom fields are stored as flexible key-value pairs on each customer record. They are automatically created when you upload a CSV with non-standard column headers.

Standard fields (built-in):

  • email, first_name, last_name, phone, city, country, score

Custom fields (anything else):

  • plan_type, signup_date, company, industry, lifetime_value, etc.

Creating Custom Fields

Custom fields are created implicitly when you upload a CSV:

email,first_name,company,plan_type,renewal_date
alice@example.com,Alice,Acme Corp,enterprise,2025-06-01
bob@example.com,Bob,StartupXYZ,free,2025-03-15

In this upload, company, plan_type, and renewal_date are automatically stored as custom fields.

info

Custom fields are flexible — different customers can have different custom fields. There's no need to predefine a schema.

Customers Table with Custom Fields

Using Custom Fields

In Email Content (Merge Tags)

Reference custom fields in your email content using the {{custom.FIELD_NAME}} syntax:

<p>Hi {{first_name}},</p>
<p>Your {{custom.plan_type}} plan renews on {{custom.renewal_date}}.</p>

You can add fallback values:

<p>Welcome to {{custom.company|our platform}}!</p>

In Segments

Custom fields can be used as segment conditions:

  1. Go to Segments → New Segment
  2. Add an Attribute Condition
  3. Select Custom Field as the field type
  4. Enter the field name (e.g., plan_type)
  5. Choose an operator (equals, contains, starts with, etc.)
  6. Enter the comparison value

Example segment: All customers where plan_type equals enterprise AND country equals US.

In Journey Conditions

Journey condition steps can evaluate custom field values to branch customer flows. For example, route premium customers down a different path than free-tier users.

Supported Operators for Custom Fields

When used in segments, custom fields support these operators:

OperatorDescriptionExample
eqEqualsplan_type = 'premium'
neqNot equalsplan_type ≠ 'free'
containsContains substringcompany contains 'Corp'
starts_withStarts withemail starts with 'admin'
ends_withEnds withemail ends with '.edu'
gt / gteGreater than (or equal)lifetime_value > 100
lt / lteLess than (or equal)score < 50
betweenBetween two valuesscore between 10 and 90
is_setField has a valuephone is set
is_not_setField is empty/nullcompany is not set

Best Practices

  • Use consistent naming: Stick to snake_case for field names across all uploads (e.g., plan_type, not Plan Type or planType)
  • Document your fields: Keep a reference of what custom fields you use and their expected values
  • Plan ahead: While flexible, consistent field names make segmentation much easier
  • Store dates in ISO format: Use YYYY-MM-DD for date fields to enable proper comparison operators
  • Keep values clean: Avoid trailing spaces or inconsistent casing in values