Webhooks

Receive real-time HTTP callbacks for license events, product changes, and platform-wide admin activity.

Webhooks let your own infrastructure react instantly to events instead of polling the API. There are two levels:

  • Admin webhooks — platform-wide events such as logins, registrations, payments, and license checks. Configured by admins in Site Settings.
  • Product webhooks — events for a single product, such as license lifecycle changes and product updates. Configured by product owners on the product detail page.

Product webhooks

From any product detail page, open the Webhooks tab to add one or more HTTPS URLs. Each webhook can:

  • Choose which events to subscribe to, or subscribe to all events with *.
  • Set an optional secret used to sign deliveries.
  • Be enabled or disabled without deleting the configuration.

Product events

EventFired when
license.createdA new license is created for the product.
license.updatedA license is edited (status, expiry, feature flags, etc.).
license.activatedA license successfully checks in and creates or updates an activation.
license.revokedA license is revoked.
license.suspendedA license is suspended.
license.checkA license check is performed for the product.
product.updatedThe product's own settings are changed.
sub_product.created / sub_product.updated / sub_product.deletedSub-product changes.
preset.created / preset.updated / preset.deletedFeature-flag preset changes.

Payload shape

json
{
  "event": "license.created",
  "timestamp": "2026-07-16T12:34:56.789Z",
  "payload": {
    "license_id": "...",
    "product_id": "...",
    "key": "PL-XXXX-XXXX-XXXX-XXXX",
    "status": "active"
  }
}

Admin webhooks

Admins can set a single platform webhook URL in Admin → Settings. Admin events include:

EventFired when
admin.loginAn admin or seller logs in.
admin.activitySensitive admin actions (product/license/user mutations).
payment.received / payment.failedA platform payment completes or fails.
user.registeredA new user registers.
seller.registeredA user completes seller onboarding.
license.checkAny license check across the platform.
security.alertA security-relevant event such as repeated failed logins.

Signature verification

If a secret is configured, deliveries include:

http
X-Webhook-Event: license.created
X-Webhook-Signature: sha256=<hex>
Content-Type: application/json

Compute HMAC-SHA256 of the raw request body with your secret and compare it to the header value using a constant-time comparison. See the Account API for a code example.

Delivery behavior

  • Deliveries are fire-and-forget from the platform's perspective.
  • Timeouts are short (5 seconds) so webhooks never block user requests.
  • Failed deliveries are logged but not automatically retried.
  • Use HTTPS URLs only; plain HTTP URLs are rejected.

Best practices

  1. Always verify signatures and reject unsigned or mismatched payloads.
  2. Return a 2xx response quickly; defer heavy work to a background queue.
  3. Use a unique secret per webhook and rotate it periodically.
  4. Log webhook IDs or signatures so you can detect replayed payloads.