Genesys Cloud Webhook to Slack for Queue SLA Breach - Payload Formatting Issue

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?

The event payload doesn’t include SLA metrics directly, so you’re sending empty data. Check the docs: “Realtime stats contain handle time and wait time, not calculated percentages.” You need to calculate the SLA in Architect or a backend service before hitting Slack.