Skip to main content

Webhook Setup

Webhooks deliver Rabisu events (VPS provisioned, suspended, credit added, product changed) to your module instantly. This is far faster than polling and removes delay. The cron still remains as a fallback.

Receiver URL

The module includes a standalone webhook receiver:

https://<reseller-root>/modules/addons/rabisu/webhook.php

Step 1 — Register with Rabisu

Register this URL with the Rabisu Reseller API (POST /webhooks). Copy the returned secret — it is shown only once. Recommended subscription:

{
"url": "https://<reseller-root>/modules/addons/rabisu/webhook.php",
"event_types": ["service.*", "product.*", "credit.added"]
}

Step 2 — Enter the secret in the module

Paste the returned secret into Addon Modules > Rabisu > Configure > "Webhook Secret". The module verifies the signature of incoming requests with this secret.

Signature verification

Rabisu sends an X-Rabisu-Signature: sha256=<hmac> header on every request. The module verifies it against the raw body with HMAC-SHA256 in constant time. An invalid signature → 401 (Rabisu treats this as permanent and does not retry).

Handled events

EventWhat the module does
service.createdLinks service_id to the local record, sets status active, then writes IP + root password + hostname to the WHMCS service
service.suspended/unsuspended/terminatedUpdates the local service status
product.price_changedUpdates cost, queues a price-increase decision
product.stock_changedOpens/closes the product for ordering
product.disabledHides the product

Troubleshooting

  • No webhooks arriving → check the last webhook time and signature error counter in the sync health panel on the Reporting tab.
  • Rising signature errors → ensure the Webhook Secret in the addon matches the secret of the Rabisu registration (register a new endpoint on Rabisu if needed).
  • If an endpoint fails 5 times in a row, Rabisu auto-deactivates it; once fixed, reactivate it on Rabisu with PATCH /webhooks/{id}.