Skip to main content
A webhook is an HTTPS URL Assess calls when something happens. Your tool (n8n, Zapier, Make, or your backend) listens and reacts. no need to refresh the dashboard. Destinations (HTTPS, Slack, Teams) are the same Public API surface: /webhooks/: There is no separate /destinations/ path.

If you are recruiting / ops

You usually do not configure webhooks by hand. Instead:
  1. Ask engineering to register your automation URL, or
  2. Use the n8n Assess node, Zapier, or Make app. they register the webhook when the scenario/workflow is active, or
  3. Follow Automations for a custom catch hook
Useful events to ask for: Sample JSON for each event: Webhook events.

For engineers

Register an HTTPS endpoint. You receive a whsec_… 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 uses events (not event_types):
Store secret_key. Then:
HTTP 2xx on the test ping sets 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: Assess posts a formatted chat message (not the signed JSON envelope). HTTPS destinations still use whsec_… and X-Praxicraft-Signature. Failed deliveries can be resent from Developer → Events (filter Failed) or:

Signature

HMAC-SHA256 of the raw body with 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

Next

Webhook event samples · SDK verification · Slack · Teams · Integrations · Automations
Last modified on September 5, 2026