Developers
Webhooks
Signed events at your own URL when a status changes, an interview is booked, or feedback arrives.
Add an https endpoint under Integrations and choose the events. Use Send a test to check it.
Events
- candidate.created (a CV was uploaded, added from the CV inbox)
- candidate.status_changed
- candidate.hired (a candidate was marked hired; carries the full hire package: profile, offer, scores, interview feedback, notes, and status history)
- offer.accepted (a candidate signed their offer)
- offer.declined (a candidate declined their offer)
- form.submitted (a candidate answered a form you sent)
- interview.scheduled
- interview.feedback_submitted
- ranking.ready (an AI ranking of a job's candidates finished)
- job.filled
The request
POST https://your-url
webhook-id: <delivery id>
webhook-timestamp: <unix seconds>
webhook-signature: v1,<base64 HMAC-SHA256>
{ "id": "...", "type": "candidate.status_changed", "created": "2026-10-08T09:30:00Z",
"data": { "candidate_id": "...", "job_id": "...", "name": "...", "status": "shortlisted", "source": "app" } }Verify every request
Signatures follow the open Standard Webhooks scheme, so its libraries work with your signing secret (shown under Integrations). Reject a timestamp more than five minutes old, and use webhook-id to ignore repeats.
import { Webhook } from "standardwebhooks";
const wh = new Webhook(process.env.REZUMZ_WEBHOOK_SECRET);
const event = wh.verify(rawBody, headers); // throws if invalidDelivery
- Answer with any 2xx within 8 seconds. We don't follow redirects.
- A failed delivery is retried once a day, up to three more times. After 10 failures in a row the endpoint is paused; resume it under Integrations.
- You can replay any delivery from the recent-deliveries list.