Help / Reseller program
Outbound webhooks
POST customer-lifecycle events to your own endpoint, signed with HMAC-SHA256.
Configure HTTPS endpoints under /dashboard/reseller/webhooks and we'll POST customer-lifecycle events to them. Useful for piping into your CRM, billing system, or notification rail.
Events
CUSTOMER_SIGNED_UP— new user signed up under your scopeORDER_PAID— a paid order finalized (includes wholesale + margin breakdown)SERVER_PROVISIONED— a server transitioned to ACTIVESERVER_SUSPENDED— server moved to SUSPENDED (dunning, manual, or terminate cascade)SERVER_TERMINATED— server moved to TERMINATEDTRIAL_ISSUED— you issued a trial serverTICKET_OPENED— a customer opened a support ticket under your queue
Subscribe to all events (leave the checklist empty when adding the endpoint) or a subset.
Signing + verification
Every POST carries three headers:
X-Vicifast-Event— the event typeX-Vicifast-Signature— HMAC-SHA256 hex of the body, using the secret we revealed when you created the endpointX-Vicifast-Delivery— a unique id; use it for idempotency on your side
Verify in Node:
const sig = crypto.createHmac('sha256', SECRET).update(body).digest('hex');
if (sig !== req.headers['x-vicifast-signature']) return res.status(401).end();Retries
If your endpoint doesn't return 2xx within 10 seconds we retry with exponential backoff: 1m, 5m, 30m, 2h, 12h, 24h, 48h, 72h. After 8 failed attempts the delivery is marked EXHAUSTED and dropped. Brief outages won't drop events; sustained ones will.
Lost the signing secret?
Delete the endpoint and add it again. We can't reveal the original secret after creation — it's sealed at rest.
Testing
The dashboard has a "Test" button on each endpoint that queues a synthetic CUSTOMER_SIGNED_UP event with test: true in the payload. Use it to verify your signature check end-to-end before going live.
Tags: reseller, webhooks, integrations