Skip to content
Knowledge ERP Docs
API Reference ↗
Sales

Customer Segments

Group customers into named segments — by hand or by rules — to slice reports and trigger automations.

Availability — Included with any customer-facing module — Sales, Appointments, Rentals, or Inventory. Manage modules and your plan tier in Account & Billing.

A customer segment is a named group of customers. Use segments to slice your customer base for reporting and to drive automations — for example, email every customer who joins a "VIP" segment.

Manual vs. dynamic segments #

Each segment is one of two kinds:

  • Manual — you choose the members yourself. Assign customers from the segment's form, or from the Segments field on a customer.
  • Dynamic — membership is computed from rules. Customers join and leave automatically as their details change; you never edit the member list by hand.

A dynamic segment's rules are a list of conditions on customer fields (name, email, payment terms, price list, billing city / state / country), combined by all (every rule must match) or any (at least one). For example, billing state is one of CA, NV, AZ builds a "Southwest" segment that maintains itself.

Membership is recomputed when you save the segment, when a customer is created or edited, and once daily as a safety net. You can also hit Recompute members on a dynamic segment at any time.

What segments drive #

  • Reporting — the customer report dataset includes a Segments column, so you can show or group customers by the segments they belong to.
  • Automation — the "Customer joins or leaves a segment" trigger fires whenever membership changes (manual, dynamic, or via the API). Add a condition on segment_uuid to react to one specific segment, and change is added or removed.

From the API #

Segments are fully scriptable under /api/v1/customer-segments (list, show, create, update, delete). Manual membership is set with a customer_ids array; dynamic segments take mode: "dynamic", a match_type of all/any, and a rules array. A customer's segment membership is exposed as segment_ids on the customer resource.

# A dynamic "California" segment
curl -X POST https://your-domain.com/api/v1/customer-segments \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "California",
    "mode": "dynamic",
    "match_type": "all",
    "rules": [{ "field": "billing_state", "operator": "=", "value": "CA" }]
  }'

# A manual segment with two members
curl -X POST https://your-domain.com/api/v1/customer-segments \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "VIP", "mode": "manual", "customer_ids": ["<id-1>", "<id-2>"] }'