Logo StartupKit
PL
Integrations

Dokumentacja zdarzeń webhook

Struktura danych, nagłówki i definicje pól dla każdego zdarzenia webhook.

Dlaczego to ważne

Każde dostarczenie webhooka opakowuje dane specyficzne dla zdarzenia w ten sam format koperty. Niniejsza dokumentacja opisuje dokładną strukturę danych dla każdego zdarzenia, aby można było je parsować i obsługiwać z pełną pewnością.

Koperta danych

{
  "event": "application.submitted",
  "created_at": "2025-01-15T14:30:00Z",
  "data": { }
}
Pole Typ Opis
event string Typ zdarzenia, które wywołało to dostarczenie
created_at string Znacznik czasu ISO 8601 określający moment wystąpienia zdarzenia
data object Dane specyficzne dla zdarzenia (różnią się w zależności od typu zdarzenia)

Nagłówki żądania

Każde żądanie webhook zawiera następujące nagłówki:

Nagłówek Przykład Opis
Content-Type application/json Zawsze JSON
X-Webhook-Event application.submitted Typ zdarzenia
X-Webhook-Signature a1b2c3d4... Skrót HMAC-SHA256 w formacie szesnastkowym
X-Webhook-Timestamp 2025-01-15T14:30:00Z Znacznik czasu ISO 8601 używany w sygnaturze
User-Agent Kit-Webhooks/1.0 Identyfikuje Kit jako nadawcę

Szczegóły dotyczące weryfikacji sygnatury znajdują się w sekcji Bezpieczeństwo i dostarczanie webhooków.

Zdarzenia aplikacji

Zdarzenia: 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
  }
}
Pole Typ Opis
id integer Identyfikator aplikacji
candidate.id integer Identyfikator kandydata
candidate.name string Imię i nazwisko kandydata
candidate.email string Adres e-mail kandydata
job_posting.id integer Identyfikator ogłoszenia o pracę
job_posting.title string Tytuł ogłoszenia o pracę
current_stage string Nazwa bieżącego etapu w procesie rekrutacji
submitted_at string | null Znacznik czasu ISO 8601 złożenia aplikacji
rejected boolean Czy aplikacja została odrzucona
withdrawn boolean Czy kandydat wycofał aplikację
offered boolean Czy przedstawiono ofertę

Zdarzenia ofert

Zdarzenia: offer.accepted, offer.declined, offer.candidate_accepted, offer.candidate_declined, offer.revised

  • offer.accepted / offer.declined — wywoływane, gdy administrator akceptuje lub odrzuca ofertę
  • offer.candidate_accepted / offer.candidate_declined — wywoływane, gdy kandydat odpowiada na ofertę
  • offer.revised — wywoływane, gdy administrator zmienia warunki oferty
{
  "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"
    }
  }
}
Pole Typ Opis
id integer Identyfikator oferty
status string Jedna z wartości: pending, accepted, declined, candidate_accepted, candidate_declined, expired
details string | null Tekst szczegółowy oferty
extended_at string | null Kiedy oferta została przedstawiona
expires_at string | null Kiedy oferta wygasa
accepted_at string | null Kiedy oferta została zaakceptowana przez administratora
declined_at string | null Kiedy oferta została odrzucona przez administratora
candidate object Dane kandydata (taka sama struktura jak w zdarzeniach aplikacji)
job_posting object Dane ogłoszenia o pracę (taka sama struktura jak w zdarzeniach aplikacji)

Zdarzenia rozmów kwalifikacyjnych

Zdarzenia: 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"
    }
  }
}
Pole Typ Opis
id integer Identyfikator rozmowy kwalifikacyjnej
status string Status rozmowy (scheduled, confirmed, completed, cancelled, no_show)
scheduled_at string | null Znacznik czasu ISO 8601 zaplanowanego terminu
duration_minutes integer Czas trwania rozmowy w minutach
candidate object Dane kandydata
job_posting object Dane ogłoszenia o pracę

Zdarzenia zadań programistycznych

Zdarzenia: 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"
    }
  }
}
Pole Typ Opis
id integer Identyfikator przesłanego zadania
repo_url string Adres URL repozytorium GitHub
submitted_at string | null Kiedy zadanie zostało przesłane
deadline_at string | null Termin wykonania zadania
candidate object Dane kandydata
job_posting object Dane ogłoszenia o pracę

Zdarzenia ocen

Zdarzenia: 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"
  }
}
Pole Typ Opis
id integer Identyfikator oceny
recommendation string Rekomendacja recenzenta
reviewer string Imię i nazwisko recenzenta
candidate object Dane kandydata
job_posting object Dane ogłoszenia o pracę
stage string Nazwa etapu rekrutacji, na którym ocena została przesłana

Zdarzenia ogłoszeń o pracę

Zdarzenia: 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"
  }
}
Pole Typ Opis
id integer Identyfikator ogłoszenia o pracę
title string Tytuł stanowiska
status string Bieżący status (published, paused, closed)
location string Lokalizacja pracy
department string Nazwa działu
employment_type string Rodzaj zatrudnienia (Full-time, Part-time, Contract itd.)
published_at string | null Kiedy ogłoszenie zostało opublikowane
closed_at string | null Kiedy ogłoszenie zostało zamknięte
public_url string Publiczny adres URL ogłoszenia w portalu kariery

Zdarzenia Outreach

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

Te zdarzenia wymagają dodatku Outreach.

outreach.prospect.drafted

Wywoływane, gdy AI zakończy badanie prospekta i przygotowanie wersji roboczej wiadomości 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"
  }
}
Pole Typ Opis
id string Identyfikator prefiksowy prospekta
campaign_id string Identyfikator prefiksowy kampanii
company_name string Nazwa firmy prospekta
display_name string Wyświetlana nazwa prospekta
status string Status prospekta w momencie zdarzenia

Uwaga: Adres e-mail prospekta jest wykluczony z danych webhook (szyfrowany w bazie danych).

outreach.message.approved / sent / bounced / failed

Wywoływane, gdy wiadomość przechodzi do statusu approved, sent, bounced lub 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
  }
}
Pole Typ Opis
id string Identyfikator prefiksowy wiadomości
campaign_id string Identyfikator prefiksowy kampanii
prospect_id string Identyfikator prefiksowy prospekta
step_number integer Numer kroku sekwencji (1 = początkowy, 2+ = kontynuacje)
subject string Temat wiadomości e-mail
status string Jedna z wartości: approved, sent, bounced, failed
sent_at string | null Kiedy wiadomość e-mail została wysłana
approved_at string | null Kiedy wersja robocza została zatwierdzona
retry_count integer Liczba podjętych prób ponownego wysłania
last_error_code string | null Kod błędu SMTP (obecny przy statusie bounced/failed)

Uwaga: Treść wiadomości e-mail jest wykluczona z danych webhook (szyfrowana w bazie danych).

Zdarzenia testowe

Zdarzenia: test.ping

Zdarzenie test.ping jest wysyłane po kliknięciu przycisku Send Test Ping w ustawieniach webhooka. Służy do weryfikacji połączenia z endpointem oraz walidacji sygnatury.

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

Wpisz, aby wyszukać...