/webhooks/: There is no separate /destinations/ path.
If you are recruiting / ops
You usually do not configure webhooks by hand. Instead:- Ask engineering to register your automation URL, or
- Use the n8n Assess node, Zapier, or Make app. they register the webhook when the scenario/workflow is active, or
- Follow Automations for a custom catch hook
Sample JSON for each event: Webhook events.
For engineers
Register an HTTPS endpoint. You receive awhsec_… secret once to verify X-Praxicraft-Signature.
Live destinations only receive live events. Create a separate destination in Test mode (or with a ct_test_ key) while you debug. test candidate.passed never hits a live URL. See Live and Test mode.
Endpoints
Create and verify
Body usesevents (not event_types):
secret_key. Then:
is_verified and is_active.
Slack or Teams (no HMAC)
For “candidate passed → hiring channel”, use a chat destination instead of a signed HTTPS URL:- Slack. Connect Slack or Incoming Webhook
- Microsoft Teams. Incoming Webhook connector
whsec_… and X-Praxicraft-Signature.
Failed deliveries can be resent from Developer → Events (filter Failed) or:
Signature
whsec_…. Helpers: SDK webhooks.
Debugging deliveries
Failed rows live in Developer → Events (filter Failed) and on each destination’s delivery log.GET /webhooks/{id}/deliveries/ now includes payload, last_error, response_status_code, and a truncated response_body.
Full event list
Every event name and a sample JSON body: Webhook events. Subscribe with any of:assessment.started, assessment.completed, candidate.passed, candidate.failed, candidate.violation, invitation.created, invitation.expired, pipeline.enrolled, pipeline.advanced, pipeline.completed, pipeline.rejected, pipeline.held, pipeline.unheld, interview.scheduled, interview.started, interview.completed, interview.cancelled, interview.no_show, interview.analysis_ready, webhook.test.
Delivery behaviour
- Retries on 5xx/timeout: up to 3 (~1m, 2m, 4m)
- 4xx = no retry
- Deduplicate with delivery
id/event_id