Handling 5xx on Genesys Cloud Webhook POST to internal DLQ

We’ve got a hybrid setup in us-east-1 where Genesys Cloud pushes event webhooks to our internal Node.js service. The service occasionally throws a 503 during deployment, and Genesys Cloud retries for a bit before giving up. We want to catch those failed deliveries and push them to an SQS dead letter queue for manual retry later, but the standard webhook config doesn’t seem to expose a “failed” callback endpoint.

I’m trying to write a middleware that intercepts the POST, checks the response, and if it’s a 5xx, sends the payload to SQS. Here’s the rough logic:

app.post('/webhook', async (req, res) => {
 try {
 await processEvent(req.body);
 res.status(200).send();
 } catch (err) {
 // How do I signal Genesys that this failed permanently?
 await sqs.sendToDLQ(req.body);
 res.status(500).send();
 }
});

The issue is that Genesys Cloud seems to treat the 500 as a transient error and retries the same payload, creating a loop if our DLQ handler is also down.

  • Genesys Cloud Webhook configured with POST method
  • Internal service returns 500 on failure
  • Want to stop retries after first failure
  • Using Node.js Express

What’s the correct way to tell Genesys to stop retrying and let us handle the failure locally?