Migrate Rep Presence Status

Manage rep presence through Omni-Channel instead of your previous Open CTI pattern.

Open CTI doesn’t natively integrate with Omni-Channel for presence. Adapters that managed presence typically did one of the following:

  • Maintained an in-adapter presence widget that didn’t talk to Omni-Channel at all
  • Mirrored adapter status to Omni-Channel via custom Apex REST endpoints setting UserServicePresence
  • Relied on the rep manually changing their Omni-Channel status in the UI

This means for many Open CTI orgs, there is no Omni-Channel integration to migrate from. You’re moving from “adapter has its own presence” to “Omni-Channel owns presence.”

Omni-Channel is channel-agnostic. It manages presence across Voice, Chat, Messaging, Cases, and more for the same rep. A single presence status (for example, “Available”) can signal readiness for routing across all enabled channels.

Omni-Channel does not change presence status when a rep accepts a call. When a rep takes a call, they go “busy” from a routing standpoint. Their capacity is consumed via AgentWork, but their Omni-Channel presence status itself doesn’t change. They’re still “Available.” Capacity is the routing-side concept. Presence is the user-facing concept; they’re decoupled.

Omni-Channel does not set status to anything during the call. Reps stay on their selected presence status throughout the call. The “I’m on a call” indicator comes from AgentWork, not from presence status.

enqueueNextState is the bridge between rep intent (“I want to go offline”) and call lifecycle (“but they’re still on a call”). Without it, premature status changes drop calls.

Partners coming from non-Omni-Channel telephony platforms expect an explicit “On Call” status. There isn’t one in Omni-Channel. The rep stays Available; their capacity is fully consumed by AgentWork for the duration. We recommend covering this in your training materials.

Your connector responds to Omni-Channel in the new Salesforce Voice pattern. Here’s an example of how to handle changes in rep status.

Skipping enqueueNextState causes dropped calls. If you apply Offline immediately while a call is active, your backend tears down the rep’s session, and the call drops. Offline is the worst status to flip to mid-call. This is the root cause of numerous support cases with partner telephony. Always honor the enqueueNextState flag.