Custom Fields
Define custom fields and configure form layouts for each entity type.
Custom fields let you extend CRM Factory's data model without code. Fields are stored as JSONB and are available in the API, search, and exports.
Go to Settings → Custom Fields (admin access required).
Supported Entities
Custom fields can be added to:
- Accounts — Company-level attributes
- Contacts — Person-level attributes
- Leads — Pre-qualification attributes
- Opportunities — Opportunity-level attributes
- Cases — Support ticket attributes
Switch between entities using the tabs. Each tab shows a count of defined fields.
Creating a Field
Click Add Field and fill in:
| Setting | Description |
|---|---|
| Entity Type | Which entity this field belongs to |
| Field Key | Lowercase snake_case identifier (e.g., contract_type). Cannot be changed after creation. |
| Label | Display name shown in forms and tables |
| Data Type | Text, Long Text, Number, Currency, Date, Checkbox, Picklist, URL, or Email |
| Picklist Options | Comma-separated values (only for Picklist type) |
| Default Value | Pre-filled value for new records |
| Required | Whether the field must be filled when creating/editing a record |
| Description | Help text shown below the field |
Field Data Types
| Type | Storage | Example |
|---|---|---|
| Text | String | "Enterprise" |
| Long Text | String (multiline) | "Detailed notes about..." |
| Number | Numeric | 42 |
| Currency | Numeric | 1500.00 |
| Date | ISO date string | "2026-04-15" |
| Checkbox | Boolean | true / false |
| Picklist | String (constrained) | "Gold" from ["Bronze", "Silver", "Gold"] |
| URL | String (validated) | "https://example.com" |
| String (validated) | "user@example.com" |
Editing and Deleting
- Click the edit icon to modify a field's label, options, default value, required status, or description. The field key and data type cannot be changed.
- Click the delete icon to remove a field definition. Existing data in records is not affected (the JSONB key remains but is no longer displayed).
Form Layouts
Custom fields appear in record forms based on field layouts. Layouts define which fields appear, their grouping into sections, and column arrangement (1-4 columns per section).
Layouts can be configured at two scopes:
- Org-level — Default layout for all users
- User-level — Personal override per user
Use the API (PUT /api/v1/field-layouts) to save layouts, or configure them through the record detail form's field picker.
API Access
Custom field values are stored in the custom_fields JSON object on each record:
{
"id": "...",
"name": "Acme Corp",
"custom_fields": {
"contract_type": "Enterprise",
"renewal_date": "2026-12-01",
"tier": "Gold"
}
}When creating or updating records via the API, pass custom field values in the custom_fields object.