Custom Fields
The Custom Fields API allows you to define custom field schemas for people and companies. Once defined, custom field values can be set when creating or updating people and companies via the customFields object.
Custom field definitions are scoped per entity type:
/api/people/custom-fields— Custom fields for people/api/companies/custom-fields— Custom fields for companies
List Custom Field Definitions
GET /api/people/custom-fields
GET /api/companies/custom-fields
Retrieves all custom field definitions for the entity type.
Response
Success Response (200)
{
"success": true,
"data": {
"customFields": [
{
"id": "cf-def-uuid",
"entityType": "PEOPLE",
"name": "Department",
"key": "cf_department",
"type": "text",
"description": "The person's department",
"isFilterable": true,
"isSortable": true,
"isRequired": false,
"settings": null,
"displayOrder": 0,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
},
{
"id": "cf-def-uuid-2",
"entityType": "PEOPLE",
"name": "Lead Source",
"key": "cf_lead_source",
"type": "select",
"description": "How the lead was acquired",
"isFilterable": true,
"isSortable": false,
"isRequired": false,
"settings": {
"options": [
{ "value": "conference", "label": "Conference", "color": "#3B82F6" },
{ "value": "referral", "label": "Referral", "color": "#10B981" },
{ "value": "website", "label": "Website", "color": "#8B5CF6" }
]
},
"displayOrder": 1,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
}
]
}
}
Create Custom Field Definition
POST /api/people/custom-fields
POST /api/companies/custom-fields
Creates a new custom field definition. A unique key is auto-generated from the name (e.g., "Lead Source" becomes cf_lead_source).
Request Body
{
"name": "Lead Source",
"type": "select",
"description": "How the lead was acquired",
"isFilterable": true,
"isSortable": false,
"isRequired": false,
"settings": {
"options": [
{ "value": "conference", "label": "Conference", "color": "#3B82F6" },
{ "value": "referral", "label": "Referral", "color": "#10B981" },
{ "value": "website", "label": "Website" }
]
}
}
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Field name (1-100 characters) |
type |
string | Yes | Field type: text, numeric, boolean, select, multi_select |
description |
string | No | Field description (max 500 characters) |
isFilterable |
boolean | No | Whether the field can be used as a filter (default: true) |
isSortable |
boolean | No | Whether the field can be used for sorting (default: true) |
isRequired |
boolean | No | Whether the field is required (default: false) |
settings |
object | No | Type-specific settings |
Settings for SELECT / MULTI_SELECT
When type is select or multi_select, you must provide settings.options:
| Option Field | Type | Required | Description |
|---|---|---|---|
value |
string | Yes | Option value (stored) |
label |
string | Yes | Option label (displayed) |
color |
string | No | Hex color code for the UI |
Response
Success Response (201)
{
"success": true,
"data": {
"id": "cf-def-uuid",
"entityType": "PEOPLE",
"name": "Lead Source",
"key": "cf_lead_source",
"type": "select",
"description": "How the lead was acquired",
"isFilterable": true,
"isSortable": false,
"isRequired": false,
"settings": {
"options": [
{ "value": "conference", "label": "Conference", "color": "#3B82F6" },
{ "value": "referral", "label": "Referral", "color": "#10B981" },
{ "value": "website", "label": "Website" }
]
},
"displayOrder": 2,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z"
},
"message": "Custom field created successfully"
}
Update Custom Field Definition
PATCH /api/people/custom-fields/{id}
PATCH /api/companies/custom-fields/{id}
Updates a custom field definition. You can change the name, description, settings, and display properties. The type and key cannot be changed after creation.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Custom field def UUID |
Request Body
{
"name": "Lead Source (Updated)",
"description": "Updated description",
"settings": {
"options": [
{ "value": "conference", "label": "Conference", "color": "#3B82F6" },
{ "value": "referral", "label": "Referral", "color": "#10B981" },
{ "value": "website", "label": "Website" },
{ "value": "cold_outreach", "label": "Cold Outreach", "color": "#EF4444" }
]
}
}
Response
Success Response (200)
{
"success": true,
"data": {
"id": "cf-def-uuid",
"name": "Lead Source (Updated)",
"key": "cf_lead_source",
"type": "select",
"description": "Updated description",
"settings": {
"options": [
{ "value": "conference", "label": "Conference", "color": "#3B82F6" },
{ "value": "referral", "label": "Referral", "color": "#10B981" },
{ "value": "website", "label": "Website" },
{ "value": "cold_outreach", "label": "Cold Outreach", "color": "#EF4444" }
]
}
},
"message": "Custom field updated successfully"
}
Delete Custom Field Definition
DELETE /api/people/custom-fields/{id}
DELETE /api/companies/custom-fields/{id}
Soft-deletes a custom field definition. Existing values on records are preserved but the field will no longer appear in the UI or be settable on new records.
Response
Success Response (200)
{
"success": true,
"data": {
"deleted": true
},
"message": "Custom field deleted successfully"
}
Using Custom Fields on Records
Once you've defined custom fields, set values when creating or updating people/companies:
# Create a person with custom field values
curl -X POST "https://beta-api.introzy.com/api/people" \
-H "Authorization: Bearer introzy_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"email": "john@acme.com",
"firstName": "John",
"customFields": {
"cf_department": "Engineering",
"cf_lead_source": "conference"
}
}'
# Update custom fields on a company (merges with existing)
curl -X PATCH "https://beta-api.introzy.com/api/companies/company-uuid" \
-H "Authorization: Bearer introzy_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"customFields": {
"cf_tier": "Premium"
}
}'
Field Types
| Type | Description | Example Value |
|---|---|---|
text |
Free-form text | "Engineering" |
numeric |
Number | 42 |
boolean |
True/false | true |
select |
Single choice from options | "conference" |
multi_select |
Multiple choices from options | ["sales", "marketing"] |
Example Usage
# List people custom field definitions
curl -X GET "https://beta-api.introzy.com/api/people/custom-fields" \
-H "Authorization: Bearer introzy_your_api_key"
# Create a text custom field for companies
curl -X POST "https://beta-api.introzy.com/api/companies/custom-fields" \
-H "Authorization: Bearer introzy_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Account Tier",
"type": "select",
"description": "Customer tier level",
"settings": {
"options": [
{ "value": "free", "label": "Free" },
{ "value": "pro", "label": "Pro", "color": "#3B82F6" },
{ "value": "enterprise", "label": "Enterprise", "color": "#8B5CF6" }
]
}
}'
# Delete a custom field
curl -X DELETE "https://beta-api.introzy.com/api/people/custom-fields/cf-def-uuid" \
-H "Authorization: Bearer introzy_your_api_key"