WorkestraDocs
ModulesCrm

Custom Fields

Define custom data fields for contacts, deals, and companies to capture data unique to your business.

Custom Fields

Custom fields let each workspace define its own data model. Add fields like "Contract Type", "Annual Budget", or "Industry Segment" to contacts, deals, and companies — then use those fields in forms, detail views, and webhook integrations.

Custom Fields require Admin or Owner permissions. Navigate to CRM > Settings > Custom Fields to get started.

Why Custom Fields?

Every business tracks different data. Workestra ships with a standard set of fields (name, email, phone, etc.), but your workflow likely needs more:

  • A real estate agency needs Property Type and Budget Range on deals
  • A SaaS company needs Contract Length and MRR on contacts
  • A recruiting firm needs Specialization and Rate Card on companies

Custom fields solve this without modifying the database — they're stored in a flexible JSONB column and rendered dynamically based on your definitions.

Supported Field Types

TypeDescriptionExample
TextShort text input"Contract ID"
NumberNumeric value with optional min/max"Employee Count"
DateDate picker"Renewal Date"
Single SelectDropdown with predefined options"Industry"
Multi SelectMultiple selections from a list"Services Interested"
CheckboxBoolean toggle"NDA Signed"
URLWeb address (clickable in detail view)"Company Website"
EmailEmail address"Billing Email"
PhonePhone number"Direct Line"
CurrencyMonetary value with $ prefix"Annual Budget"
Long TextMulti-line text area"Special Requirements"
Rating1-5 star rating"Lead Quality"

Managing Custom Fields

Creating a Field

  1. Go to CRM > Settings > Custom Fields
  2. Select the entity tab: Contacts, Deals, or Companies
  3. Click Add Field
  4. Configure:
SettingDescription
LabelDisplay name shown to users
Field KeyAuto-generated snake_case identifier (immutable after creation)
Field TypeOne of the 12 types above
RequiredWhether the field must be filled
DescriptionHelp text shown below the input
Section GroupGroup related fields under a heading (e.g. "Billing Info")
  1. For Select and Multi Select types, add options:

    • Type each option and press Enter
    • Reorder or remove options as needed
  2. For Number and Currency types, optionally set:

    • Min / Max constraints
  3. Configure visibility:

ToggleDefaultPurpose
Show in formsOnDisplay in create/edit dialogs
Show in detailOnDisplay on entity detail pages
Show in listOffDisplay as a column in list views
  1. Click Create Field

Editing a Field

  1. Click the pencil icon on any field
  2. Modify label, description, options, validation, or visibility
  3. Click Save Changes

The field key and field type cannot be changed after creation. This ensures existing data remains valid. To change a field's type, create a new field and migrate data manually.

Reordering Fields

Fields appear in the order they're listed. To change the order:

  1. Use the up/down arrows on each field card
  2. Order saves automatically

Fields within the same Section Group are displayed together.

Deleting a Field

  1. Click the trash icon on the field
  2. Confirm deletion

Deleting a field definition removes it from forms and views, but does not delete existing data. Values already stored on contacts, deals, or companies are preserved in the database. If you recreate a field with the same key, the old data will reappear.

Using Custom Fields

In Edit Dialogs

When editing a contact, deal, or company, custom fields appear below the standard fields. They're grouped by section and show validation errors inline.

In Detail Views

Custom field values display in the entity's detail sidebar, grouped under their section headings. Each type renders appropriately:

  • URLs are clickable links
  • Emails are mailto links
  • Ratings show as star icons
  • Multi Select values show as badges
  • Currency values show with formatting
  • Dates are formatted in your locale

In Webhook Integrations

Custom fields integrate with the inbound webhook pipeline. When configuring a webhook source's field mapping, use the cf. prefix to map incoming data to custom fields.

Example payload map:

{
  "email": "data.email",
  "first_name": "data.contact.first_name",
  "cf.contract_type": "data.contract",
  "cf.annual_budget": "data.budget",
  "cf.industry": "data.organization.industry"
}

Any field in the map prefixed with cf. will be stored in the entity's custom fields. The part after cf. must match the field key defined in Custom Fields settings.

In Routing Rules

You can route inbound items based on custom field values. When creating routing rule conditions, reference custom fields with the cf. prefix:

FieldOperatorValueEffect
cf.annual_budgetgreater than50000Route high-value leads to senior reps
cf.industryequalsHealthcareAssign to healthcare team
cf.contract_typeinEnterprise, PremiumSkip low-tier leads

Validation

Custom fields enforce validation at multiple levels:

  1. UI validation — Required fields, min/max, format checks shown inline
  2. Webhook validation — Incoming data is coerced to the correct type (e.g., string "42" becomes number 42)
  3. Select validation — Values must match defined options

Type Coercion for Webhooks

When data arrives via webhooks, values are automatically coerced:

Field TypeRaw ValueStored As
Number"42"42
Checkbox"true"true
Multi Select"a,b,c"["a", "b", "c"]

Section Groups

Use section groups to organize related fields visually. Fields with the same Section Group name are displayed together under a shared heading.

Example:

FieldSection Group
Contract TypeContract Details
Contract LengthContract Details
Renewal DateContract Details
Annual BudgetFinancials
Payment TermsFinancials
NDA SignedCompliance

This creates three collapsible sections in the detail view and edit forms.

Best Practices

  • Use descriptive labels — "Annual Contract Value" is clearer than "ACV"
  • Group related fields — Use section groups to keep forms organized
  • Keep it minimal — Only create fields you actually need. Too many fields slow down data entry
  • Use Select for constrained values — Prefer dropdowns over free text when options are known
  • Set required sparingly — Only mark truly essential fields as required
  • Plan field keys carefully — They can't be changed after creation, and webhook mappings reference them

Next Steps

  • CRM Settings — Pipeline stages and price books
  • Contacts — Where custom fields appear
  • Deals — Deal-specific custom fields
  • Companies — Company-specific custom fields