Skip to main content
Webhooks push events to your endpoint the moment they happen, so you do not have to poll. WPOS signs every delivery so you can prove it came from us. You set one endpoint per partner, either in the dashboard or with WPOS.

Set your endpoint

In the Partner Dashboard, open Settings, then set your webhook URL. WPOS generates a signing secret and shows it to you exactly once. Store it now: it is never shown again, and changing the URL rotates it. The endpoint must be an https:// URL.

Events

A WordPress site connected to one of your managed accounts.
An account’s balance crossed below ten percent of its plan’s monthly credits. Fires once per billing cycle, so you can top the account up in time.
A build job reached a terminal status. Fires on succeeded, failed, timeout, and cancelled, and carries the same result as the job poll.

The request

Every delivery is a POST to your URL with these headers: The body is { "event": "...", "timestamp": "...", "data": { ... } }.

Verify the signature

Always verify before you trust a delivery. Compute the HMAC over the raw body and compare it, in constant time, to the header.
Verify against the raw request body, not a re-serialized copy of the parsed JSON. If your framework parses the body before you see it, capture the raw bytes (for example Express’s express.json({ verify }) hook) so the HMAC matches.

Retries and delivery

WPOS expects a 2xx promptly. Deliveries time out after eight seconds. On any failure or non-2xx, WPOS retries twice: about one minute later, then about five minutes after that. After the third attempt the delivery is marked failed. Make your handler idempotent: identify the work by jobId or siteId and tolerate a repeat.

Debug deliveries

The Settings page in the dashboard shows a live log of recent deliveries with the event, attempt count, outcome, and the failure reason on any that did not land. Use it to confirm your endpoint is reachable and returning 2xx.

Next

API reference

Every endpoint, scope, error, and limit in one place.