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:

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

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

SDK verification · Slack · Teams · Integrations · Automations
Last modified on August 24, 2026