Skip to main content
Workspaces define their own fields on CRM records. They arrive in a nested object with stable keys:
Two things follow from that shape. Keys are readable and stable. custom_fields.segment is the field’s key, not an opaque id, so your code reads the way the workspace talks. The key is fixed at creation; renaming a field’s label in Sailer does not move it. Values are typed. A number field returns a JSON number, a checkbox returns a boolean, a date returns an ISO-8601 date string. They are not stringified.

Discovering the fields a workspace uses

Every custom field defined on the entity appears on every record, with null where a record has no value. So reading any one record shows you the complete set of keys in use.
A dedicated field-definition endpoint, exposing each field’s type, label, and allowed values, is designed but not part of this release. Until then, infer type from the values you receive.

Writing them

Send only the keys you want to change. Unlisted fields are left alone:
To clear a field, send null. Sending an unknown key, or a value of the wrong type, returns 422 with the offending key in error.detail.