Logo StartupKit
DE

Webhook-Ereignis-Referenz

Nutzlaststrukturen, Header und Felddefinitionen für jedes Webhook-Ereignis.

Warum das zählt

Jede Webhook-Zustellung verpackt ereignisspezifische Daten in denselben Umschlag. Diese Referenz dokumentiert die exakte Nutzlaststruktur für jedes Ereignis, damit Sie sie zuverlässig parsen und verarbeiten können.

Nutzlast-Umschlag

{
  "event": "application.submitted",
  "created_at": "2025-01-15T14:30:00Z",
  "data": { }
}
Feld Typ Beschreibung
event string Der Ereignistyp, der diese Zustellung ausgelöst hat
created_at string ISO-8601-Zeitstempel des Ereigniszeitpunkts
data object Ereignisspezifische Nutzlast (variiert je nach Ereignistyp)

Request-Header

Jede Webhook-Anfrage enthält diese Header:

Header Beispiel Beschreibung
Content-Type application/json Immer JSON
X-Webhook-Event application.submitted Der Ereignistyp
X-Webhook-Signature a1b2c3d4... HMAC-SHA256-Hex-Digest
X-Webhook-Timestamp 2025-01-15T14:30:00Z In der Signatur verwendeter ISO-8601-Zeitstempel
User-Agent Kit-Webhooks/1.0 Weist Kit als Absender aus

Einzelheiten zur Signaturprüfung finden Sie unter Webhook-Sicherheit und -Zustellung.

Bewerbungs-Ereignisse

Ereignisse: application.submitted, application.rejected, application.rejection_reverted, 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
  }
}
Feld Typ Beschreibung
id integer Bewerbungs-ID
candidate.id integer Kandidaten-ID
candidate.name string Vollständiger Name der Kandidatin/des Kandidaten
candidate.email string E-Mail-Adresse der Kandidatin/des Kandidaten
job_posting.id integer ID der Stellenanzeige
job_posting.title string Titel der Stellenanzeige
current_stage string Name der aktuellen Pipeline-Phase
submitted_at string | null ISO-8601-Zeitstempel der Einreichung
rejected boolean Ob die Bewerbung abgelehnt wurde
withdrawn boolean Ob die Kandidatin/der Kandidat zurückgezogen hat
offered boolean Ob ein Angebot unterbreitet wurde

Angebots-Ereignisse

Ereignisse: offer.accepted, offer.declined

  • offer.accepted / offer.declined — werden ausgelöst, wenn ein Admin ein Angebot annimmt oder ablehnt
{
  "event": "offer.accepted",
  "created_at": "2025-01-20T10:00:00Z",
  "data": {
    "id": 15,
    "status": "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"
    }
  }
}
Feld Typ Beschreibung
id integer Angebots-ID
status string Einer von: pending, accepted, declined, expired
details string | null Text mit den Angebotsdetails
extended_at string | null Wann das Angebot unterbreitet wurde
expires_at string | null Wann das Angebot abläuft
accepted_at string | null Wann das Angebot von einem Admin angenommen wurde
declined_at string | null Wann das Angebot von einem Admin abgelehnt wurde
candidate object Kandidatendetails (gleiche Struktur wie bei Bewerbungs-Ereignissen)
job_posting object Details der Stellenanzeige (gleiche Struktur wie bei Bewerbungs-Ereignissen)

Interview-Ereignisse

Ereignisse: 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"
    }
  }
}
Feld Typ Beschreibung
id integer Interview-ID
status string Interview-Status (scheduled, confirmed, completed, cancelled, no_show)
scheduled_at string | null ISO-8601-Zeitstempel des angesetzten Termins
duration_minutes integer Interview-Dauer in Minuten
candidate object Kandidatendetails
job_posting object Details der Stellenanzeige

Code-Aufgaben-Ereignisse

Ereignisse: 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"
    }
  }
}
Feld Typ Beschreibung
id integer ID der Code-Einreichung
repo_url string URL des GitHub-Repositorys
submitted_at string | null Wann die Code-Aufgabe eingereicht wurde
deadline_at string | null Frist für die Code-Aufgabe
candidate object Kandidatendetails
job_posting object Details der Stellenanzeige

Bewertungs-Ereignisse

Ereignisse: 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"
  }
}
Feld Typ Beschreibung
id integer Bewertungs-ID
recommendation string Empfehlung der Prüferin/des Prüfers
reviewer string Name der Prüferin/des Prüfers
candidate object Kandidatendetails
job_posting object Details der Stellenanzeige
stage string Name der Pipeline-Phase, in der die Bewertung eingereicht wurde

Stellenanzeigen-Ereignisse

Ereignisse: 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"
  }
}
Feld Typ Beschreibung
id integer ID der Stellenanzeige
title string Stellentitel
status string Aktueller Status (published, paused, closed)
location string Standort der Stelle
department string Name der Abteilung
employment_type string Beschäftigungsart (Full-time, Part-time, Contract usw.)
published_at string | null Wann die Anzeige veröffentlicht wurde
closed_at string | null Wann die Anzeige geschlossen wurde
public_url string Öffentliche Karriereportal-URL für diese Anzeige

Outreach-Ereignisse

Ereignisse: outreach.prospect.drafted, outreach.message.approved, outreach.message.sent, outreach.message.bounced, outreach.message.failed

Diese Ereignisse erfordern das Outreach-Add-on.

outreach.prospect.drafted

Wird ausgelöst, sobald die KI die Recherche zu einem Kontakt und den Entwurf einer E-Mail abgeschlossen hat.

{
  "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"
  }
}
Feld Typ Beschreibung
id string Prefix-ID des Kontakts
campaign_id string Prefix-ID der Kampagne
company_name string Firmenname des Kontakts
display_name string Anzeigename des Kontakts
status string Status des Kontakts zum Ereigniszeitpunkt

Hinweis: Die E-Mail-Adresse des Kontakts ist von Webhook-Nutzlasten ausgeschlossen (verschlüsselt gespeichert).

outreach.message.approved / sent / bounced / failed

Wird ausgelöst, wenn eine Nachricht in den Status „approved“, „sent“, „bounced“ oder „failed“ übergeht.

{
  "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
  }
}
Feld Typ Beschreibung
id string Prefix-ID der Nachricht
campaign_id string Prefix-ID der Kampagne
prospect_id string Prefix-ID des Kontakts
step_number integer Nummer des Sequenzschritts (1 = Erstkontakt, 2+ = Folge-E-Mails)
subject string Betreffzeile der E-Mail
status string Einer von: approved, sent, bounced, failed
sent_at string | null Wann die E-Mail gesendet wurde
approved_at string | null Wann der Entwurf freigegeben wurde
retry_count integer Anzahl der unternommenen Sendeversuche
last_error_code string | null SMTP-Fehlercode (vorhanden bei bounced/failed)

Hinweis: Der E-Mail-Text der Nachricht ist von Webhook-Nutzlasten ausgeschlossen (verschlüsselt gespeichert).

Test-Ereignisse

Ereignisse: test.ping

Das Ereignis test.ping wird gesendet, wenn Sie in den Webhook-Einstellungen auf Test-Ping senden klicken. Verwenden Sie es, um die Erreichbarkeit des Endpunkts und die Signaturprüfung zu verifizieren.

{
  "event": "test.ping",
  "created_at": "2025-01-15T14:30:00Z",
  "data": {}
}

Suchbegriff eingeben...