Référence des événements webhook
Formats des charges utiles, en-têtes et définitions des champs pour chaque événement webhook.
Pourquoi c’est important
Chaque livraison de webhook encapsule les données spécifiques à l’événement dans la même enveloppe. Cette référence documente le format exact de la charge utile pour chaque événement afin que vous puissiez les analyser et les traiter en toute confiance.
Enveloppe de la charge utile
{
"event": "application.submitted",
"created_at": "2025-01-15T14:30:00Z",
"data": { }
}
| Champ | Type | Description |
|---|---|---|
event |
string | Le type d’événement qui a déclenché cette livraison |
created_at |
string | Horodatage ISO 8601 du moment où l’événement s’est produit |
data |
object | Charge utile spécifique à l’événement (varie selon le type d’événement) |
En-têtes de requête
Chaque requête webhook inclut les en-têtes suivants :
| En-tête | Exemple | Description |
|---|---|---|
Content-Type |
application/json |
Toujours JSON |
X-Webhook-Event |
application.submitted |
Le type d’événement |
X-Webhook-Signature |
a1b2c3d4... |
Condensé hexadécimal HMAC-SHA256 |
X-Webhook-Timestamp |
2025-01-15T14:30:00Z |
Horodatage ISO 8601 utilisé dans la signature |
User-Agent |
Kit-Webhooks/1.0 |
Identifie Kit comme l’expéditeur |
Consultez Sécurité et livraison des webhooks pour les détails sur la vérification de la signature.
Événements de candidature
Événements : application.submitted, application.rejected, application.advanced, application.withdrawn, application.offer_extended
{
"event": "application.submitted",
"created_at": "2025-01-15T14:30:00Z",
"data": {
"id": 42,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
},
"current_stage": "Applied",
"submitted_at": "2025-01-15T14:30:00Z",
"rejected": false,
"withdrawn": false,
"offered": false
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de la candidature |
candidate.id |
integer | Identifiant du candidat |
candidate.name |
string | Nom complet du candidat |
candidate.email |
string | Adresse e-mail du candidat |
job_posting.id |
integer | Identifiant de l’offre d’emploi |
job_posting.title |
string | Intitulé de l’offre d’emploi |
current_stage |
string | Nom de l’étape actuelle du pipeline |
submitted_at |
string | null | Horodatage ISO 8601 de la soumission |
rejected |
boolean | Indique si la candidature a été rejetée |
withdrawn |
boolean | Indique si le candidat s’est retiré |
offered |
boolean | Indique si une offre a été proposée |
Événements d’offre
Événements : offer.accepted, offer.declined, offer.candidate_accepted, offer.candidate_declined, offer.revised
offer.accepted/offer.declined— déclenchés lorsqu’un administrateur accepte ou décline une offreoffer.candidate_accepted/offer.candidate_declined— déclenchés lorsqu’un candidat répond à une offreoffer.revised— déclenché lorsqu’un administrateur révise l’offre avec de nouvelles conditions
{
"event": "offer.candidate_accepted",
"created_at": "2025-01-20T10:00:00Z",
"data": {
"id": 15,
"status": "candidate_accepted",
"details": "Senior Engineer — $150k base",
"extended_at": "2025-01-18T09:00:00Z",
"expires_at": "2025-01-25T23:59:59Z",
"accepted_at": null,
"declined_at": null,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de l’offre |
status |
string | L’une des valeurs suivantes : pending, accepted, declined, candidate_accepted, candidate_declined, expired |
details |
string | null | Texte détaillant l’offre |
extended_at |
string | null | Date à laquelle l’offre a été proposée |
expires_at |
string | null | Date d’expiration de l’offre |
accepted_at |
string | null | Date à laquelle l’offre a été acceptée par un administrateur |
declined_at |
string | null | Date à laquelle l’offre a été déclinée par un administrateur |
candidate |
object | Détails du candidat (même format que les événements de candidature) |
job_posting |
object | Détails de l’offre d’emploi (même format que les événements de candidature) |
Événements d’entretien
Événements : interview.scheduled, interview.confirmed, interview.completed, interview.cancelled, interview.no_show
{
"event": "interview.scheduled",
"created_at": "2025-01-16T09:00:00Z",
"data": {
"id": 28,
"status": "scheduled",
"scheduled_at": "2025-01-20T14:00:00Z",
"duration_minutes": 60,
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de l’entretien |
status |
string | Statut de l’entretien (scheduled, confirmed, completed, cancelled, no_show) |
scheduled_at |
string | null | Horodatage ISO 8601 de l’heure prévue |
duration_minutes |
integer | Durée de l’entretien en minutes |
candidate |
object | Détails du candidat |
job_posting |
object | Détails de l’offre d’emploi |
Événements d’exercice de code
Événements : code_assignment.submitted, code_assignment.auto_submitted
{
"event": "code_assignment.submitted",
"created_at": "2025-01-22T16:45:00Z",
"data": {
"id": 11,
"repo_url": "https://github.com/org/assignment-jane-smith",
"submitted_at": "2025-01-22T16:45:00Z",
"deadline_at": "2025-01-25T23:59:59Z",
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
}
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de la soumission de code |
repo_url |
string | URL du dépôt GitHub |
submitted_at |
string | null | Date de soumission de l’exercice |
deadline_at |
string | null | Date limite de l’exercice |
candidate |
object | Détails du candidat |
job_posting |
object | Détails de l’offre d’emploi |
Événements d’évaluation
Événements : review.submitted
{
"event": "review.submitted",
"created_at": "2025-01-23T11:00:00Z",
"data": {
"id": 9,
"recommendation": "strong_yes",
"reviewer": "Alex Johnson",
"candidate": {
"id": 7,
"name": "Jane Smith",
"email": "[email protected]"
},
"job_posting": {
"id": 3,
"title": "Senior Engineer"
},
"stage": "Technical Interview"
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de l’évaluation |
recommendation |
string | Recommandation de l’évaluateur |
reviewer |
string | Nom de l’évaluateur |
candidate |
object | Détails du candidat |
job_posting |
object | Détails de l’offre d’emploi |
stage |
string | Nom de l’étape du pipeline où l’évaluation a été soumise |
Événements d’offre d’emploi
Événements : job_posting.published, job_posting.paused, job_posting.closed, job_posting.reopened
{
"event": "job_posting.published",
"created_at": "2025-01-10T08:00:00Z",
"data": {
"id": 3,
"title": "Senior Engineer",
"status": "published",
"location": "Remote",
"department": "Engineering",
"employment_type": "Full-time",
"published_at": "2025-01-10T08:00:00Z",
"closed_at": null,
"public_url": "https://careers.example.com/senior-engineer"
}
}
| Champ | Type | Description |
|---|---|---|
id |
integer | Identifiant de l’offre d’emploi |
title |
string | Intitulé du poste |
status |
string | Statut actuel (published, paused, closed) |
location |
string | Lieu du poste |
department |
string | Nom du département |
employment_type |
string | Type de contrat (Full-time, Part-time, Contract, etc.) |
published_at |
string | null | Date de publication de l’offre |
closed_at |
string | null | Date de clôture de l’offre |
public_url |
string | URL publique de l’offre sur le portail carrières |
Événements Outreach
Événements : outreach.prospect.drafted, outreach.message.approved, outreach.message.sent, outreach.message.bounced, outreach.message.failed
Ces événements nécessitent le module complémentaire Outreach.
outreach.prospect.drafted
Déclenché lorsque l’IA termine la recherche sur un prospect et la rédaction d’un e-mail.
{
"event": "outreach.prospect.drafted",
"created_at": "2026-03-12T10:00:00Z",
"data": {
"id": "op_abc123",
"campaign_id": "oc_def456",
"company_name": "Acme Corp",
"display_name": "Jane Smith",
"status": "drafted"
}
}
| Champ | Type | Description |
|---|---|---|
id |
string | Identifiant préfixé du prospect |
campaign_id |
string | Identifiant préfixé de la campagne |
company_name |
string | Nom de l’entreprise du prospect |
display_name |
string | Nom d’affichage du prospect |
status |
string | Statut du prospect au moment de l’événement |
Remarque : l’adresse e-mail du prospect est exclue des charges utiles webhook (chiffrée au repos).
outreach.message.approved / sent / bounced / failed
Déclenché lorsqu’un message passe au statut approved, sent, bounced ou failed.
{
"event": "outreach.message.sent",
"created_at": "2026-03-12T10:15:00Z",
"data": {
"id": "om_ghi789",
"campaign_id": "oc_def456",
"prospect_id": "op_abc123",
"step_number": 1,
"subject": "Quick question about Acme's hiring workflow",
"status": "sent",
"sent_at": "2026-03-12T10:15:00Z",
"approved_at": "2026-03-12T09:30:00Z",
"retry_count": 0,
"last_error_code": null
}
}
| Champ | Type | Description |
|---|---|---|
id |
string | Identifiant préfixé du message |
campaign_id |
string | Identifiant préfixé de la campagne |
prospect_id |
string | Identifiant préfixé du prospect |
step_number |
integer | Numéro de l’étape dans la séquence (1 = initial, 2+ = relances) |
subject |
string | Objet de l’e-mail |
status |
string | L’une des valeurs suivantes : approved, sent, bounced, failed |
sent_at |
string | null | Date d’envoi de l’e-mail |
approved_at |
string | null | Date d’approbation du brouillon |
retry_count |
integer | Nombre de tentatives d’envoi effectuées |
last_error_code |
string | null | Code d’erreur SMTP (présent en cas de bounced/failed) |
Remarque : le corps de l’e-mail du message est exclu des charges utiles webhook (chiffré au repos).
Événements de test
Événements : test.ping
L’événement test.ping est envoyé lorsque vous cliquez sur Envoyer un ping de test dans les paramètres du webhook. Utilisez-le pour vérifier la connectivité de votre point de terminaison et la validation de la signature.
{
"event": "test.ping",
"created_at": "2025-01-15T14:30:00Z",
"data": {}
}