Genesys Cloud Webhook 5xx retry exhaustion and DLQ implementation

We’ve got a webhook subscription for conversation:created events hitting a Node.js endpoint. The logic is solid, but occasionally the DB connection pool locks up, causing the handler to timeout. Genesys Cloud sees a 504 and retries. After the retry limit, it drops the event. We’re losing data. The docs say it stops trying, but I don’t see a native DLQ endpoint in the API. I need to implement a custom retry mechanism or a dead letter queue.

Currently, the handler looks like this:

app.post('/webhooks/conversations', async (req, res) => {
 try {
 const events = req.body;
 await processEvents(events);
 res.status(200).send('OK');
 } catch (err) {
 // This 500 triggers Genesys retries, but eventually fails
 res.status(500).send('Internal Error');
 }
});

If I return 200 on error, Genesys considers it delivered and won’t retry. If I return 500, it retries until it gives up. I want to capture the failed events in our own queue (like SQS or RabbitMQ) for manual reprocessing or delayed retry.

Is there a way to configure the webhook subscription to send failed payloads to a secondary URL? Or do I have to handle the 500 in my code, store the payload in a DLQ, and then return 200 to Genesys to acknowledge receipt? That feels hacky because Genesys thinks it succeeded. I’ve checked the /api/v2/webhooks docs and don’t see a deadLetterQueueUrl parameter. How are others handling this without losing events during transient outages?