What a record is
A record is one entry of structured data. Every record carries:Records are found by the Space, the contact and the record set they belong to. The values inside a record are not indexed, so there is no account-wide “find every record where the renewal month is March”. The search box above the record table filters the rows already loaded, not the whole set.
Record sets
A Record Set is the definition every record of one kind conforms to: what fields exist, which are required, how they are laid out on a form, and how they appear as a table column.One thing, two names. The product calls this a Record Set — that is the wording on the sidebar, the picker and the empty state, and it is what this documentation uses. The API and the assistant tools call the same object a record config (
record_config_*, and record_configs on a Space). They are the same object.An id
Letters, numbers, underscores and hyphens. Chosen once when the set is created and permanent — only the name, label and description can be changed afterwards.
A schema
The fields, their types, and which of them are required. Every record is checked against it.
Form layouts
One or more named forms. A set with several forms lets each Space pin the one it uses.
A table layout
Which columns show in the record table, and how each value is formatted.
The schema is enforced
A record is validated against its record set’s schema when it is created and every time it is updated. A record that fails validation is rejected outright — nothing is coerced, and nothing is partially saved. A field the form hid is not required. A record set’s form can hide a question with a rule, and a question nobody could see must not block the save. The form therefore tells the server which fields its rules hid, as ahidden_fields array of dotted refs on the create, update and upsert bodies, and required is relaxed for exactly those refs.
Nothing else is relaxed: types, patterns, choices and additional-property rules all still apply, and a ref naming nothing in the schema relaxes nothing. A caller writing to a record set directly gets the ordinary behaviour unless it sends the array itself.
Changing a schema
Adding an optional field
Adding an optional field
Always safe. Existing records simply have nothing in it.
Making a field required
Making a field required
Nothing breaks today. It breaks the next time anyone edits a record created before the change, because that record has no value for it. Count the existing records first and decide whether that is acceptable.
Removing a field
Removing a field
The data is not deleted. It stops being shown and stops being validated, but it is still stored and still comes back on a read.
Narrowing a type, or restricting a field to a list of choices
Narrowing a type, or restricting a field to a list of choices
Breaking in the same way as making a field required — every stored value outside the new rule blocks the next edit of the record holding it.
Deleting a record set
Deleting a record set
Deleting a record set purges every record under it, and there is no undo. If a set is no longer wanted, rename it or detach it from the Spaces that use it instead.
Giving a Space its record sets
A record set exists at the account level. A Space uses the ones attached to it, and only those.1
Open the Space's Records tab
A Space has four tabs — Files, Tasks, Records and Chats. Records lists the attached record sets down the left and their records on the right.
2
Open the Record Sets menu
Select Record Sets opens a picker of everything that exists in the account; tick the ones this Space should use. Manage Record Sets opens the account-wide record set area, where sets are created and their forms edited.
3
Or create one from the empty state
A Space with no record sets attached shows Select Record Set and Create Record Set side by side. Creating one there attaches it to the Space in the same step.
Attaching and detaching record sets, and the per-set actions on the table, are limited to Space admins.
The base record
A Space can be told that its tasks are about someone. That is the base record: the record set a Space anchors its contacts on, so everything about one person sits in one place. It is configured at Edit Space → Records → Base record.How a contact is matched
The identifying fields are tried in order. The first one holding a usable value identifies the contact — which is what stops the same person being added twice. Before a value is used it is normalised, so two spellings of one person land on one contact:- A field named
email, or ending in_email, is trimmed and lower-cased, and must look like an address. - A field named
phone, or ending in_phone, is reduced to its digits, and must have at least six of them. - Anything else is lower-cased and its spacing collapsed.
The contact key is derived, never chosen
In the task form, the control that carries this is labelled Folder, and it lists the Space’s contacts by name and email, with New contact at the bottom of the list. Choosing someone there is choosing a contact.“Folder” means two different things in a Space, and it is worth keeping them apart. On a task, it is this derived contact key. In Files, folders are ordinary storage folders you name and nest yourself. Only the first is derived.
Which record set holds contacts
The canonical base record set iscontact. There is an older id, Client, that is still read so contacts stored under it before the rename are still found — nothing writes to it any more, and it should not be chosen for a new Space.
You do not have to manage that by hand. When a Space is pointed at a different record set, the one it is leaving is folded into its legacy list automatically, so contacts already stored under the old set keep being found.
A worked example: the Leads Space
The built-in Leads Space is a base record set up end to end:- Base record — the
contactrecord set - Identifying fields —
email, thenphone - What this space calls one — Contact
- Grouped under — the
organisationrecord set, called Organisation - Create a sign-in — off
Parent records
Grouped under names a record that contacts belong to — an organisation, a household, a portfolio. Leave it as None and contacts stand alone.- A record stores a link to its parent record’s key, and that link is indexed. It is what makes “everything under this organisation” answerable, in a system where the fields inside a record are not searchable.
- Sending an empty parent detaches a record from its parent. Omitting the parent leaves whatever is there alone — silence never detaches.
- When someone is added through the contact form, the only record sets that can be written are the Space’s base record and the parent it declares. It is not a back door into an arbitrary record set.
How records relate to tasks
Tasks are filed against a contact
In a Space with a base record, every task belongs to the contact its identity resolves to — which is what puts one person’s whole history on one screen.
Task actions can point at a record
A checklist item on a task can reference a specific record of a specific record set. A form action carries an ordered list of forms the person fills in, one step at a time.
Task templates seed record work
A template action of kind form names a record set. It has to be one attached to the Space you apply the template in.
Completing a record can start a flow
Marking a record complete fires a flow trigger — but only on the transition into complete. Marking an already-complete record complete again does nothing, so automation is not re-run.
Task actions move the task. Completing, adding or removing a task action recomputes the parent task’s status from its checklist. The status it lands on is resolved through the Space’s own To do / In progress / Done roles, and a status the Space does not have is never written. Chat actions are open-ended and are excluded from the count. See Task actions.