Properties
Custom fields per object type. Drives custom inputs in the UI and adds keys to API payloads.
Property types: TEXT, RICH_TEXT, NUMBER, DATE, DATETIME, BOOL, DROPDOWN, MULTI_SELECT, CURRENCY, URL, EMAIL, PHONE, CALCULATED, FILE. Mark sensitive fields isPhi: true — ContactFollowUp will encrypt them at rest and audit reads.
Create a property
Add a new custom field. ADMIN or MANAGER only.
Required scopes:
users.manageRequest body
| Name | Type | Description |
|---|---|---|
objectTyperequired | string | CONTACT | COMPANY | DEAL | TICKET | ACTIVITY. |
keyrequired | string | Programmatic key. 1–64 chars. |
labelrequired | string | Human label. |
typerequired | string | Property type — see list above. |
required | boolean | Whether the UI enforces a value. |
defaultValue | string | Default value. |
options | Option[] | For DROPDOWN / MULTI_SELECT — [{ value, label }]. |
formula | object | For CALCULATED only. |
groupName | string | UI group label. |
displayOrder | integer | Sort order. 0–999. |
isPhi | boolean | Encrypt at rest and audit reads. |
Request body
{ "objectType": "CONTACT", "key": "preferred_pronoun", "label": "Preferred pronoun", "type": "DROPDOWN" }Responses
201 CreatedCreated.example { "id": "pr_8q4w2k…", "objectType": "CONTACT", "key": "preferred_pronoun", "label": "Preferred pronoun", "type": "DROPDOWN", "required": false, "options": [ { "value": "she", "label": "she/her" }, { "value": "he", "label": "he/him" }, { "value": "they", "label": "they/them" } ], "groupName": "Demographics", "displayOrder": 10, "isPhi": false, "createdAt": "2026-05-18T14:00:00Z" }
Code samples
curl -X POST https://app.contactfollowup.com/api/properties \
-H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "objectType": "CONTACT", "key": "preferred_pronoun", "label": "Preferred pronoun", "type": "DROPDOWN" }'List property definitions
Definitions for one or all object types.
Required scopes:
contacts.readQuery parameters
| Name | Type | Description |
|---|---|---|
objectType | string | Restrict to one object type. |
Responses
200 OKDefinitions.example { "properties": [{ "id": "pr_8q4w2k…", "objectType": "CONTACT", "key": "preferred_pronoun", "label": "Preferred pronoun", "type": "DROPDOWN", "required": false, "options": [ { "value": "she", "label": "she/her" }, { "value": "he", "label": "he/him" }, { "value": "they", "label": "they/them" } ], "groupName": "Demographics", "displayOrder": 10, "isPhi": false, "createdAt": "2026-05-18T14:00:00Z" }] }
Code samples
curl -X GET https://app.contactfollowup.com/api/properties \
-H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
-H "Content-Type: application/json"