Webhooks Overview
Send real-time notifications to external systems when hiring events happen.
Why It Matters
Webhooks push event data to your systems the moment something happens — a candidate applies, an interview is scheduled, a job posting goes live. Instead of polling an API, your integrations receive instant HTTP callbacks with the full event payload.
What You Need
- A Kit account with admin access
- An HTTPS endpoint that can receive POST requests
Setup
Navigate to Integrations > Webhooks, click New Webhook, and fill in:
| Field | Required | Description |
|---|---|---|
| URL | Yes | The HTTPS endpoint that will receive events |
| Description | No | A label to help you identify this webhook |
| Events | Yes | Which event types to subscribe to |
Select individual events or subscribe to entire categories. Click Create Webhook to save. Kit generates a signing secret you’ll use to verify payloads.
Available Events
Kit fires webhooks across six categories:
Application Events
| Event | Fires When |
|---|---|
application.submitted |
A candidate submits an application |
application.rejected |
An application is rejected |
application.advanced |
An application advances to the next stage |
application.withdrawn |
A candidate withdraws their application |
application.offer_extended |
An offer is extended to a candidate |
Offer Events
| Event | Fires When |
|---|---|
offer.accepted |
An admin accepts an offer |
offer.declined |
An admin declines an offer |
offer.candidate_accepted |
A candidate accepts an offer |
offer.candidate_declined |
A candidate declines an offer |
offer.revised |
An offer is revised with new terms |
Interview Events
| Event | Fires When |
|---|---|
interview.scheduled |
An interview is scheduled |
interview.confirmed |
A candidate confirms the interview |
interview.completed |
An interview is marked as completed |
interview.cancelled |
An interview is cancelled |
interview.no_show |
A candidate is marked as a no-show |
Code Assignment Events
| Event | Fires When |
|---|---|
code_assignment.submitted |
A candidate submits their code assignment |
code_assignment.auto_submitted |
A code assignment is auto-submitted at deadline |
Review Events
| Event | Fires When |
|---|---|
review.submitted |
A team member submits a review |
Job Posting Events
| Event | Fires When |
|---|---|
job_posting.published |
A job posting is published |
job_posting.paused |
A job posting is paused |
job_posting.closed |
A job posting is closed |
job_posting.reopened |
A job posting is reopened |
Managing Webhooks
Each webhook shows its status, subscribed events, and recent delivery history.
- Pause — Stop deliveries. Events that fire while paused are not queued.
- Resume — Re-enable a paused or auto-disabled webhook. Resets the failure counter.
- Edit — Change the URL, description, or subscribed events.
- Rotate Secret — Generate a new signing secret. Update your endpoint before rotating.
- Delete — Permanently remove the webhook and its delivery history.
Testing Your Endpoint
Click Send Test Ping on any webhook to send a test.ping event to your endpoint. Use it to verify connectivity and signature validation before subscribing to real events.
The Deliveries tab shows request headers, response status, and timing for each delivery attempt.
Quick Checklist
- Navigate to Integrations > Webhooks
- Add your HTTPS endpoint URL
- Select the events you want to receive
- Copy your signing secret
- Send a test ping to verify connectivity
- Implement signature verification in your endpoint
- Return a
2xxstatus code to acknowledge receipt