CRMCRM Custom Fields

CRM Custom Fields

Extend Talkturo CRM contacts with custom field definitions — create text, number, boolean, date, select, and textarea fields with required, active, and sort-order controls.

curl -G "https://app.talkturo.com/api/crm/custom-fields" \
  --data-urlencode "teamId=team_7f3a9c2d" \
  --data-urlencode "entityType=contact" \
  -H "Cookie: sb-access-token=sb_session_example_f84k2m"
{
  "success": true,
  "fields": [
    {
      "id": "8bb0cf7b-6f0e-45e3-8f40-c0d6dc4c9a11",
      "teamId": "team_7f3a9c2d",
      "entityType": "contact",
      "key": "lead_source",
      "label": "Lead source",
      "fieldType": "select",
      "options": [
        "Website",
        "Referral",
        "Conference"
      ],
      "isRequired": false,
      "sortOrder": 10,
      "isActive": true
    },
    {
      "id": "1cf4bc3d-cad3-4d8b-8a4f-5c5c33bc3a86",
      "teamId": "team_7f3a9c2d",
      "entityType": "contact",
      "key": "renewal_date",
      "label": "Renewal date",
      "fieldType": "date",
      "isRequired": true,
      "sortOrder": 20,
      "isActive": true
    }
  ]
}
curl -X POST "https://app.talkturo.com/api/crm/custom-fields" \
  -H "Content-Type: application/json" \
  -H "Cookie: sb-access-token=sb_session_example_f84k2m" \
  -d '{
    "teamId": "team_7f3a9c2d",
    "entityType": "contact",
    "key": "customer_tier",
    "label": "Customer tier",
    "fieldType": "select",
    "options": [
      "Starter",
      "Growth",
      "Enterprise"
    ],
    "isRequired": false,
    "sortOrder": 30,
    "isActive": true
  }'
{
  "success": true,
  "field": {
    "id": "ec607f3e-77c8-45e7-a58d-62b8d09c4d5d",
    "teamId": "team_7f3a9c2d",
    "entityType": "contact",
    "key": "customer_tier",
    "label": "Customer tier",
    "fieldType": "select",
    "options": [
      "Starter",
      "Growth",
      "Enterprise"
    ],
    "isRequired": false,
    "sortOrder": 30,
    "isActive": true
  }
}
curl -X PUT "https://app.talkturo.com/api/crm/custom-fields/ec607f3e-77c8-45e7-a58d-62b8d09c4d5d" \
  -H "Content-Type: application/json" \
  -H "Cookie: sb-access-token=sb_session_example_f84k2m" \
  -d '{
    "label": "Account tier",
    "fieldType": "select",
    "options": [
      "Starter",
      "Growth",
      "Enterprise",
      "Strategic"
    ],
    "isRequired": true,
    "sortOrder": 25,
    "isActive": true
  }'
{
  "success": true,
  "field": {
    "id": "ec607f3e-77c8-45e7-a58d-62b8d09c4d5d",
    "teamId": "team_7f3a9c2d",
    "entityType": "contact",
    "key": "customer_tier",
    "label": "Account tier",
    "fieldType": "select",
    "options": [
      "Starter",
      "Growth",
      "Enterprise",
      "Strategic"
    ],
    "isRequired": true,
    "sortOrder": 25,
    "isActive": true
  }
}
curl -X DELETE "https://app.talkturo.com/api/crm/custom-fields/ec607f3e-77c8-45e7-a58d-62b8d09c4d5d" \
  -H "Cookie: sb-access-token=sb_session_example_f84k2m"
{
  "success": true
}

Manage CRM custom fields

Custom fields extend Talkturo CRM contact records beyond the default schema. Define each field with a stable key, display label, supported fieldType, and optional validation and display settings.

All CRM custom field endpoints require session cookie authentication. These endpoints do not accept API keys. Include the teamId query parameter or request field when required.

The API currently supports custom fields for contact records only.

Endpoints at a glance

MethodPathDescription
GET/api/crm/custom-fieldsList custom fields for a team
POST/api/crm/custom-fieldsCreate a custom field
PUT/api/crm/custom-fields/{id}Update a custom field
DELETE/api/crm/custom-fields/{id}Delete a custom field

Field types

Use one of these values for fieldType:

  • text: Short freeform text.
  • number: Numeric values.
  • boolean: True or false values.
  • date: Date values.
  • select: One value from the list in options.
  • textarea: Longer freeform text.

The entityType value is currently limited to contact. For select fields, include an options array containing the allowed values.

List custom fields

Returns custom field definitions for a team. Inactive fields are excluded unless you set includeInactive to true.

Query parameters

query
teamIdstring
Required

Team whose contact custom fields you want to list.

query
entityTypestring

Entity type to filter by. The API currently supports contact.

Allowed values:contact
query
includeInactivestring

Set to true to include inactive custom field definitions. Inactive fields are excluded by default.

Allowed values:truefalse

Response fields

successboolean
Required

true when the request succeeds.

fieldsarray
Required

Custom field definitions matching the query parameters.

Create a custom field

Creates a custom field definition for contact records in a team.

Body parameters

body
teamIdstring
Required

Team that owns the custom field definition.

body
entityTypestring
Required

CRM record type that the field applies to. The API currently supports contact.

Allowed values:contact
body
keystring
Required

Stable key used to identify the field in contact data.

body
labelstring
Required

Display label shown for the field in the CRM.

body
fieldTypestring
Required

Data type used to store and render the field value.

Allowed values:textnumberbooleandateselecttextarea
body
optionsarray

Allowed values for a select field. Omit this field for other field types.

body
isRequiredboolean

Whether a value is required for the field.

body
sortOrdernumber

Numeric position used to order the field relative to other custom fields.

body
isActiveboolean

Whether the field is active. Inactive fields are excluded from default list results.

Response fields

successboolean
Required

true when the field is created successfully.

fieldobject
Required

The created custom field definition, including its generated id.

Update a custom field

Updates an existing custom field definition. The request can change the label, field type, select options, required state, display order, and active state.

The update endpoint uses PUT. The field key, teamId, and entityType are not update parameters.

Path parameters

path
idstring
Required

Unique identifier of the custom field to update.

Body parameters

body
labelstring

Updated display label.

body
fieldTypestring

Updated data type for the field.

Allowed values:textnumberbooleandateselecttextarea
body
optionsarray

Updated allowed values for a select field.

body
isRequiredboolean

Whether a value is required for the field.

body
sortOrdernumber

Updated numeric position of the field.

body
isActiveboolean

Whether the field remains active.

Response fields

successboolean
Required

true when the field is updated successfully.

fieldobject
Required

The updated custom field definition.

Delete a custom field

Deletes a custom field definition by ID.

Path parameters

path
idstring
Required

Unique identifier of the custom field to delete.

Response fields

successboolean
Required

true when the field is deleted successfully.

Custom field object

The API returns a custom field object in list, create, and update responses.

idstring
Required

Unique identifier for the custom field.

teamIdstring
Required

Identifier of the team that owns the definition.

entityTypestring
Required

CRM record type for the field. The current value is contact.

keystring
Required

Stable identifier used to reference the field in contact data.

labelstring
Required

Display label shown in the CRM.

fieldTypestring
Required

Field type. One of text, number, boolean, date, select, or textarea.

optionsarray

Allowed values for select fields. This field is relevant when fieldType is select.

isRequiredboolean

Whether a value is required for the field.

sortOrdernumber

Numeric position used to order the field.

isActiveboolean

Whether the field is active and included in default list results.

Usage notes

Use a stable key when creating a field. The key identifies the field in contact data, while label controls the text displayed to CRM users.

Include options when fieldType is select. Do not include options for text, number, boolean, date, or textarea fields.

Set isActive to false when you need to stop using a field without removing its definition from the team. Pass includeInactive=true when listing inactive definitions.