Skip to Content
📚 Documentation is in active development — pages marked TODO will fill out over the next few weeks.
ContactsCustom fields

Custom fields

Three scopes:

  • CONTACT — per-human attribute (e.g. class_grade, birthday)
  • ACCOUNT — per-account / company attribute (tier, mrr)
  • AGENCY — workspace-wide attribute (signature, support_url)

Field types

text · number · email · phone · url · boolean · date · select · multiselect

Type-validated at write time. Setting lead_score = "abc" on a number field throws — the inbox surfaces the validation error.

Create a field

Two paths:

  1. /dashboard/custom-fields — full editor (label, key, type, options for select, default value, required flag, description)
  2. Inline from the flow editor — type {{ in a text body or user-input question → popover → + Create custom field. Same dialog, scoped to CONTACT.

The key is auto-generated from the label ("First name"first_name). Once generated, the key is immutable — renames don’t propagate to existing data, but the label can change freely.

Reading in flows

Reference any custom field as {{contact.[key]}} in text bodies, user-input questions, HTTP request URLs / headers / body, AI prompts. See Variables for the full substitution syntax.

Writing from flows

The user-input block has a “Save answer to” dropdown — pick a custom field, the customer’s reply persists to ContactProfile.attributes[[key]] automatically. Future broadcasts + drips + flows see it as a regular attribute.

The HTTP request block extracts response JSON paths into custom fields the same way.

Last updated on