Anatomy of a capacity
| Field | Description |
|---|---|
name | Human-readable name (e.g. AE Capacity). |
color | Visual tag: orange, red, purple, green, yellow, or grey. |
description | Optional free-text note. |
memberCapacity | Max distinct records a member can hold in the current window. null = unlimited. |
allocationExpirationPolicy | How the counting window resets (see below). null = allocations never expire. |
modelUuid | Optional data model to derive existing allocations from (model-based capacity). |
filter, idColumnSlug, timeColumnSlug | Required when modelUuid is set — how to read records from that model. |
Limit types
Fixed limit
SetmemberCapacity to the number of records each member may hold. Once a member reaches it, they’re skipped until an allocation expires (or forever, if there’s no expiration policy). Leave it null for no limit.
Expiring windows
allocationExpirationPolicy controls when past allocations stop counting, so a member’s capacity refills over time. The interval can be:
hourly, daily, weekly, monthly, quarterly, yearly, or null (never expires).
Each interval works in one of two ways:
- Sliding — a rolling window (e.g. the last 24 hours for
daily). This is the default. - Fixed boundary — the window resets at a set point (e.g. every day at
09:00UTC, or every Monday). Fixed boundaries take extra fields such astime(UTCHH:MM),weekDay(1=Monday …7=Sunday),day,month, orminutedepending on the interval.
A member’s used capacity is the count of distinct record IDs allocated to
them within the current window — re-allocating the same record doesn’t double-count.
Model-based capacity
Instead of counting only Cargo’s own allocations, a capacity can derive existing workload from a data model — for example, counting each rep’s open opportunities. SetmodelUuid and provide:
| Field | Purpose |
|---|---|
filter | Segmentation filter selecting the relevant rows (e.g. open deals), including which member owns each row. |
idColumnSlug | Column used as the record ID. |
timeColumnSlug | Date column used as the allocation timestamp (for expiration windows). |
Manage capacities from the CLI
| Command | Required | Optional |
|---|---|---|
create | --name, --color | --description, --member-capacity, --allocation-expiration-policy, --model-uuid, --id-column-slug, --time-column-slug, --filter |
update | --uuid | --name, --color, --description, --member-capacity, --allocation-expiration-policy, --model-uuid, --id-column-slug, --time-column-slug, --filter |
Segmentation
--filter JSON uses the conjonction key (Cargo’s intentional
spelling). When --model-uuid is set, --filter, --id-column-slug, and
--time-column-slug are required.Apply a capacity during allocation
A capacity does nothing on its own — attach itscapacityUuid to an Allocate node. Whichever allocation mode you use (territory, members, email, or matching), members at their limit are marked unavailable and skipped; if everyone is full, the fallback member receives the lead.
Territories
Group members into pools that leads are distributed across.
Build a play
Add an Allocate step that enforces capacity limits.

