CRMchat APIBeta

Custom Properties

Define custom fields on contacts to capture data specific to your workflow

View in Markdown

Custom properties let you extend contacts with fields tailored to your business. Each property defines a field type, display name, and validation rules. Property values are then stored on individual contacts using the property's key.

How It Works

Properties are scoped to an object type (currently contacts).

A property definition looks like this:

{
  "key": "custom.lead_status",
  "type": "single-select",
  "name": "Lead Status",
  "options": [
    { "label": "New", "value": "new", "color": "blue" },
    { "label": "Contacted", "value": "contacted", "color": "yellow" },
    { "label": "Qualified", "value": "qualified", "color": "green" }
  ]
}

Organization and Workspace Properties

Choose where a property belongs based on where it should be available.

Organization propertyWorkspace property
Available inEvery workspace in the organizationOne workspace
Manage throughOrganization Properties endpointsWorkspace Properties endpoints
Best forShared fields such as lead source or customer segmentWorkspace-specific processes and data

Workspace list and get operations include organization properties by default, with organization properties returned before workspace properties. Pass includeOrgProperties=false to return only workspace properties.

Every property response includes a read-only scope field indicating whether the property belongs to the organization or workspace. Use the move endpoint matching its current scope to reorder any property or move a custom. property between owners. Built-in properties cannot change owners. Moving a property does not remove existing values from contacts.

Keys

Every custom property key must start with custom. followed by a descriptive identifier. Keys are dot-separated paths and must be unique within the object type.

KeyDescription
custom.lead_statusA lead qualification status
custom.company_nameThe contact's company
custom.deal_valueThe monetary value of a deal
custom.referral_sourceHow the contact found you

Keys are immutable after creation — you cannot rename a property key, only delete and recreate.

Properties created from the UI have an auto-generated key (e.g., custom.wRhEVPXBZiIEx2RImfmfG). When creating properties via the API, you choose your own key — use something descriptive like custom.lead_status.

Property Types

TypeDescriptionExtra fields
textShort text input
textareaMultiline text
single-selectOne option from a listoptions, defaultValue
multi-selectMultiple options from a listoptions
user-selectWorkspace member picker
urlURL input
emailEmail address
telPhone number
amountMonetary value

Select Options

single-select and multi-select properties require an options array. Each option has:

FieldTypeDescription
labelstringDisplay label
valuestringStored value (immutable)
colorstring?One of: gray, brown, orange, yellow, green, blue, purple, pink, red

Common Fields

Every property supports these fields:

FieldTypeDescription
keystringUnique identifier (must start with custom.)
typestringProperty type (see above)
namestringDisplay name shown in the UI
descriptionstring?Help text for the field
placeholderstring?Input placeholder text
requiredbooleanWhether the field is required (default: false)

Managing Properties

Use the endpoint matching the property's scope to update, delete, or move it. Workspace list and get operations include organization properties by default; pass includeOrgProperties=false for workspace-only results.

Deleting a property removes only the definition — existing values on contacts are not cleaned up.

On this page