Contact Properties

Custom fields that extend built-in contact data with your own values for segmentation.

Contact properties are custom fields that extend the built-in contact information (email, first name, last name, language, timezone). They let you store extra data points that matter to your business — plan tier, company name, signup date, or anything else you want to segment on.

Built-in fields

Every contact comes with these standard fields:

  • Email — the contact's email address (optional; contacts can arrive through non-email channels and have no email)
  • First Name — used for personalization
  • Last Name — used for personalization
  • Language — preferred language for translated emails
  • Timezone — used for time-aware sending

Each contact also carries a system-assigned Source that records how it was added — one of api, import, form, transactional, or inbound. Source is set automatically by the system and is not user-editable.

These fields are always available and don't need to be created.

Creating custom properties

Open the properties settings

Go to Settings > Contact Properties.

Create a new property

Click New Property.

Enter a label and key

A property has two identifiers:

  • Label — the human-readable display name shown in forms and contact details (for example, "Company Name").
  • Key — a lowercase identifier with only letters, numbers, and underscores (for example, company_name). It is auto-generated from the label and is the name you reference as {{key}} in templates and as the property key in segment filters.

Choose a field type

Pick the type that matches the data you'll store (see the table below).

Save the property

Click Create Property.

Key and type are permanent

After a property is created, only its Label can be edited. The Key and type are immutable — to change either, delete the property and create a new one.

Field types

TypeBest forExample values
TextFree-form strings"Acme Corp", "Enterprise"
NumberQuantities, scores, amounts42, 99.5
BooleanYes/no flagstrue, false
DateTimestamps and milestones2025-03-15

Choose the right type upfront — it affects how you can filter contacts in segments. A "Plan Tier" stored as text lets you match exact values, while a "Monthly Spend" stored as a number lets you use greater-than/less-than comparisons.

Setting property values

Defining a property creates the field; populating each contact's value is a separate step. Several surfaces write custom property values today:

  • Contact detail page — open a contact and click Edit to expose an editable field (text, number, date, or yes/no) for each custom property; the contact's values are persisted when you click Save.
  • Dashboard CSV import — in the CSV importer, map a column to Custom property (the column header becomes the property key), alongside the email, first/last name, language, and topic mappings.
  • Mailchimp / Stripe sync — when you import contacts from a connected integration, Owlat auto-registers any property keys it finds (Mailchimp merge fields, Stripe metadata) and writes the corresponding values. Auto-registered properties appear in Settings > Contact Properties, where you can rename or delete them like any other property.
What can't write property values yet

The contact detail page is read-only only while you are viewing it (it displays "Not set" when empty) — clicking Edit exposes the editable fields described above. Public forms and the public REST/SDK Contacts API do not yet write custom property values: the public Contacts API and SDK accept only email, first name, and last name.

Using properties in your workflow

Segmentation

Build Segments that filter contacts by property values. For example, create a segment for contacts where "Plan Tier" equals "Enterprise" to target your highest-value customers. Property filters support a full operator set — equals, not_equals, contains, not_contains, greater/less than (gt/lt/gte/lte), is_empty/not_empty, and is_true/is_false — and segments can filter on the built-in email, firstName, lastName, and source fields too.

Conditional content

Use the Email Editor's conditional content feature to show or hide sections based on a contact's built-in fields — email, first name, and last name. Conditional content evaluates against the same personalization variables a send resolves, so custom property values do not yet drive it (see the note below).

Personalization variables in campaign sends currently resolve only the built-in email, first name, and last name fields (for example, {{firstName}}). The {{key}} syntax exists, but custom property values are not yet injected into campaign emails as personalization variables.

Properties are shared across your entire organization. Any team member with the appropriate role can view and use them in segments.

Managing properties

To edit or remove a property, go to Settings > Contact Properties and use the actions menu next to each property. Editing only changes the Label. Removing a property clears its value from all contacts.

Deleting a property is permanent. Any segments that reference it will stop matching. The delete dialog shows how many contacts have a value for the property before you confirm — review your segments before removing one.

Next steps