When a visitor opens a demo from one of your public launch links, SandyWP can call your own endpoint the moment that sandbox is ready. Use it to push the lead into your CRM, start an onboarding email, or record the demo in your own dashboard.
Set up the callback
Open Webhooks
Open the profile menu, select Account, and then choose the Webhooks tab.
Paste your callback URL
Enter the HTTPS endpoint SandyWP should POST to, leave Send demo launch events checked, and select Save webhook.
Store the signing secret
Copy the signing secret shown right after saving and add it to the receiving system. SandyWP shows it once and cannot show it again.
Select Send test to deliver a sample event immediately, without waiting for a visitor. The panel reports the result of the most recent delivery, so a failing endpoint is visible at a glance.
While you are still exploring, paste a throwaway URL from a service such as webhook.site to watch a real payload arrive, then swap in your own endpoint.
The same callback can be managed from the CLI with sandywp webhook set, or over HTTP with PUT /api/account/webhooks/demo-launches.
What you receive
SandyWP sends one event type, demo.ready, once the launched sandbox is ready to serve its URL. The email field is null when the launch link does not collect an email.
Every request carries these headers.
Deliveries time out after ten seconds. A failing endpoint is retried with backoff and becomes terminal after eight attempts.
Verify every request
Your callback URL is publicly reachable, so anyone who learns it could post fake events at it. That is what the signing secret is for: SandyWP signs each request with it, and your receiver recomputes the signature to confirm the request is genuine.
Three details are easy to get wrong: hash the raw body bytes before any JSON parsing, because re-serialized JSON will not match; the digest is base64url, not hex; and compare in constant time with timingSafeEqual rather than ===.
Keep the secret in the receiving system’s environment or secret manager, never in SandyWP and never in version control. If it is lost, select Rotate secret for a new value and update the receiver.
Operating notes
- Respond with a
2xx quickly and do slower work afterwards.
- Deduplicate on
idempotency-key, since retries reuse the same value.
- Clear Send demo launch events to pause delivery while working on the endpoint. The saved URL is retained.
Availability
Webhooks are available on every paid plan. In a shared Workspace, members need the integrations capability; the Workspace owner always holds it.
Create the launch link that produces these events in Templates, or manage the callback programmatically from the API Reference.