Agent Capacity
Agent Capacity in Salesforce Omni-Channel is the cap on how much work a service agent can handle at the same time.
Definition
Agent Capacity in Salesforce Omni-Channel is the cap on how much work a service agent can handle at the same time. Each agent gets a numeric capacity from a Presence Configuration, and each work item (case, chat, voice call, messaging session) gets a capacity weight from its Routing Configuration. Omni-Channel adds up the weights of an agent's open work, compares the total against the agent's capacity, and only routes new items when there is room.
The model is designed to mix work types by cognitive load instead of counting raw items. A voice call that demands focus can weigh 5, while an email might weigh 1. The same agent with a capacity of 10 could handle one call plus five emails, or two calls flat, but never both a third call and an email at once. Three records own this behavior: Presence Configuration sets agent capacity, Routing Configuration sets per-item weight, and Service Channel maps each weight to the underlying object.
Why capacity is a weight, not a count
Where capacity is set and read
Three setup records govern capacity. Service Channel maps a work object (Case, LiveChatTranscript, MessagingSession, VoiceCall) to a routing model. Routing Configuration sets the weight each work item of that channel consumes (the Units of Capacity field). Presence Configuration sets the total capacity an agent has when they sign in under that configuration. Agents are tied to Presence Configurations through Permission Sets or Profiles, so different teams can have different capacity. None of these live on the user record directly. Most issues with capacity behavior trace back to a missing or stale Presence Configuration assignment rather than wrong numbers.
Capacity weights and the math of cognitive load
Weights are integers from 0 upward. A weight of 0 means the work item is routed and tracked but does not count against capacity, which is occasionally useful for low-touch follow-up cases. The common convention is 1 for emails, 2 for chats, 3 to 5 for voice. Some teams set the agent capacity to 100 and use weights of 20, 40, and 60 so the math reads as percentages in reports. Either approach works. The model has no floor on weight, so a work item with weight 10 routed to an agent with capacity 5 will simply sit in the queue forever for that agent, which is a common misconfiguration when capacity gets cut after launch.
Status, presence, and how capacity changes mid-session
An agent's effective capacity can change without the agent logging out. Switching from a Presence Status of "Available, All Channels" to "Available, Chat Only" filters channels and may also change the capacity available to that channel based on the Presence Configuration. Going to "Busy" or "Away" zeros effective capacity and stops routing new items, but does not push existing items off the agent. Disconnect and reconnect events from the browser can also affect capacity if the Omni-Channel widget closes before the agent goes offline gracefully. The OmniChannel.changeStatus method in the Lightning API is how custom utility bars push capacity-changing events.
Skill-based routing and capacity together
Skills-based routing layers on top of capacity. The routing engine first filters agents to those who hold every required skill on the work item, then ranks the qualified agents by available capacity, then picks the most-available agent. Capacity is the tiebreaker, not the gatekeeper. An agent with all the right skills but zero free capacity gets skipped, and the engine moves to the next-most-qualified agent. If no agent has both the skills and the capacity, the item sits in the queue. Always tune skills first, then capacity, then watch the queue depth metrics to see which dimension is bottlenecking real work.
Real-time monitoring in Omni-Channel Supervisor
Omni-Channel Supervisor surfaces three live tiles per agent: assigned work, capacity used, and capacity remaining. The view refreshes every 30 seconds without a manual reload. Supervisors can reassign work between agents from this view, which mutates capacity in real time and triggers any associated assignment-rule logic. The view does not surface why an agent has low capacity (busy on a long call, sandbagging by going Away, or simply on PTO). Pair it with the User Presence object in a report to see status duration alongside capacity. The User Presence object retains 30 days of history.
External routing for Voice and Messaging
Service Cloud Voice and Salesforce Messaging both feed into the same capacity model but write work items asynchronously. A Voice Call has its capacity weight applied the moment the call connects, not when the inbound rings. Messaging sessions consume capacity from the first inbound message and release it when the session goes to Ended state. Both channels respect the agent's Presence Configuration cap. A subtle gotcha: a Voice Call that is on hold still consumes capacity. If your team mass-puts calls on hold, the apparent overcapacity number you see in Supervisor reflects real cognitive load, not a bug.
Reporting on utilization
The AgentWork object is the source of truth for capacity consumption history. Each row has the work item ID, the agent, the start and end timestamps, and the weight consumed. Joining AgentWork to User Presence by overlapping time windows gives you utilization (busy time over logged-in time) and capacity utilization (capacity consumed over capacity available) separately. The two numbers should track closely. A gap of more than 15 percentage points usually means weights are wrong for the actual cognitive cost of the work. Build the report once in your sandbox, validate against three known shifts, then schedule it for ops review weekly.
How to set up Omni-Channel Agent Capacity end to end
Setting up capacity is a sequence: Service Channels first, Routing Configurations next, Presence Configurations after that, and Presence Statuses last. Skipping the order forces you to double back because Routing Configurations need a Service Channel and Presence Configurations reference Routing Configurations. Plan the weights on a whiteboard with the service ops lead before you touch Setup.
- Enable Omni-Channel and pick the queue model
Setup, Omni-Channel Settings, Enable Omni-Channel. Decide whether you use Queue-Based, Skills-Based, or External routing. The choice gates which Routing Configuration fields are required.
- Create Service Channels for each work type
One Service Channel per work object: Case Service Channel, Chat Service Channel, Voice Call Service Channel, Messaging Session Service Channel. The object pick determines which records the channel can route.
- Define Routing Configurations and per-item weights
For each Service Channel, create at least one Routing Configuration. Set Units of Capacity to the weight for that work type. Choose Routing Priority (lower runs first), Routing Model (Most Available, Least Active), and Push Time-Out.
- Assign Routing Configurations to Queues
Open each Queue that should feed Omni-Channel work. Set the Routing Configuration on the queue. Without this, the queue's items sit untouched.
- Create Presence Configurations with agent capacity
Setup, Presence Configurations, New. Set the Capacity field to the agent's total budget. Pick which Service Channels this configuration applies to. Toggle Decline Reasons, Allow Agents to Accept Requests, and the Time-Out behaviors.
- Create Presence Statuses and tie them to Service Channels
Setup, Presence Statuses, New. Statuses like "Available All", "Available Chat Only", "Busy", "Away". Each Status is bound to one or more Service Channels. Agents pick a Status to start receiving work.
- Assign Presence Configurations and Statuses via Permission Sets
Create a Permission Set per agent role. Assign the Permission Set the right Service Presence Status Access and Presence Configuration Access. Assign the Permission Set to agents.
- Validate with a test agent in sandbox
Log in as a test agent, set Status, push three test work items at it, watch the Omni-Channel widget count down available capacity. Switch statuses, push more, verify routing stops at the cap.
Total capacity available to an agent under this configuration. An integer with no enforced upper bound, but most orgs stay under 20 to keep weight math simple.
Weight a single work item of this channel consumes. Drives the cognitive-load math.
Most Available, Least Active, External, or Omni-Channel Flow. Determines how the engine picks between qualified agents with free capacity.
Seconds an agent has to accept a pushed work item before it returns to the queue. Default is 0 (no timeout).
Optional list of reasons agents must pick when declining a work item. Captures data for capacity tuning rather than enforcing behavior.
- A work item weight higher than any agent capacity routes nowhere. The item sits in the queue forever. Watch queue depth after capacity cuts.
- Weight is per work item, not per channel. Two open chats with weight 2 each consume 4 capacity, not 2.
- Presence Configuration capacity does not roll up across overlapping configurations. The agent uses the configuration tied to their currently active Status.
- Voice Calls on hold still consume capacity. If your team mass-holds, the supervisor view shows accurate cognitive load, not a routing bug.
- Capacity changes via API (OmniChannel.changeStatus) do not retroactively re-evaluate already-routed work. The new cap only governs new pushes.
Trust & references
Cross-checked against the following references.
- Omni-Channel capacity modelSalesforce
- OmniChannel.changeStatus API referenceSalesforce Developers
Straight from the source - Salesforce's reference material on Agent Capacity.
- Set Up Routing and Capacity in Omni-ChannelSalesforce Help
- Create Presence ConfigurationsSalesforce Help
- Omni-Channel Setup OverviewSalesforce Help
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. Agent Capacity is configured within which Salesforce feature?
Q2. What happens when an agent's remaining capacity is less than the size of an incoming work item?
Q3. Why would different channels have different capacity weights?
Discussion
Loading discussion…