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

string
required
Display name (e.g. Leads)
string
required
URL-safe identifier — lowercase alphanumeric, hyphens, underscores (e.g. leads). Must be unique per brand.
string
Singular label (e.g. Lead)
string
Plural label (e.g. Leads)
string
Icon identifier (max 64 chars)
string
Hex color (max 64 chars)
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

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

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

Update Stage

Reorder 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

string
required
Field label (e.g. Email Address)
string
required
Slug key used in values on entries (e.g. email). Lowercase alphanumeric + underscores.
string
required
Field type: text, number, date, boolean, select, multi_select, url, email, phone
array
For select and multi_select types — array of option strings.
boolean
Whether this field is required on entry creation (default: false)
number
Display order
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

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

Get Entry

Create Entry

string
required
Human-readable label for the entry (e.g. the lead’s name or email)
number
required
ID of the pipeline this entry belongs to
number
required
ID of the initial stage
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.
string
External ID to link the entry to another record (e.g. a conversion ID)
string
Type of external reference (e.g. conversion, lead, order)
number
Assign to a specific team member by user 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.
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