Core Concepts
How lists, fields, relationships, deal totals, permissions, widgets, and webhooks work together.
Customermates keeps CRM data in configurable lists. Each workspace defines its own lists, such as Contacts, Deals, Projects or Applications, and can add more at any time without a release. Every record keeps a stable ID, so renaming a list or field breaks no references. A saved view shows records of a list without copying them.
Which lists does a workspace have, and where do they come from?
No list is built in. On Customermates Cloud, the AI workspace setup in onboarding designs the whole workspace from your answers and, if you give one, your website: every list with its fields, relationships and calculations, the list views, sample records or an imported spreadsheet, the dashboard and the Knowledge Base. A self-hosted workspace starts with no lists: people who manage the data model create them in Configure. Workspaces created before the AI setup keep the lists they started with.
| List the setup creates | When | What it holds |
|---|---|---|
| People, for example Contacts | Always | One record per person, with a Channels field and a profile picture, so messages match the right person |
| Tasks | Always | Work items, including an approval task for each person who joins the workspace |
| Organizations | Usually | The companies or accounts your people belong to |
| Deals | Usually | Sales opportunities in stages that each carry a win chance, with one won and one lost stage |
| Offerings, for example Services or Products | When you sell products or services | Your catalog with unit prices; deals then get line items |
The names follow your business, so your deals list may be called Opportunities or Orders. Lists from the setup are ordinary lists: you can rename them and extend or change their fields, relationships and layout in Configure like any list you create. To match messages to records, a list needs a Channels field: the email addresses, WhatsApp phone numbers and social accounts that match messages to a record. The people list from the setup has one; you can add one to any other list. It is a normal field you can move, pin and edit like any other; one identifier can match several records. Ordinary email and phone fields do not take part in matching.
How is a deal's total value calculated?
When you sell products or services, the AI workspace setup gives your deals list Line items, a sub-list: each line belongs to one deal, is edited inside it, shares its access and is removed with it. Each line has an offering, a quantity, a pricing mode and an effective unit price. Line amount = quantity × effective unit price. The deal value is the sum of the line amounts; without line items it is a plain money value. The same offering can appear on several lines. Live pricing follows later changes to the offering's price; saved pricing keeps the captured price. Every money field carries its own currency, and amounts in different currencies are never silently added.
The total is a configured calculation, so a schema manager can change it or turn it into a manual value after previewing the affected records and widgets. A missing input, a value you may not see, zero and a calculation error are different states. See weighted pipeline.
How do relationships link records, for example a contact to several organizations?
A relationship connects two lists. Each side has its own label, and each side allows one or several records, so one contact can belong to several organizations and a project can link contacts and deals. Both records show the link. In the record form a relationship is a field: pick the records, then click Save. In Configure you add one with Add, then Relationship, on a list's configure page, or by dragging from the dot on one list to another in the graph. The Relationships tab lists each one as a row with its label, how many records link (for example One to many) and the other list; a list without any shows Add relationship. The drawer sets both labels, how many records link and, under When deleted, what happens to linked records.
A relationship can also show the messages of directly linked records on the other list's Activities, set per direction. The AI workspace setup turns this on for the relationships of your people list, so a deal or organization shows the messages of its linked people. In the relationship drawer, one switch per direction turns this on or off, for example Show their messages on Organizations.
The app checks list types, cardinality, duplicates and what happens on deletion. A lookup or rollup over several linked records needs an aggregation such as sum or count.
What are fields, and which field types are there?
Every list starts with some fields, and you can add your own; tables show them as columns. Field types are Text, Formatted text, Number, Money, Yes or no, Date, Date and time, Date range, Date and time range, Single choice, Multiple choice, Email, Phone, Web address and Member. Text, email, phone and web address fields can Allow several values; for email, phone and web address fields, On click sets whether clicking a value opens it (mail app, call or new tab, the default) or copies it, see CRM records. Choice options keep a stable ID when you rename them. Switching a Single choice field to Multiple choice keeps every value; switching back works only while each record holds at most one option.
A field is entered by hand or calculated: from other fields of the same record, taken from a linked record, or counted or totalled from linked records. A calculated value is always up to date unless you choose to save it at a moment, such as when the record is created. Formulas use a checked expression language and never run arbitrary code; cycles, mismatched types and overly expensive definitions are rejected. Fields can be used in filters, sorting, views, widgets, routines and Mate, as far as access allows.
Can I change a field's type when records already have values?
Yes. Pick another Value type in the field's drawer; the preview checks every existing value and converts the ones that fit without loss. Text becomes a Number when it is a plain number such as 1250.50, a Date when written as 2026-10-12, a Date and time in ISO form, and an Email, Phone or Web address when it is a valid one. Text that matches an option label becomes that option of a Single choice or Multiple choice field. Numbers, dates, Yes or no values and choices become Text. Switching Single choice to Multiple choice keeps every value; switching back works only while each record holds at most one option.
When some values do not fit, the change is blocked, and the preview says how many records hold such values and shows up to three of them, for example: 2 records have values in Budget that don't fit the change, for example "n/a", "tbd". Correct or clear them first. Over MCP and REST, the preview issue existing_values_incompatible carries the same count and examples.
How do I add, change or delete fields, including the deal stage field?
Open Configure, which shows all lists as a graph. On each list, the header opens the list's configure page, the body shows the first fields (an entry such as 3 more fields expands the rest in place, Show fewer collapses them) and the footer's record count opens the list. Sub-lists sit in one frame with their parent and move with it. Positions and expanded lists are saved for you; Reset layout restores the default arrangement.
The + button on a list in the graph and the Add menu on its configure page offer the same entries: Field, Calculated field, Relationship, Channels (only while the list has none) and Sub-list, each in its own drawer. Sub-list opens a drawer such as New sub-list of Contacts and needs Users & Roles Edit besides the data model permission; a sub-list cannot have sub-lists of its own, and REST and MCP refuse such a change with recordSublistNested. A sub-list such as Line items shows Sub-list of Deals on its page and in the graph, with the explanation that each entry belongs to one Deal record, is edited inside it, shares its access and is removed with it. A list's configure page switches between General, Fields and Relationships, and relationships appear as rows like fields. A deal stage field lives on the configure page of your deals list. Before a change is applied it previews the affected records, views, widgets, routines and formulas, and changes that would break something are blocked until you resolve them.
To delete a custom field or any other field, a list or a relationship, use Delete in its drawer or in the page's menu. The confirmation lists everything it adjusts automatically (view filters, columns and sorts, widget filters and groupings, a widget that measured the field counts records instead, webhooks drop it from their trigger and are paused when it was their only trigger, and Channels, profile picture or calendar settings stop using it) and blocks only on things that would compute wrong: calculations, routines and the fields that control workspace access. Every field can be deleted, including the one that names the records: the next text field in the list's field order then names them, and the confirmation says which one; with no text field left, records show as untitled. Restoring the field gives it the name back unless the name field was changed since, and puts it back into the Channels, profile picture or calendar settings; widgets that now count records and webhook triggers stay as they are. Deleted items move to Trash, where you can Restore them for 30 days or Delete permanently after typing the name; after 30 days they are deleted permanently. A permanent deletion also removes the stored values, and for a list its records and links.
Names are unique: list names, field names within a list, relationship labels per side and option labels per field, ignoring case and accents. Managing the data model is its own permission, separate from editing records; it grants neither record access nor role management.
How do I build a calculated field?
Choose Calculated field in the Add menu of a list on its configure page in Configure, or open an existing calculated field there. Value source sets where the value comes from: Calculated from this record, Taken from a linked record or Counted or totalled from linked records. The value type follows from the calculation and is shown on the result, so a total of money fields is money and a count is a number.
The Calculation section draws the calculation from top to bottom with the same boxes as the Configure graph. For a value from linked records it starts with the list itself, follows a relationship shown as a chip such as Line items · One to many, and ends in the linked list with Take Price or, for a total, Sum of Amount or Number of linked Line items. A calculation from the record lists its Inputs and then one box per step, such as Multiply with its two inputs. Every choice is a chip: click it to search the fields of the list, follow one more relationship under Go further, or enter a Fixed value. Add input and Add step extend a calculation, and a step's More actions menu removes it.
The last box shows the result type and an example: a record of the list with the value this calculation gives it, and an arrow to show another record. Under the boxes one sentence says what the field does, for example "Value adds up the Amount of all linked Line items." While something is missing the sentence names it, such as "Pick which value to add up.", and Save marks the incomplete box.
More options sets Updates: Always up to date, Saved when the record is created, Saved when a field changes (pick the field and the value that triggers it) or Saved on request. A saved value can allow Let people type over it. When linked records are involved, Show to everyone who can see the Deal lets people see this value even if they cannot open the linked records; for a single linked value or a total over one record they see that value exactly, so changing such a calculation needs an administrator's approval.
How are calculated money values rounded?
A calculated Money field without Decimal places rounds its result half-up to the smallest unit of its currency before it is stored: two places for EUR or USD, none for JPY, three for KWD. With Decimal places set, a calculated value rounds to that many places instead. The app, the REST API, exports and webhooks return the rounded value. Each value rounds on its own, so a deal total adds up already rounded line amounts and can differ by a cent from a sum of unrounded figures. Stored values change when they are next recalculated. Entered values are never rounded; Decimal places only sets how they are shown.
How does a weighted pipeline work, and how is the weighted value calculated?
Weighted deal value = deal value × stage probability / 100. The stages are a Single choice field whose options each carry a probability from 0 to 100 percent, which the AI workspace setup takes from the win chance of each stage. The weighted value is an optional calculated field. A 2,600 deal at 60 percent contributes 1,560; a zero-percent stage contributes zero, and a missing probability leaves the weighted value empty. A changed live price of an offering recalculates dependent values; a saved quote price does not.
A schema manager edits the stages, their probabilities or the formula on the configure page of the deals list in Configure, and the preview shows the effect on existing deals and widgets. People who cannot read every input of a calculation see a restricted value instead of the total, and the formula itself is shown only to people who can read all its inputs.
What are widgets?
A chart widget on the Dashboard picks a source list and an aggregation, a value field for aggregations other than count, optional filters, a grouping and a display style, for example the sum of Deal value by Stage or the count of Projects by Owner. Each record counts once at the list it comes from; a deal linked to two organizations counts fully in both groups, so grouped totals can exceed the overall total. A count chart sourced from an offerings list counts its records; one sourced from Line items counts Line item records. Widgets follow the same access rules as lists. Activity widgets show a feed instead of a number. See Dashboard.
What are webhooks?
A webhook or a routine can subscribe to record events of one or more lists, optionally filtered by fields. Deliveries are queued after the change is saved. A failed delivery is retried with the same event and delivery identity, so a receiver can see one event more than once. Access is checked again at send time, and past deliveries are redacted for the person viewing them. See Webhooks.
What is formatted text, and is it markdown?
A Formatted text field holds formatted text on a record, such as notes, descriptions or summaries. It is a field like any other: it has a place in the overview, can be pinned or hidden, and you can add as many as a list needs. The text is stored as a checked document rather than a markdown string. Wherever it appears as plain text or markdown, that is a conversion of the same document, not a second copy.
Who are users, roles, and the company, and what does Assigned read access mean?
Members are the people in a workspace. Roles grant create, read, edit and delete per list. Read access All covers every record of the list, Assigned only records assigned to that member, None nothing. Editing and deleting also need access to the specific record. New lists start without access. Every search, calculation, export, widget and Mate answer applies the reader's access.
Next
- CRM records: lists, editors and views.
- Filter syntax: filters and relationship operators.
- MCP tool catalog: record and configuration tools.
For agents
Read list and field IDs with discover_record_types and get_record_model. Every record reference carries both typeId and recordId. Link or unlink records with mutate_crm_record using relation IDs from get_record_model. Formatted text is written as a typed richText value, or added to the end of the current text with {fieldId, append} in an update. configure_record_model previews and applies a schema change with an expected revision and an idempotency key; a stale revision needs a fresh preview.