Webhooks
Los webhooks te permiten recibir notificaciones en tiempo real sobre eventos que ocurren en Salescaling. Cuando se produce un evento, Salescaling enviará una solicitud HTTP POST a la URL que hayas configurado.
Configuración de Webhooks
Para configurar un webhook, necesitas proporcionar:
Nombre del webhook
URL de destino
Tipo de evento a escuchar
Headers personalizados (opcional)
Descripción (opcional)
Tipos de Eventos
Actualmente soportamos los siguientes tipos de eventos:
1. Cambios en el Estado de Reuniones (meeting_status_changed
)
meeting_status_changed
)Este evento se dispara cuando hay cambios en el estado de una reunión. Los posibles estados son:
meeting_created
: Cuando se crea una nueva reuniónmeeting_deleted
: Cuando se elimina una reuniónmeeting_transcript_done
: Cuando se completa la transcripciónmeeting_summary_done
: Cuando se completa el resumenmeeting_video_done
: Cuando se completa el procesamiento del vídeomeeting_notes_done
: Cuando se completa el procesamiento de las notas
Payload
{
"meetingId": "string",
"status": "meeting_created" | "meeting_deleted" | "meeting_transcript_done" | "meeting_summary_done" | "meeting_video_done" | "meeting_notes_done"
}
Notas
El procesamiento del vídeo y del contenido de la reunión se realiza de forma paralela, por lo que el evento
meeting_video_done
se puede recibir antes del eventomeeting_summary_done
.Si se quiere saber cuando se completa el procesamiento del contenido de la reunión, se puede utilizar el evento
meeting_summary_done
.Si se quiere saber cuando se completa el procesamiento de las notas, se puede utilizar el evento
meeting_notes_done
.
2. Cambios en Notas de Reuniones (meeting_note_status_changed
)
meeting_note_status_changed
)Este evento se dispara cuando hay cambios en al menos una nota de una reunión. Los posibles estados son:
meeting_note_created
: Cuando se crea una nueva notameeting_note_deleted
: Cuando se elimina una notameeting_note_updated
: Cuando se actualiza una nota
Payload
{
"meetingNoteId": "string",
"status": "meeting_note_created" | "meeting_note_deleted" | "meeting_note_updated"
}
Notas
Este evento se dispara una vez por cada nota que se procese.
Al generarse notas de forma automática, se dispara este evento para cada nota generada.
3. Detección de Señales Comerciales (commercial_signal_detected
)
commercial_signal_detected
)Este evento se dispara cuando se detecta una señal comercial en una actividad. Las señales comerciales son indicadores importantes que pueden ayudar a identificar oportunidades o riesgos en las interacciones con clientes.
Payload
{
"code": "string",
"description": "string",
"contactId": "string",
"companyId": "string",
"activityType": "string",
"activityId": "string",
"evidence": ["string"],
"changeType": "string"
}
Campos
code
: Código de la señal comercial detectada. Los tipos disponibles son:Engagement & Intent:
buying_intent
: Intención de compra detectadainterest_in_trial
: Interés en realizar una pruebaopportunity_qualified
: Oportunidad calificadachampion_detected
: Detección de un campeón internogatekeeper_detected
: Detección de un guardiánfuture_meeting_scheduled
: Reunión futura programadadecision_timeline_mentioned
: Mencionada línea temporal de decisiónfollow_up_required
: Se requiere seguimientofollow_up_deadline_mentioned
: Mencionado plazo de seguimientomulti_department_involvement
: Involucrados múltiples departamentos
Pricing, Budget & Negotiation:
pricing_discussed
: Discusión sobre preciosbudget_blocker
: Bloqueo por presupuestobudget_discussed
: Discusión sobre presupuestodiscount_requested
: Solicitado descuentocontractual_concerns
: Preocupaciones contractualeslegal_process_discussed
: Discusión sobre proceso legalrenewal_discussed
: Discusión sobre renovaciónupsell_opportunity
: Oportunidad de upsellpilot_success
: Éxito del pilotopilot_failure
: Fracaso del piloto
Fit & Product:
product_fit_confirmed
: Confirmado ajuste del productousage_feedback_positive
: Feedback positivo de usousage_feedback_negative
: Feedback negativo de usotechnical_validation_passed
: Pasada validación técnicatechnical_blocker
: Bloqueo técnicointegration_concerns
: Preocupaciones sobre integracióntraining_requested
: Solicitado entrenamientofeature_request_made
: Solicitada nueva funcionalidadsecurity_concerns
: Preocupaciones de seguridadcompliance_concern
: Preocupación sobre cumplimiento
Competition:
competitor_mentioned
: Mencionado competidorcompetitor_comparison_favorable
: Comparación favorable con competidorcompetitor_comparison_unfavorable
: Comparación desfavorable con competidor
Risk & Churn:
churn_risk
: Riesgo de abandonono_decision_maker
: Sin tomador de decisionesinternal_disalignment
: Desalineación internaresistance_to_change
: Resistencia al cambioescalation_detected
: Detectada escaladalow_engagement
: Bajo compromisodeadline_blocker
: Bloqueo por plazo
Relationship & Communication:
positive_feedback_on_demo
: Feedback positivo en demonegative_feedback_on_demo
: Feedback negativo en demorapport_detected
: Detectado rapportmisalignment_on_goals
: Desalineación en objetivosclient_asks_many_questions
: Cliente hace muchas preguntasclient_confused_about_offering
: Cliente confundido sobre la ofertatone_aggressive
: Tono agresivotone_passive
: Tono pasivospeaker_dominates_conversation
: El hablante domina la conversaciónclient_drives_conversation
: El cliente dirige la conversación
description
: Descripción detallada de la señalcontactId
: ID del contacto relacionadocompanyId
: ID de la empresa relacionadacategory
: Categoría de la señal comercial. Los tipos disponibles son:positive
: Señal positivarisk
: Señal de riesgoneutral
: Señal neutral
activityType
: Tipo de actividad donde se detectó la señal. Los tipos disponibles son:meeting
: Reunióncall
: Llamadamail
: Correo electrónico
activityId
: ID de la actividad donde se detectó la señalevidence
: Array de evidencias textuales que soportan la detección de la señalchangeType
: Tipo de cambio que representa la señal. Los tipos disponibles son:new
: Nueva señal detectadaunchanged
: Señal sin cambiosescalated
: Señal escaladaimproved
: Señal mejoradarecovered
: Señal recuperada
Estructura de la Solicitud
Cada solicitud webhook incluye:
Headers:
Content-Type: application/json
Headers personalizados configurados
X-Webhook-Signature
: Firma para verificar la autenticidad (próximamente)
Body:
Definido según el tipo de evento
Mejores Prácticas
Verificación de Payload:
Implementa la verificación de la firma del webhook (Próximamente)
Manejo de Errores:
Responde con un código 2xx para confirmar la recepción
Implementa reintentos en caso de fallos
Mantén un registro de los eventos recibidos
Seguridad:
Utiliza HTTPS para tu endpoint
Implementa autenticación en tu endpoint, puedes especificar un token en las cabeceras de la solicitud
Valida los datos recibidos antes de procesarlos
Ejemplo de Implementación
app.post("/webhook", (req, res) => {
const { type, payload } = req.body;
switch (type) {
case "meeting_status_changed":
handleMeetingStatusChange(payload);
break;
case "meeting_note_status_changed":
handleMeetingNoteStatusChange(payload);
break;
}
res.status(200).send("OK");
});
Límites y Restricciones
Los webhooks tienen un tiempo de espera de 10 segundos
Se realizarán hasta 3 reintentos en caso de fallo
El tamaño máximo del payload es de 1MB
Soporte
Si necesitas ayuda con la implementación de webhooks o tienes preguntas sobre los eventos disponibles, contacta con nuestro equipo de soporte.
Última actualización