
Monitoring SIP Channel Concurrency for Outbound Operations
Concurrency is the outbound floor's primary resource constraint. When you run out of SIP channels, your dialer stops originating calls — not gracefully, with a queue — it hard-stops, and agents sit idle while the pacing engine waits for a channel to free up.
What Concurrency Actually Means in an Outbound Stack
A SIP channel is occupied from the moment INVITE is sent until the BYE is acknowledged. That window includes ring time (4–8 seconds on average for domestic US/CA), conversation time, and occasionally a brief post-call SIP negotiation. On a predictive dialer, your dialing ratio means you have multiple channels in the ringing state simultaneously for every agent in the ready state.
At a 3:1 dialing ratio with 50 agents, you need capacity for 150 simultaneous channels just to service the ringing load — before accounting for agents who are mid-conversation. A real 50-agent predictive floor needs between 175 and 225 channels provisioned at peak, depending on AHT and list answer rates.
Monitoring tells you whether your provisioned capacity matches your operational demand in real time, not after the campaign report reveals lost production.
Three Concurrency Metrics to Track Continuously
Peak concurrent channels (rolling 5-minute max). This is your headroom indicator. If your peak is consistently 140 out of 200 provisioned, you have comfortable headroom. If it's 195 out of 200, you are one list segment with a high answer rate away from a concurrency ceiling event.
Channels-in-ring vs. channels-in-talk. A healthy split at 3:1 dialing ratio is roughly 2 ringing for every 1 talking. If you see 4 ringing per talking, your answer rate dropped and the dialer is compensating by dialing more aggressively. If you see 1 ringing per 2 talking, the dialer pulled back too far and agents are waiting between calls.
Channel acquisition latency. How long does the SIP trunk take to return a response after INVITE? Post-dial delay above 2 seconds on domestic calls is abnormal and usually indicates a routing problem on the carrier side. Track this as a 95th-percentile latency metric, not an average — averages hide the tail that causes agent-visible delays.
SIP-Level Monitoring vs. Dialer-Level Monitoring
Most commercial predictive dialers expose a supervision screen that shows agent states and call counts. This is dialer-level monitoring — it knows what the application thinks is happening. SIP-level monitoring knows what is actually happening on the trunk.
Discrepancies between the two indicate bugs. If the dialer reports 80 active calls but your SIP trunk reports 95 established channels, 15 calls are active on the network that the dialer doesn't know about. This happens during crash-recovery scenarios, database desync events, or when the ESL/AMI connection to the media server drops and reconnects mid-call.
For SIP-level visibility, you need either: (a) your own monitoring process that parses SIP logs from your media server, (b) an SNMP or HTTP API exposed by your SBC or session border controller, or (c) a carrier-provided channel state API. The UnlimCall network exposes channel state via API so you can reconcile dialer-side and trunk-side counts without building your own SIP parser.
Capacity Planning from Concurrency Data
Six months of peak-concurrency data is sufficient to right-size your channel provisioning for any planned campaign growth. The key calculation:
`` required_channels = (agents × dialing_ratio) + (agents × (AHT / 60)) + safety_margin ``
At 50 agents, 3:1 ratio, 90-second AHT, and a 15 % safety margin: (50 × 3) + (50 × 1.5) × 1.15 = 259 channels. Round to 275 for a clean provisioning number.
On per-minute billing, provisioning 275 channels when you peak at 220 has a direct cost implication — idle channels are wasted spend. On flat-rate per-seat billing, the provisioning decision is purely operational. You provision for the peak you expect plus safety margin, and you don't pay a penalty for headroom.
Alerting on Concurrency Events
The most valuable concurrency alert is a predictive one, not a reactive one: when your rolling 5-minute peak crosses 85 % of provisioned capacity, that is the moment to evaluate whether to increase provisioning, throttle the dialing ratio, or let the campaign run and accept the ceiling risk.
Configure secondary alerts for:
- Channel acquisition failures (SIP 503, 486, or 480 responses) exceeding 0.5 % of INVITE volume
- Any channel held open longer than 90 minutes (likely a stuck call that the media server didn't clean up)
- Sudden drop in active channels of more than 30 % within 60 seconds (suggests a trunk-side disconnect event)
These events can be surfaced to your ops dashboard via webhooks. See the developers documentation for event schema details.
Takeaways
Concurrency monitoring requires both dialer-level and SIP-level visibility to catch discrepancies. Track peak channels, ring-to-talk ratio, and channel acquisition latency. Size provisioning using a formula that accounts for dialing ratio plus AHT plus safety margin. On flat-rate infrastructure, over-provisioning for safety costs nothing financially — the operational benefit of reliable headroom outweighs any theoretical efficiency loss.
Provision Channels for Your Actual Peak, Not Your Average
UnlimCall gives you flat-rate access to 33 markets — $99 per seat per month. No per-channel fees. No penalty for headroom. Run the math for your floor size.