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.created
  • lead.updated
  • lead.stage_changed
  • lead.archived
  • proposal.created
  • proposal.sent
  • proposal.viewed
  • proposal.signed
  • payment.received
  • message.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?