Add Attribute to CRM Object
Adds a new custom attribute to an existing CRM object. Works on both standard objects (people, companies) and custom objects.
The attribute key (slug) is auto-generated from the label. To get the generated key, inspect the key field in the response.
Required scope: crm:write
Type-specific required fields:
select,multiselect,status→optionsarray requiredrelation→relationType,relatedObjectSlug,relatedObjectLabelrequiredtext,phone_number,number→isUniquerequiredcurrency→currency,currencyDisplay,currencyDecimal,currencyGroupingrequired
Documentation Index
Fetch the complete documentation index at: https://developer.zeeg.me/llms.txt
Use this file to discover all available pages before exploring further.
Key auto-generation
You do not set thekey — the server derives it from label by converting to snake_case (e.g. "Product Name" → "product_name"). The generated key is returned in the 201 response. Use this key to reference the attribute in subsequent PATCH calls and when writing record values.
If another attribute with the same derived key already exists, the server appends a suffix (e.g. product_name_2).
Attribute type reference
Every attribute requireslabel, type, isRequired, and isArchived.
The sections below list the extra fields each type needs and what values it stores.
text
Stores a free-form string.
Extra fields
| Field | Required | Description |
|---|---|---|
isUnique | yes | Reject duplicate values across records. |
validation | no | Array of format validators: "email", "url", or both. |
number
Stores a numeric value (integer or decimal).
Extra fields
| Field | Required | Description |
|---|---|---|
isUnique | yes | Reject duplicate values across records. |
phone_number
Stores a phone number string. Displayed with a phone-number input in the UI.
Extra fields
| Field | Required | Description |
|---|---|---|
isUnique | yes | Reject duplicate values across records. |
date
Stores a calendar date (no time component).
No extra fields.
datetime
Stores a date and time with timezone.
No extra fields.
checkbox
Stores a boolean (true / false).
No extra fields.
select
Stores one value chosen from a fixed list.
Extra fields
| Field | Required | Description |
|---|---|---|
options | yes | Array of 1–20 option objects. Each option: value (string), color (named color — see below). Do not include id on create. |
gray primary warning success cyan sky violet fuchsia rose blue green red pink black yellow orange
Example request
multiselect
Stores multiple values from a fixed list. Same fields as select.
Extra fields
Same as select — options array required.
status
Like select but rendered as a status badge. Change history is logged for auditing. Same fields as select.
Extra fields
Same as select — options array required.
rating
Stores an integer rating (1–5 stars in the UI).
No extra fields.
relation
Links a record to one or more records in another CRM object.
Extra fields
| Field | Required | Description |
|---|---|---|
relationType | yes | Cardinality: one_to_one, many_to_one, one_to_many, or many_to_many. |
relatedObjectSlug | yes | Slug of the target object (people, companies, or a custom object slug). Immutable after creation. |
relatedObjectLabel | yes | Display label shown for the relation in the UI (e.g. "Person", "Company"). |
one_to_one / many_to_one → the field accepts a single linked record.one_to_many / many_to_many → the field accepts multiple linked records.
Example request
currency
Stores a numeric monetary value with display formatting.
Extra fields
| Field | Required | Description |
|---|---|---|
currency | yes | ISO 4217 currency code (e.g. EUR, USD, GBP). Immutable after creation. |
currencyDisplay | yes | How the currency is shown: code (EUR 12.00), name (Euro 12.00), or symbol (€12.00). |
currencyDecimal | yes | true to show decimal places. |
currencyGrouping | yes | true to use a thousands separator (1,000.00 vs 1000.00). |
currencyDisplay, currencyDecimal, and currencyGrouping can be changed later via PATCH.
The currency code is immutable after creation.
Supported currency codes
USD, EUR, GBP, JPY, CHF, CAD, AUD, NZD, SEK, DKK, NOK, CZK, PLN, HUF, RON, BRL, MXN,
CNY, SGD, THB, PHP, IDR, INR, ZAR, MYR, VND, KRW, TND, OMR, QAR, SAR, AED, BHD, KWD, JOD, LYD, IRR, TRY.
Example request
user
Links the record to one or more workspace members. Values are user IDs.
No extra fields. Always supports multiple selection.Authorizations
Path Parameters
The object slug to add the attribute to.
"people"
Body
Attribute data type. Cannot be changed after creation.
text, number, phone_number, date, datetime, checkbox, select, multiselect, rating, relation, status, user, currency "select"
Human-readable label. The attribute key is auto-generated from this value.
255"Customer Status"
Whether a value is required when creating a record.
false
Whether values must be unique across records. Applies to text, phone, and number types.
false
Validation constraints for text type attributes.
email, url Required for select, multiselect, and status types. Max 20 options.
Required for relation type.
one_to_one, many_to_one, one_to_many, many_to_many "many_to_one"
Required for relation type. Slug of the object to link to.
"companies"
Required for relation type. Label shown on the related object's record.
"Contacts"
Required for currency type. ISO 4217 currency code.
"EUR"
Required for currency type.
code, name, symbol "symbol"
Required for currency type. Show decimal places.
true
Required for currency type. Use thousands separator.
true