Webhook for queue SLA breach sending 403 to Slack

Trying to wire up a webhook that triggers on queue SLA breaches and pushes a message to Slack. I’ve got the endpoint URL set up in the Genesys Cloud admin console, pointing to a simple Lambda function that forwards the payload to Slack’s incoming webhook.

The issue is the 403 Forbidden I’m getting back from Slack. The docs for the Genesys Cloud webhook configuration state: “The webhook payload is sent as JSON with the content type application/json.”

Here’s the payload structure I’m seeing in the test run:

{
 "source": "queue",
 "action": "sla.breach",
 "data": {
 "queueId": "12345",
 "waitTime": 120
 }
}

The Lambda code is pretty standard:

def lambda_handler(event, context):
 response = requests.post(SLACK_WEBHOOK_URL, json=event)
 return {'statusCode': response.status_code}

Slack is returning a 403 with the message “invalid token”. I’ve double-checked the webhook URL and it’s correct. Is there something specific about the Genesys Cloud webhook headers that Slack is rejecting? The docs don’t mention any required authorization headers for outgoing webhooks.

Also, the event schema seems to match what’s expected. Not sure where the token mismatch is coming from. Could it be the Content-Type header? Slack expects application/json, which is what Genesys is sending.

Any ideas on what might be causing this?