Send SKUSavvy order, inventory, and shipment events to your own systems in real time, with signed, verifiable payloads.
A webhook sends a signed HTTP request to your own endpoint the moment something happens in SKUSavvy — a new order, a picked shipment, a completed cycle count. Use webhooks when your own systems need to react immediately, instead of repeatedly polling the API for changes.
Go to **Account > Webhooks** and click **Create**.
1) Enter the endpoint that will receive events — only the host and path, since SKUSavvy always delivers over https
2) Check every topic you want to subscribe to, grouped by record type: Vendor Order, Customer Order, Transfer Order, Qty Change, Notification, Vendor, Product, Variant
3) Click Create
You can have at most 3 subscriptions per topic. If you're already at the limit, delete an existing subscription for that topic before adding another.
A new webhook doesn't deliver events until it's verified. SKUSavvy posts to your endpoint with the header **X-Webhook-Verification: true** and a 6-digit code in the body — so verification itself arrives as a webhook-style request, not an email.
1) Enter the 6-digit code on the webhook's page and click Verify
2) Didn't get it? Click Resend Code
Every delivery is signed so you can confirm it actually came from SKUSavvy, not a spoofed request. Compute an HMAC-SHA256 hash of the raw request body using your webhook secret (shown on the Webhooks page), base64-encode it, and compare it to the **X-Savvy-Signature** header using a constant-time comparison.
Headers sent with every delivery: X-Savvy-Signature (the HMAC), X-Topic (e.g. QtyChange.Allocate), X-Webhook-Id, and X-Company-Id.
Respond with a 2xx status within 30 seconds — anything else counts as a failed delivery and queues a retry.
Topics use a Record.Action format, for example QtyChange.Allocate. Here's what triggers each one:
If your endpoint doesn't return a 2xx response, SKUSavvy retries up to 10 times, spacing out further after each failure: immediately, 1 minute, 10 minutes, 1 hour, 2 hours, 8 hours, 12 hours, 24 hours, 48 hours, then 1 week later. After the 10th attempt fails, the delivery is marked failed and isn't retried again.
Open a webhook's page and check the Deliveries table to see every attempt: topic, when it was created, when (or if) it delivered, attempt count, and the response status.
You can change a subscription's topics at any time, but not its endpoint — create a new subscription instead if the endpoint changes. Click Delete to remove a subscription entirely; there's no pause option, so deleting is also how you stop delivery.
Your webhook secret is shared across every subscription on your account and can't be rotated from the app — it's shown once on the Webhooks page for you to copy.