Access: CRM → Segments (/crm/segments).
Segments page

Two segment types

TypeHow members are addedWhen to use
StaticManually (addCustomers) or via the add-to-segment nodeFixed lists: “Q1 batch”, “Cooldown — Mar 2026”
DynamicAuto-filtered by rules”Customers tagged hot-lead in VN”

Create a segment

1

+ New segment

2

Name + description

Short, clear name. Description explains the rationale to teammates.
3

Pick the type

Static = empty, fill manually. Dynamic = configure rules next.
4

(Dynamic) Rule builder

AND/OR groups of predicates:
  • Tag contains / not contains
  • Company in list
  • Has / has no inbound since date X
  • Fit score per product > N
  • Country / language
  • Owner = user
  • Currently in / never in another segment
5

Save

Segment detail page

/crm/segments/:id:
Customer table for the segment. Actions:
  • Add customers (static) — pick from the contact book
  • Remove (static) — remove manually
  • Recompute (dynamic) — force a recompute now
  • Bulk actions — claim/tag/start campaign…

Service operations

OperationUse case
resolveCustomerIdsReturns the ID list — used by automation to enroll
listCustomersUI table — paginated with filters
addCustomers(segmentId, ids)Bulk add (static only)
removeCustomers(segmentId, ids)Bulk remove (static only)
upsertManyByName(orgId, names)Idempotent — creates a segment if missing. Used by CSV import and automation.

Dynamic recompute

Dynamic segments don’t store membership. Each list/resolve call:
  • Queries the DB by the rules
  • Caches results for 60s
When a customer changes (tag, company, …) the cache invalidates and the next call recomputes. To force-recompute: segment page → ”…” menu → Recompute now.

Special segments

A static segment holding customers who aren’t ready — populated by the Exit — Cooldown node. Convention: name it Cooldown — <reason>.
A static segment “Already ran campaign X” — campaign Y excludes this segment in its audience filter to prevent double-sends.
A dynamic auto-segment: “Customer has at least one suppressed contact”. Used for audit visibility.

API & exports

Segment endpoints return the audience list, used by:
  • The campaign builder (pick a segment as the audience)
  • CSV export of segment members
  • Outbound webhook events segment.joined / segment.left
Static segments don’t self-remove members. If a customer warms up again, manually remove them or use an add-tag node + a dynamic segment that filters on the new tag.