Webhooks

Webhooks send JSON notifications about SUQO events to a URL you control. Instead of polling SUQO to ask "did anything happen?", your own software gets a message the moment an event fires — useful for updating your systems, triggering emails, or reconciling your records automatically.

Writing the code that receives these? This page covers setting a webhook up in the dashboard. For payload shapes, request headers, retry behaviour and signature-verification examples in Python and Node, see Webhooks in the API reference.
Webhooks configuration page [ Screenshot — Webhooks configuration page ]

When to use webhooks

Reach for webhooks when another system needs to react to what happens on SUQO — for example, marking an order as paid in your own database, alerting your team on a failed checkout, or kicking off a fulfilment step. If you just want to see events, the dashboard already shows them; webhooks are for automating a reaction in code.

Available events

SUQO can notify you about these events. You can register one webhook per event; once every event has a webhook, the Add Webhook button is hidden.

EventFires when
Checkout Completed checkout.succeededA customer successfully completes checkout and payment goes through.
Checkout Failed checkout.failedA checkout attempt fails — for example, the payment is declined or abandoned.
Subscription Status Changed subscription.status_changedA subscription's status changes — for example, it becomes active, is cancelled, or expires. The notification names both the old and the new status.

How payment confirmation reaches you

When a customer pays through SUQO checkout, SUQO POSTs a JSON notification to your webhook endpoint with the outcome — so you never have to poll. Both cases are covered:

OutcomeEventWhat it means
Payment succeededcheckout.succeededPayment went through and the subscription is now active. Use this to mark the order paid, provision access, send your own confirmation, etc.
Payment failedcheckout.failedThe checkout was declined or abandoned. Use this to flag the attempt, notify the customer, or retry.

The notification carries the affected subscription so you can match it to your own records. Later lifecycle changes (renewal, cancellation, expiry) arrive as subscription.status_changed. Register a webhook for each outcome you care about, and always verify the signature before trusting the payload.

Adding a webhook

  1. Open Configuration → Webhooks.
  2. Click Add Webhook.
  3. Choose the Event you want to be notified about.
  4. Enter your Endpoint URL — the address SUQO should POST the notification to. It must start with https:// (plain http:// is rejected).
  5. Save. The new webhook appears in the list with the event name, the URL, and a JSON badge showing the payload format.

Editing a webhook

Open the menu on a webhook row and choose Edit. You can update the Endpoint URL, but the event is locked — to point a different event somewhere, delete this webhook and add a new one.

Testing a webhook

From the menu, choose Send Test. SUQO sends a sample event to your endpoint so you can confirm your server receives and parses it correctly before real events start arriving.

Deleting a webhook

From the menu, choose Delete and confirm. This can't be undone — once deleted, you'll no longer receive notifications for that event until you add the webhook again.

The signing secret

Every webhook you receive is signed with a signing secret (it looks like whsec_…). It's shown in its own card on the Webhooks page with a copy button. Your webhooks will be signed with this secret so your server can verify that a request genuinely came from SUQO and wasn't forged.

Copy the secret into your server's configuration and use it to validate the signature on each incoming request. There's no rotate/regenerate button in the dashboard — contact support if the secret is ever exposed.

For how the signature is computed, and copy-paste verification code, see Verifying the signature in the API reference.

Security: Always verify the signature against your signing secret before trusting a webhook's contents. Treat the endpoint URL as public but the signing secret as a password — never commit it to source control or paste it into screenshots or support tickets.