Skip to main content
Webhooks are automated messages sent from Qwoty when something happens in our system. They have a specific payload for each action they notify and are sent as HTTP POST requests to an HTTPS endpoint on your server. Webhooks help you integrate your application with Qwoty and react to events in real time.

Add a Webhook Endpoint

To start listening to webhook messages sent by Qwoty, go to your webhook settings in the dashboard, click Add Webhook, provide a public HTTPS URL you control, and select the event types you want to receive. You can add multiple endpoints if you want to segregate events by destination.

Event Types

Qwoty supports a variety of webhook event types for entities such as customers, quotes and more. When an event occurs, Qwoty sends a webhook POST to your endpoint with a JSON payload containing:
{
  "event_type": "<group>.<event>",
  "id": "UUID"
}

Consuming Webhooks

Webhook deliveries are always HTTPS POST requests containing a JSON body. Your endpoint should:
  1. Quickly return a 2xx success status before performing complex logic to avoid timeouts.
  2. Verify webhook signatures and timestamps to ensure authenticity and guard against replay attacks.

Best Practices

  • Idempotent processing: Guard against duplicate events by ensuring your handler logic can safely process the same event more than once.
  • Fetch latest entity state: Since events might be retried with outdated data, consider fetching the latest state of the related object after receiving a webhook.
  • Static IP whitelisting: If your webhook endpoint is behind a firewall, allow traffic from Qwoty’s webhook server IPs.

Managing Webhooks

Qwoty supports API operations to:
  • Create webhook endpoints
  • List webhook endpoints
  • Retrieve a specific webhook endpoint
  • Update webhook endpoints
  • Delete webhook endpoints

Event Delivery and Retry Schedule

When Qwoty attempts to deliver webhook events:
  • If your endpoint responds with a non-2xx status, Qwoty will retry delivery on a schedule (e.g., seconds, minutes, hours apart).
  • Event delivery is not guaranteed in strict order, so design your processing logic accordingly.