A smartphone chatbot connects through secure AI cloud services to a customer support team dashboard.
There is an old truism in IT operations and customer support: users do not mind waiting nearly as much as they mind waiting in the dark. For enterprise architects building custom support experiences on top of Microsoft’s customer service stack, that darkness just got a lot easier to illuminate.

According to the Microsoft 365 AI at Work Roadmap (Roadmap ID 576780) and Microsoft Learn’s 2026 release wave 1 documentation, Dynamics 365 Contact Center now supports average wait time (AWT) calculations for custom messaging channels built using its messaging APIs. While out-of-the-box live chat and voice channels already had native wait-time calculations, custom bring-your-own-channel integrations were previously left out of that specific telemetry loop.

Having reached general availability on June 19, 2026, for Worldwide (Standard Multi-Tenant) cloud instances, the capability is enabled automatically for administrators, makers, marketers, and analysts. Rather than merely painting a number onto a prebuilt chat widget, this enhancement exposes real-time queue wait metrics through the platform’s representative availability APIs, giving Copilot Studio agents and custom back-end routing engines the hard data they need to decide whether to escalate, defer, or reroute a conversation before a customer loses patience.


A smartphone chatbot connects through secure AI cloud services to a customer support team dashboard. Closing the Telemetry Gap for Custom Channels​

Modern enterprise contact centers rarely live inside a single prepackaged browser widget anymore. Organizations frequently build proprietary messaging interfaces inside mobile applications, line-of-business portals, or specialized regional messaging platforms using the Dynamics 365 Contact Center messaging APIs. As Microsoft Learn’s documentation on messaging APIs outlines, this service-to-service architecture gives developers complete control over the front-end user experience without requiring client-side SDKs or direct connections from user devices.

Until this rollout, however, taking control of the front end meant sacrificing parity in queue wait-time visibility. Standard voice and live chat channels had built-in average wait time calculations, while custom messaging API channels lacked native AWT support.

With Roadmap ID 576780 now launched, Microsoft has unified how wait-time expectations are computed across voice, live chat, and custom messaging API channels. What does that actually change on the ground?

  • Smarter AI Hand-offs: Copilot Studio agents handling initial triage no longer have to escalate blindly. By checking the target queue’s wait time via the representative availability APIs, an AI agent can inform the user of the expected delay, offer an asynchronous follow-up, or attempt deeper self-service resolution when human queues are backed up.
  • Proactive Custom Routing: External middleware or custom routing logic can inspect queue conditions before or during a conversation and dynamically adjust how customer requests are handled.
  • Transparent Customer Expectations: Front-end applications can surface realistic wait estimates directly inside custom app interfaces, reducing the frustration that leads to rapid session abandonment.

Under the Hood: How the Wait Time Algorithm Works​

If you have ever watched a basic file-copy dialog jump from "2 minutes remaining" to "4 hours remaining" because of one stubbornly large file, you know why simple arithmetic averages fail in dynamic queues. A single complex support ticket that ties up a specialist for an hour can skew a naive average for the rest of the afternoon.

To prevent stale outliers from distorting current queue conditions, Microsoft’s documentation states that Dynamics 365 Contact Center computes the average wait time using an exponential moving average (EMA) algorithm. Here is how the math behaves in practice:

  1. Recency Weighting: The exponential moving average gives greater weight to the most recently connected conversations while gradually tapering the influence of older interactions. If a sudden spike in volume clears out—or if ten representatives just returned from lunch—the metric adapts faster than a flat historical mean.
  2. Exclusion of Abandoned Sessions: The system calculates AWT strictly from connected conversations and automatically excludes abandoned ones.

That second point is a critical nuance for contact center supervisors and data analysts to understand. If twenty frustrated customers abandon a queue after waiting three minutes, those three-minute stints are not folded into the average wait time calculation; only the wait times of customers who actually connect with a customer service representative are counted. Consequently, AWT measures the time required to successfully reach a human representative, not the average patience threshold of callers who hang up early.

Comparing Established Channels vs. Messaging API Channels​

In Microsoft Learn’s existing administration guide for live chat and voice average wait times, the system runs its background calculation every 10 minutes, requires a minimum threshold of 20 completed conversations in a queue before displaying wait times to customers, and resets the metric if a queue sees zero conversations for seven days. However, Microsoft’s release documentation for the new messaging API channel enhancement confirms only the exponential moving average algorithm and the exclusion of abandoned conversations—it does not explicitly specify whether the 20-conversation minimum or the 7-day reset window applies identically when retrieving the metric for custom messaging channels through the API. Architects should therefore design their API consumers to gracefully handle null or zero values when queues are cold or newly provisioned.


Retrieving the Metric: The Representative Availability APIs​

Because custom messaging channels rely on back-end, service-to-service communication, Microsoft surfaces the new AWT metric through the representative availability APIs (formerly often referred to as agent availability APIs before Microsoft updated its terminology from "human agent" to "customer service representative").

According to Microsoft Learn’s developer documentation for extending Dynamics 365 Contact Center, administrators and developers have two primary OData endpoints at their disposal:

  • CCaaS_GetRepresentativeAvailabilityBeforeConversation: Retrieves queue and representative availability before a customer conversation is initiated. This is ideal for deciding whether to display a "Chat with an Expert" button in a custom app or warning a user about wait times upfront.
  • CCaaS_GetRepresentativeAvailabilityForConversation: Retrieves availability metrics during an active session using a valid conversation ID—perfect for a Copilot Studio agent deciding mid-chat whether to escalate to a human queue.

Prerequisites and Authentication​

Calling these endpoints requires proper administrative setup in Azure and Dynamics 365:

  1. Role Assignment: You must hold the Omnichannel administrator role.
  2. Microsoft Entra ID App Registration: Register a client application in Microsoft Entra ID, copy the Application (client) ID and Directory (tenant) ID, and generate a client secret.
  3. API Permissions: Under API permissions > Add a permission, select the Microsoft APIs tab, choose Dynamics CRM, select Delegated permissions, and enable the user_impersonation scope.
  4. Bearer Token Generation: Request an OAuth 2.0 token via a POST call to [Redirecting](https://login.windows.net/){tenant-Id}/oauth2/token using your client credentials and your Dynamics 365 organization URL as the resource.

Anatomy of the API Request and Response​

To check wait times before a conversation starts, your back-end service sends a POST request to /<orgurl>/api/data/v9.2/CCaaS_GetRepresentativeAvailabilityBeforeConversation with an Authorization: Bearer <token> header and Content-Type: application/json.

At minimum, the JSON payload requires "ApiVersion": "1.0" and the target "LiveWorkStreamId". If your workstream uses route-to-queue rules that depend on customer context, you can also pass "ChannelEngagementContext" or "CustomContextItems" (where each item’s datatype is defined as Text 192350000 or Integer 192350001).

When the call succeeds with an HTTP 200 OK, Dynamics 365 returns a JSON payload rich with queue telemetry. Developers should pay close attention to the exact response fields documented by Microsoft Learn:

Response PropertyTypeOperational Meaning
queueIdStringThe target queue ID determined by the workstream's routing rules.
isQueueAvailableBooleantrue if the target queue is currently within its configured operating hours; false otherwise.
isAgentAvailableBooleantrue if service representatives in the queue are currently available to take requests based on routing and assignment rules.
NumberOfExpertsAvailableInQueueNumberThe count of service representatives currently available to accept conversations in the target queue.
positionInQueueNumberThe customer's position waiting behind others in the same queue.
averageWaitTimeNumberAverage wait time in minutes for customers in the target queue.
AverageWaitTimeInSecondsNumberAverage wait time in seconds for customers in the target queue.
NextTransitionTimeDateTimeWhen the queue will next change operational state (UTC).

A Practical Coding Catch: In Microsoft Learn’s official sample response for CCaaS_GetRepresentativeAvailabilityBeforeConversation, the payload returns "AverageWaitTimeInSeconds": 45 alongside "AverageWaitTime": null. If your integration code only inspects averageWaitTime (the minutes field) and ignores AverageWaitTimeInSeconds, sub-minute wait times or specific API responses might falsely register as missing data. Always program your parser to check AverageWaitTimeInSeconds first and fall back or convert to minutes as needed.


Architectural Guardrails and Freshness Limits​

Having an API is great; knowing where its blind spots are is what keeps an IT architect employed. Microsoft Learn’s documentation for the representative availability APIs highlights three critical operational boundaries that every implementation team must factor into their design:

1. Asynchronous Refresh Cadences​

Not every metric in the availability API response ages at the same speed. According to Microsoft Learn:

  • Queue metrics (averageWaitTime, AverageWaitTimeInSeconds, and positionInQueue) refresh in near real time.
  • Representative metrics (isAgentAvailable and NumberOfExpertsAvailableInQueue) refresh approximately every 5 minutes.
  • Queue configuration settings (such as operating hours reflected in isQueueAvailable) refresh every 10 minutes.

Why does this matter? Imagine all five of your available representatives go on break at the exact same moment. For up to five minutes, NumberOfExpertsAvailableInQueue may still report 5, even as PositionInQueue and AverageWaitTimeInSeconds begin ticking upward in near real time. If you are programming a Copilot Studio agent to decide whether to escalate, weighting the near-real-time wait time and queue position alongside staffing counts is much safer than trusting staffing counts alone.

2. Routing Rule Limitations​

The representative availability APIs do not evaluate queue overflow handling or percentage-based routing configurations defined at the workstream level. Furthermore, if multiple route-to-queue rules match the context you pass in the request, the API simply returns telemetry for the first matching queue. If your contact center relies heavily on complex overflow cascades or split-percentage traffic distribution, remember that the API is giving you a snapshot of the primary target queue, not a full simulation of overflow destinations.

3. API Wait Time vs. Automated System Messages​

Administrators should also avoid confusing the newly supported API wait-time metric with the platform's built-in Automated messages feature in the Copilot Service admin center.

As detailed in Microsoft Learn’s automated message configuration documentation, the preconfigured triggers that automatically announce wait times in hours or minutes (Average wait time for customers: Hours, Hours and minutes, and Minutes) explicitly state that they apply to live chat and voice channels only. Meanwhile, the Estimate Wait Time Notification trigger designed for Messaging API channel instances supports the {QueuePosition} placeholder slug at a recurring interval, rather than automatically injecting the new AWT metric into system-generated text.

In short: if you want customers on a custom Messaging API channel to see their estimated wait time in minutes or seconds, your custom channel integration or Copilot Studio agent should retrieve that value from the representative availability APIs and format the message directly for the user.


The Bottom Line for Contact Center Admins​

By bringing custom messaging API channels into the average wait time fold (Roadmap ID 576780), Microsoft has closed an annoying telemetry gap in Dynamics 365 Contact Center. Because the feature is enabled automatically as of June 2026, there is no feature switch to hunt down in the admin center to turn the calculation on.

Instead, the action item sits squarely with your integration developers and Copilot Studio makers: audit your custom messaging workflows, ensure your Entra ID tokens and CCaaS_GetRepresentativeAvailability calls are inspecting AverageWaitTimeInSeconds, and put that real-time queue visibility to work before your customers are left wondering if anyone is on the other end of the line.

 

References

  1. Dynamics 365 Contact Center: Administrator experiences - Support average wait time in messaging API channels Microsoft 365 Roadmap 2026-10-16T19:08:59.199296Z
  2. Support average wait time in messaging API channels | Microsoft Learn learn.microsoft.com
  3. New and planned features for Dynamics 365 Contact Center, 2026 release wave 1 | Microsoft Learn learn.microsoft.com