• Customermates logo
    CustomermatesDocumentation
  • Introduction
  • Comparison
Getting Started
  • Quickstart
  • Core Concepts
  • From Pipedrive
Integrations
  • Introduction
  • MCP
  • Connect Claude Desktop
  • Connect ChatGPT
  • Connect Cursor
  • Webhooks
  • OpenAPI 3.1.0
  • N8N
Self-Hosting
  • Self-Hosted vs Cloud
  • Get Started
  • Managing Your Installation
  • Architecture & Security
Reference
  • Setup AI Assistant
  • MCP Tool Catalog
  • Webhook Events
  • Filter Syntax
  • API Keys
  • Go back
  1. Introduction
  2. Core Concepts

Core concepts

Entities, relationships, custom columns, widgets, and webhooks, in one page.

TL;DR — Customermates tracks five entity types, lets each one carry user-defined fields, links them to each other through typed relationships, and fires webhooks whenever any of that changes.

The five entities

EntityWhat it representsTypical fields
ContactA personfirstName, lastName, notes
OrganizationA companyname, notes
DealA sales opportunityname, totalValue, totalQuantity
ServiceA product or offering attached to a dealname, amount
TaskA todo itemname, assignees

Each entity has id, createdAt, updatedAt, and supports markdown notes. Everything else is either a relationship to another entity or a custom column value.

Relationships

Relationships are typed and many-to-many. A contact belongs to zero or more organizations and zero or more deals. A deal belongs to zero or more contacts, organizations, and services (with quantities) plus assignees.

From → ToExample
Contact ↔ Organization"Max works at Initech"
Contact ↔ Deal"Max is a stakeholder on the Q2 contract"
Organization ↔ Deal"The Q2 contract is with Initech"
Deal ↔ Service (with quantity)"5 hours consulting + 1 setup fee"
Deal / Service / Task ↔ User"Assigned to Julia"

Tasks only link to users. That is intentional: tasks are lightweight.

Custom columns

Default schema covers the basics. For anything else, add a custom column.

Eight types:

TypeUse for
PlainFree-text values
DateCalendar dates (renewal, next touch)
DateTimeTimestamps
CurrencyMoney amounts, stored with an ISO currency code
Single-selectDropdown from a fixed list (stage, priority)
LinkOne or more URLs
EmailOne or more email addresses
PhoneOne or more phone numbers

Custom columns are first-class in filters, widgets, and the MCP surface.

Widgets

Widgets are dashboard charts driven by live data. You pick an entity, a group-by axis (plain field or custom column), an aggregation (count, deal value, deal quantity), and a display type (bar / doughnut / radar). Filters narrow the data set.

A widget re-renders whenever underlying records change. No refresh button.

Webhooks

Every write emits a domain event: contact.created, deal.updated, task.deleted, and so on. You subscribe by URL and event list. Each delivery includes the changed record plus a changes map showing what moved from what to what, so subscribers can act on diffs without polling.

See Webhook events for the full payload catalog.

Notes

Notes are per-record markdown. They render through a Tiptap editor in the UI but are plain markdown everywhere else. You can replace them (update_entity_notes) or append to them without losing existing content (append_entity_notes).

Users, roles, and the company

Users are your teammates. Roles control what they can read and write. The company is the tenant — every record you see lives inside one company, and cross-tenant access is not possible.

Next

  • Custom columns — recipes and gotchas.
  • Filter syntax — operators and examples.
  • MCP tool catalog — every tool that operates on these concepts.
The five entities
Relationships
Custom columns
Widgets
Webhooks
Notes
Users, roles, and the company
Next