Fix webhook delivery errors
Updated 1 min read
On this page/ Signature doesn't match
Every delivery attempt is logged under Settings › Integrations › Webhooks › Deliveries, with the status code your endpoint returned. Find the code below.
| Response | Likely cause | Fix |
|---|---|---|
401 / 403 |
Your endpoint requires auth Relaypoint doesn't send | Verify the Relaypoint-Signature header instead |
404 |
The URL changed | Update the endpoint URL |
413 |
Your server limits request size | Allow bodies up to 1 MB |
5xx |
Your server crashed handling the event | Check your logs; replay once fixed |
| Timeout | Your endpoint took over 10 seconds | Respond first, process in the background |
Signature doesn't match
The most common cause is verifying a parsed body instead of the raw bytes. Frameworks often re-serialise JSON, which changes whitespace and key order.
// Express: keep the raw body for this route only
app.post('/hooks/relaypoint', express.raw({ type: 'application/json' }), (req, res) => {
if (!isValid(req.body, req.get('Relaypoint-Signature'), process.env.RELAYPOINT_SECRET)) {
return res.sendStatus(400);
}
res.sendStatus(204);
queue.add('relaypoint-event', JSON.parse(req.body));
});Was this page helpful?