Logo StartupKit
ES
Integrations

Referencia de eventos de webhook

Estructuras de payload, encabezados y definiciones de campos para cada evento de webhook.

Por qué es importante

Cada entrega de webhook encapsula los datos específicos del evento en la misma envoltura. Esta referencia documenta la estructura exacta del payload para cada evento para que puedas analizarlos y actuar sobre ellos con confianza.

Envoltura del payload

{
  "event": "application.submitted",
  "created_at": "2025-01-15T14:30:00Z",
  "data": { }
}
Campo Tipo Descripción
event string El tipo de evento que activó esta entrega
created_at string Marca de tiempo ISO 8601 de cuándo ocurrió el evento
data object Payload específico del evento (varía según el tipo de evento)

Encabezados de solicitud

Cada solicitud de webhook incluye estos encabezados:

Encabezado Ejemplo Descripción
Content-Type application/json Siempre JSON
X-Webhook-Event application.submitted El tipo de evento
X-Webhook-Signature a1b2c3d4... Digest hexadecimal HMAC-SHA256
X-Webhook-Timestamp 2025-01-15T14:30:00Z Marca de tiempo ISO 8601 usada en la firma
User-Agent Kit-Webhooks/1.0 Identifica a Kit como el emisor

Consulta Seguridad y entrega de webhooks para ver los detalles de verificación de firmas.

Eventos de candidatura

Eventos: 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
  }
}
Campo Tipo Descripción
id integer ID de la candidatura
candidate.id integer ID del candidato
candidate.name string Nombre completo del candidato
candidate.email string Dirección de email del candidato
job_posting.id integer ID de la oferta de empleo
job_posting.title string Título de la oferta de empleo
current_stage string Nombre de la etapa actual del pipeline
submitted_at string | null Marca de tiempo ISO 8601 del envío
rejected boolean Si la candidatura ha sido rechazada
withdrawn boolean Si el candidato se ha retirado
offered boolean Si se ha extendido una oferta

Eventos de oferta

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

  • offer.accepted / offer.declined – se dispara cuando un administrador acepta o rechaza una oferta
  • offer.candidate_accepted / offer.candidate_declined – se dispara cuando un candidato responde a una oferta
  • offer.revised – se dispara cuando un administrador revisa la oferta con nuevas condiciones
{
  "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"
    }
  }
}
Campo Tipo Descripción
id integer ID de la oferta
status string Uno de: pending, accepted, declined, candidate_accepted, candidate_declined, expired
details string | null Texto de los detalles de la oferta
extended_at string | null Cuándo se extendió la oferta
expires_at string | null Cuándo expira la oferta
accepted_at string | null Cuándo un administrador aceptó la oferta
declined_at string | null Cuándo un administrador rechazó la oferta
candidate object Detalles del candidato (misma estructura que en los eventos de candidatura)
job_posting object Detalles de la oferta de empleo (misma estructura que en los eventos de candidatura)

Eventos de entrevista

Eventos: 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"
    }
  }
}
Campo Tipo Descripción
id integer ID de la entrevista
status string Estado de la entrevista (scheduled, confirmed, completed, cancelled, no_show)
scheduled_at string | null Marca de tiempo ISO 8601 de la hora programada
duration_minutes integer Duración de la entrevista en minutos
candidate object Detalles del candidato
job_posting object Detalles de la oferta de empleo

Eventos de ejercicio de código

Eventos: 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"
    }
  }
}
Campo Tipo Descripción
id integer ID del envío de código
repo_url string URL del repositorio de GitHub
submitted_at string | null Cuándo se envió el ejercicio
deadline_at string | null Fecha límite del ejercicio
candidate object Detalles del candidato
job_posting object Detalles de la oferta de empleo

Eventos de evaluación

Eventos: 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"
  }
}
Campo Tipo Descripción
id integer ID de la evaluación
recommendation string Recomendación del evaluador
reviewer string Nombre del evaluador
candidate object Detalles del candidato
job_posting object Detalles de la oferta de empleo
stage string Nombre de la etapa del pipeline donde se envió la evaluación

Eventos de oferta de empleo

Eventos: 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"
  }
}
Campo Tipo Descripción
id integer ID de la oferta de empleo
title string Título del puesto
status string Estado actual (published, paused, closed)
location string Ubicación del puesto
department string Nombre del departamento
employment_type string Tipo de empleo (Full-time, Part-time, Contract, etc.)
published_at string | null Cuándo se publicó la oferta
closed_at string | null Cuándo se cerró la oferta
public_url string URL pública del portal de empleo para esta oferta

Eventos de Outreach

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

Estos eventos requieren el complemento Outreach.

outreach.prospect.drafted

Se dispara cuando la IA termina de investigar a un prospecto y redactar un email.

{
  "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"
  }
}
Campo Tipo Descripción
id string ID con prefijo del prospecto
campaign_id string ID con prefijo de la campaña
company_name string Nombre de la empresa del prospecto
display_name string Nombre visible del prospecto
status string Estado del prospecto en el momento del evento

Nota: El email del prospecto se excluye de los payloads de webhook (cifrado en reposo).

outreach.message.approved / sent / bounced / failed

Se dispara cuando un mensaje pasa al estado approved, sent, bounced o 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
  }
}
Campo Tipo Descripción
id string ID con prefijo del mensaje
campaign_id string ID con prefijo de la campaña
prospect_id string ID con prefijo del prospecto
step_number integer Número del paso en la secuencia (1 = inicial, 2+ = seguimientos)
subject string Asunto del email
status string Uno de: approved, sent, bounced, failed
sent_at string | null Cuándo se envió el email
approved_at string | null Cuándo se aprobó el borrador
retry_count integer Número de reintentos de envío realizados
last_error_code string | null Código de error SMTP (presente en bounced/failed)

Nota: El cuerpo del email del mensaje se excluye de los payloads de webhook (cifrado en reposo).

Eventos de prueba

Eventos: test.ping

El evento test.ping se envía cuando haces clic en Send Test Ping en la configuración del webhook. Úsalo para verificar la conectividad del endpoint y la validación de firmas.

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

Escriba para buscar...