Skip to main content
All CRM endpoints are under the prefix /api/brands/{brand}/crm/ and authenticate via EF-Access-Key.
The CRM is structured as:

Entity Presets

Before creating a custom entity you can list and apply built-in presets (e.g. Leads, Contacts, Deals) which come pre-configured with pipelines and fields.
cURL

Entities

Entities define the type of record tracked in the CRM (e.g. “Leads”, “Customers”). Each brand can have multiple entities.

List Entities

cURL

Get Entity

Returns the entity with its full pipelines (including stages) and fields loaded.

Create Entity

name
string
required
Display name (e.g. Leads)
slug
string
required
URL-safe identifier — lowercase alphanumeric, hyphens, underscores (e.g. leads). Must be unique per brand.
singular_name
string
Singular label (e.g. Lead)
plural_name
string
Plural label (e.g. Leads)
icon
string
Icon identifier (max 64 chars)
color
string
Hex color (max 64 chars)
preset
string
Optional preset key from Entity Presets. When set, pre-populates pipelines and fields.
cURL

Update Entity

Same fields as Create, all optional on update.

Delete Entity


Pipelines

Pipelines belong to an entity and contain an ordered list of stages.

List Pipelines

Get Pipeline

Create Pipeline

name
string
required
Pipeline name (e.g. Sales Pipeline)
cURL

Update Pipeline

Delete Pipeline


Stages

Stages belong to a pipeline and represent progress steps (e.g. “Prospect → Qualified → Closed”).

List Stages

Get Stage

Create Stage

name
string
required
Stage name (e.g. Qualified)
color
string
Hex color for the stage badge
position
number
Sort order (0-based integer). Use Reorder to batch-update positions.
cURL

Update Stage

Reorder Stages

stages
array
required
Array of {id, position} objects in the desired order.
cURL

Delete Stage


Custom Fields

Custom fields define the schema for entry data. Each entity has its own set of fields.

List Fields

Get Field

Create Field

name
string
required
Field label (e.g. Email Address)
key
string
required
Slug key used in values on entries (e.g. email). Lowercase alphanumeric + underscores.
type
string
required
Field type: text, number, date, boolean, select, multi_select, url, email, phone
options
array
For select and multi_select types — array of option strings.
required
boolean
Whether this field is required on entry creation (default: false)
position
number
Display order
reporting_config
object
Optional reporting metadata. Supported keys: reportable (boolean), aggregation_type (numeric, categorical, date, boolean), baseline (min/max numbers), bucket_size (positive number), and preferred_chart (kpi, histogram, pie, bar, line).
cURL

Update Field

Accepts the same editable field properties as Create Field, including reporting_config.

Delete Field


Entries

Entries are the individual records in a CRM entity (e.g. a single lead or deal). They are stored and queried via Elasticsearch.

List Entries

entity
string
required
Entity ID
per_page
number
Results per page (max 100, default: 25)
page
number
Page number (default: 1)
pipeline_id
number
Filter by pipeline
stage_id
number
Filter by stage
reference_type
string
Filter by external reference type (e.g. conversion, lead)
reference_id
string
Filter by external reference ID
q
string
Full-text search on title
include_customer
boolean
Attach matched customer record to each entry (default: false)
cURL

Get Entry

Create Entry

title
string
required
Human-readable label for the entry (e.g. the lead’s name or email)
pipeline_id
number
required
ID of the pipeline this entry belongs to
stage_id
number
required
ID of the initial stage
values
object
Flat key-value object of custom field values (e.g. {"email": "jane@example.com", "lead_source": "Facebook"}). Keys must match a defined field key on the entity.
reference_id
string
External ID to link the entry to another record (e.g. a conversion ID)
reference_type
string
Type of external reference (e.g. conversion, lead, order)
assigned_to_user_id
number
Assign to a specific team member by user ID
assigned_to_team_id
number
Assign to a CRM team by team ID
cURL
Python

Update Entry

Same body as Create. All fields optional — only provided fields are updated.
cURL — update values and reassign

Move Entry to Stage

Move an entry to a different stage within the same pipeline.
stage_id
number
required
Target stage ID (must belong to the entry’s current pipeline)
cURL

Delete Entry


Automation: Create CRM Entry from Conversion

A common pattern is creating a CRM entry whenever a conversion is recorded. Using the EF automation pipeline or an external webhook:
Python