Skip to main content
Every contact has two different places extra information can live, and they work nothing alike.

Standard fields

A fixed set of columns exist on every contact whether you touch them or not: name, email, phone_number, identifier, country_code, blocked, plus the automatic created_at and last_activity_at timestamps. These names are reserved — you cannot define a custom attribute that reuses one of them; Tied rejects it at save time.

Custom attributes

Beyond the standard set, you define your own fields: a key, a display name, and a type. The type is a real, enforced choice — one of eight:
You can also attach a validation pattern and a hint — a regular expression plus the text shown when a value doesn’t match it. Useful for anything with a real format: an account number, a specific ID pattern from another system.
Custom attributes are scoped to either contacts or conversations — this page is about the contact-scoped ones, but the same mechanism (key, display name, type, validation) defines conversation-level custom fields too.

Two buckets, not one

Contacts also carry a second, separate JSON field that isn’t user-defined at all: things Tied itself tracks in the background. city and referer live here, not as columns — Tied fills them in from a contact’s location and the page they arrived from, alongside other reserved keys like which avatar it assigned. That bucket isn’t what this page is about, and you don’t manage it directly — custom attributes are the ones you define, name, and see in a form.

Where they surface

A custom attribute definition isn’t just storage — defining one makes it available in more than one place:
  • Filters and segments — see Segments and saved filters.
  • The web widget’s pre-chat form — a contact-scoped custom field can double as a question you ask before a chat even starts. Change or delete the definition, and the pre-chat form updates to match automatically.

Next

Contacts overview

How a contact is identified in the first place.

Segments and saved filters

Filtering on the attributes you just defined.

Importing contacts

Getting values into a custom attribute in bulk.