Achieving this "countdown" behavior in Genesys Cloud is a bit more complex than it seems, as the platform has specific behavior regarding the estimated wait time variable. There are two main approaches, each with its own advantages and disadvantages.
The most straightforward way-and the one recommended by the platform itself-is to use the "Play Estimated Wait Time" action. You can place it inside a loop that repeats every 30 seconds. The major benefit of this action is its intelligent "never increase" logic. This means that if the actual wait time increases (for example, due to priority calls), the system will never play a longer time than what was already announced, preventing customer frustration.
The key point is how Call.EstimatedWaitTime behaves inside a loop. Documentation and community insights indicate that if you create your own loop within the "InQueue" task, the value does not update automatically. To force an update, you have two options: The first is to add a "Play Estimated Wait Time" action configured with the NOT_SET expression to force an internal refresh of the variable without playing any audio to the customer. The second is to use a Data Action to call the queue's estimated wait time API (GET /api/v2/routing/queues/{queueId}/estimatedwaittime) on each iteration of your loop.
My suggestion is:
-
In your In-Queue flow, add a loop that repeats while the customer is still in the queue.
-
Inside the loop, place a "Wait" block (such as "Music on Hold" or "Play Audio") for the first 30 seconds.
-
Immediately after the wait, add the "Play Estimated Wait Time" action.
-
Keep the Estimated Wait Time (EWT) field with its default value, Call.EstimatedWaitTime.
-
Select a playback mode of your preference, such as Precise for the exact time, or Less Than for a more comfortable estimate.
-
To ensure the variable updates on each cycle, you can add an extra "Play Estimated Wait Time" action before the loop, configuring the EWT field with the NOT_SET expression (this will not play any audio but will force the value to refresh).
It's crucial to know that the Call.EstimatedWaitTime value should never be used for routing decisions (such as routing to a different queue based on time). The documentation itself warns that, because of the "never increase" logic, the value does not reflect real-time reality for that purpose-it is only intended to inform the customer. Additionally, some community members have reported that the NOT_SET technique didn't work in all cases, and it was necessary to use Call.EstimatedWaitTime itself to force the update. Be sure to test thoroughly in a staging environment.
I hope this helps you build your flow. If you have any further questions about implementation, the community is here to help.
------------------------------
Camila Meneghini
------------------------------