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"