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, candidate_accepted, candidate_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": "pending",
    "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 (pending, 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

CSIRT-Meldungsereignisse

Ereignisse: csirt.report.submitted, csirt.report.triaged, csirt.report.validated, csirt.report.resolved, csirt.report.fix_verified, csirt.report.dismissed, csirt.report.informative, csirt.report.paid

Diese Ereignisse erfordern das CSIRT-Add-on (Bug-Bounty). Sie werden ausschließlich bei einer Statusänderung der Meldung ausgelöst – die Bewertung des Schweregrads, die Zuweisung an ein Teammitglied und die Genehmigung einer Prämie lassen den Status unverändert und senden keinen Webhook.

csirt.report.dismissed bedeutet, dass die Meldung zurückgewiesen wurde. csirt.report.informative bedeutet, dass sie gültig war, aber keinen Handlungsbedarf auslöste – und dafür durchaus ein freiwilliger Bonus gezahlt worden sein kann. Fassen Sie die beiden Fälle nicht zu einem gemeinsamen Zweig „abgeschlossen“ zusammen.

{
  "event": "csirt.report.submitted",
  "created_at": "2026-03-12T10:00:00Z",
  "data": {
    "id": "rpt_abc123",
    "vulnerability_type": "sql_injection",
    "severity_tier": "critical",
    "cvss_score": 9.8,
    "status": "submitted",
    "program_name": "Acme Security Program",
    "submitted_at": "2026-03-12T10:00:00Z"
  }
}
Feld Typ Beschreibung
id string Prefix-ID der Meldung
vulnerability_type string Gemeldete Schwachstellenkategorie
severity_tier string | null Bewerteter Schweregrad (vorhanden, sobald bewertet)
cvss_score number | null CVSS-Score (vorhanden, sobald bewertet)
status string Status der Meldung zum Ereigniszeitpunkt
program_name string Name des Bug-Bounty-Programms
submitted_at string | null Wann die Meldung eingereicht wurde

Hinweis: Titel und Beschreibung der Meldung sind von Webhook-Nutzlasten ausgeschlossen (verschlüsselt gespeichert).

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...