I’m trying to set up a webhook that triggers when a queue’s service level drops below our target. The goal is to send a formatted message to a specific Slack channel.
I’ve created the webhook in Genesys Cloud with the event routing.queue.stats:realtime. The subscription filter is set to:
{
"queueIds": ["my-queue-id-here"],
"intervalSeconds": 300
}
The payload structure I’m sending to Slack looks like this:
{
"text": "Alert: Queue SLA Breach",
"attachments": [
{
"color": "danger",
"fields": [
{
"title": "Queue Name",
"value": "{{queue.name}}",
"short": true
},
{
"title": "Service Level",
"value": "{{serviceLevel}}",
"short": true
}
]
}
]
}
The webhook fires correctly every 5 minutes. However, the Slack message comes through with the literal strings {{queue.name}} and {{serviceLevel}} instead of the actual values. The queue.name part seems to work if I map it directly in the webhook’s static payload, but serviceLevel is always empty or literal.
I’ve checked the event payload documentation, and the field seems to be serviceLevel. Am I missing a step in the webhook configuration to expose these dynamic fields? Or is there a different event type I should be using for SLA-specific alerts?
Here is the raw event payload I’m seeing in the webhook debug log:
{
"event": "routing.queue.stats:realtime",
"data": {
"queueId": "my-queue-id-here",
"name": "Support Tier 1",
"serviceLevel": 0.45,
"targetServiceLevel": 0.80
}
}
The serviceLevel value is clearly there. Why isn’t it mapping in the Slack payload?