IntegrationsAdvanced
9 min read
Updated 5 May 2025
Webhooks
Webhooks allow QuintaGo to send real-time HTTP POST requests to your own servers or third-party services whenever specific events occur. Use webhooks to build custom integrations, sync data to your data warehouse, or trigger serverless functions.
Registering a webhook
Go to Settings → Integrations → Webhooks → New endpoint. Provide:
- URL — your HTTPS endpoint (must return a 2xx status code)
- Events — which events to subscribe to
- Secret — used to sign the payload for verification
// Webhook endpoint example (Node.js / Express)
app.post('/quintago-webhook', express.raw({ type: 'application/json' }), (req, res) => {
const sig = req.headers['x-quintago-signature'];
const payload = req.body;
// Verify signature
const expected = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(payload)
.digest('hex');
if (sig !== `sha256=${expected}`) {
return res.status(401).send('Invalid signature');
}
const event = JSON.parse(payload);
console.log('Event received:', event.type, event.data);
res.sendStatus(200);
});Event types
lead.createdlead.updatedlead.stage_changedlead.archivedproposal.createdproposal.sentproposal.viewedproposal.signedpayment.receivedmessage.received
Payload structure
{
"id": "evt_01HXXXXXXXXXX",
"type": "lead.stage_changed",
"created": "2025-05-10T14:32:00Z",
"venue": "venue_01HXXXXXXXXXX",
"data": {
"lead": {
"id": "lead_01HXXXXXXXXXX",
"name": "Ana & Pedro Silva",
"email": "ana@example.com",
"phone": "+351912345678",
"stage": "proposal_sent",
"previousStage": "visit_booked",
"eventDate": "2025-10-15",
"guests": 120
}
}
}Retries and failure handling
QuintaGo retries failed webhook deliveries up to 5 times with exponential backoff (5s, 25s, 2m, 10m, 30m). An endpoint is automatically disabled after 100 consecutive failures. You can re-enable it and replay missed events from the webhook delivery log.
Tags:webhooksapireal-time
Was this article helpful?
Related articles