What controls dialing pressure
Campaign dialing pressure is limited by several layers:| Layer | Meaning |
|---|---|
| Campaign concurrency (seats) | Max simultaneous connected conversations configured on the campaign. Feeds the pacing formula. |
| Carrier CPS | Per-carrier limit on new SIP dials per second (token bucket). Distinct from seats. |
| Time window | Calls only launch inside the configured local time window. |
| Fleet availability | CXB Dialler only dispatches when CXB Core has free worker slots. |
| SIP/LiveKit capacity | Carrier and LiveKit must accept the call volume. |
| Circuit breakers | Repeated infra failures temporarily stop use of unhealthy dependencies. |
How predictive pacing decides dial rate
CXB Dialler uses an industry-standard predictive formula:- seats = campaign concurrency limit (clamped to actual fleet capacity).
- AHT = average handle time (seconds) of connected calls.
- answer_rate = rolling answered / dialled.
Cold start
Until the campaign has at least 20 completed calls (COLD_START_THRESHOLD), there is no over-dial. The dialler just fills free fleet slots one-for-one. This avoids over-dialing before there is a stable answer-rate signal.
Carrier CPS rate limiter
Each carrier has its own token bucket keyed by trunk. New SIP invites wait for a token, so a single campaign cannot exceed the carrier’s configured CPS / burst even if the seat math asks for more. This is the carrier-protection layer and is separate from seat concurrency.Abandon-rate brake
The formula handles the average; an abandon-rate feedback loop handles spikes. It only applies once at least 30 answered calls (ABANDON_MIN_SAMPLE) exist, so early noise does not trigger it.
| Abandon rate | Action |
|---|---|
≤ 3% (ABANDON_TARGET) | No brake. |
| > 3% and ≤ 5% | Proportional adapt — scale the dial rate down toward the 3% target. |
> 5% (ABANDON_HARD_THRESHOLD) | Hard brake — halve the dial rate immediately. |
Lease priority (what gets dialled first)
Within a campaign, CXB Dialler leases due work in a strict priority order:Callbacks
callback_scheduled contacts whose scheduled time is due — customer explicitly asked to be called back.Pending
Fresh
pending contacts that have never been dialled. This guarantees every number is reached at least once before any retry fires.Retry rules
Campaign retry config contains:| Field | Meaning |
|---|---|
| Max Attempts | Maximum attempts per contact. |
| Retry Delay | Delay before next eligible retry. |
| Retry on System | System outcomes eligible for retry. |
| Retry on Custom | Business dispositions eligible for retry. |
Time windows
Use the customer’s legal/contactable timezone. For India campaigns this is normally:Practical concurrency guidance
Start conservative:- first live campaign: low concurrency
- after stable test: increase gradually
- watch no-answer/rejected spikes
- watch provider errors
- watch fleet availability
- watch recording/result delivery
When to pause
Pause the campaign when:- wrong bot/config was selected
- CSV variables are wrong
- too many calls fail with the same SIP/provider error
- customers report incorrect script or language
- fleet health is unstable
- CRM push is failing repeatedly