What this webhook is for
This webhook is sent for the server premium lifecycle.Event delivered
| Event | Meaning |
|---|---|
premium_purchase | A server premium purchase was successfully created. |
subscription.renewed | A recurring server premium order renewed successfully. |
subscription.expired | A recurring server premium order expired and should be deactivated. |
subscription.revoked | A server premium order was revoked (for example after chargeback/dispute). |
Headers
X-Webhook-Signature: HMAC SHA-256 signature of the exact JSON bodyContent-Type:application/json
Payload example
Lifecycle payload examples
subscription.renewed
subscription.expired
subscription.revoked
Signature verification
Example receiver
Production handling checklist
- Verify
X-Webhook-Signaturebefore processing any event. - Deduplicate by
orderIdplusevent. - Keep handler idempotent so retries do not double-apply entitlements.
- Persist
purchaseIdandorderIdfor reconciliation. - Treat
subscription.revokedas highest-priority entitlement removal. - Return 2xx quickly and move heavy work to async jobs.
Related docs
Vote Webhooks
Separate webhook flow for verified vote events.
Troubleshooting
Debug signature mismatches and duplicate deliveries.