Webhook payload for Slack blocks on queue SLA breach

I’m trying to wire up a webhook in Genesys Cloud that triggers when a queue’s wait time SLA is breached. The goal is to push a formatted card into a Slack channel using the blocks API. The webhook fires fine-I can see the events in the event log-but the Slack integration is returning a 400 Bad Request because the payload structure is wrong. I’m using the default JSON template in the webhook configuration and trying to map the queue_name and wait_time_seconds fields. Here’s the JSON body I’m sending to the Slack chat.postMessage endpoint:

{
 "channel": "#alerts",
 "blocks": [
 {
 "type": "section",
 "text": {
 "type": "mrkdwn",
 "text": "*SLA Breach* in {{queue_name}}. Wait time: {{wait_time_seconds}}s"
 }
 }
 ]
}

The issue seems to be that {{queue_name}} isn’t resolving to the actual queue name from the event payload. I’ve checked the event schema for purecloud:queue:sla:breach and the field exists in the data object. Am I missing a prefix like data. before the variable? Or does the webhook transformation layer not support nested object access directly in the template string? I’ve tried {{data.queue_name}} but that just sends the literal string {{data.queue_name}} to Slack. Any idea how to correctly reference the nested fields in the webhook JSON body?

The QUEUE_STATISTICS event doesn’t send Slack blocks. It sends raw stats. You need to transform the payload. The docs for webhooks show you can use a template. Here is a C# snippet using HttpClient to build the correct Slack structure from the GC payload. You’ll need to host this as an Azure Function or similar.

var slackPayload = new {
 blocks = new[] {
 new { type = "section", text = new { type = "mrkdwn", text = $"Queue: {queueName} breached SLA" } }
 }
};
await client.PostAsJsonAsync(slackUrl, slackPayload);