Webhooks
Configura webhooks de Audeo para recibir eventos en tiempo real sobre reuniones, llamadas y actividad comercial.
Configura webhooks de Audeo para recibir eventos en tiempo real sobre reuniones, llamadas y actividad comercial.
Los webhooks te permiten recibir notificaciones en tiempo real sobre eventos que ocurren en Audeo. Cuando se produce un evento, Audeo enviará una solicitud HTTP POST a la URL que hayas configurado.
Para configurar un webhook, necesitas proporcionar:
Actualmente soportamos los siguientes tipos de eventos:
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{
"meetingId": "string",
"status": "meeting_created" | "meeting_deleted" | "meeting_transcript_done" | "meeting_summary_done" | "meeting_video_done" | "meeting_notes_done"
}
meeting_video_done se puede recibir antes del evento meeting_summary_done.meeting_summary_done.meeting_notes_done.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{
"meetingNoteId": "string",
"status": "meeting_note_created" | "meeting_note_deleted" | "meeting_note_updated"
}
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.
{
"code": "string",
"description": "string",
"contactId": "string",
"companyId": "string",
"activityType": "string",
"activityId": "string",
"evidence": ["string"],
"changeType": "string"
}
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 departamentosPricing, 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 pilotoFit & 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 cumplimientoCompetition:
competitor_mentioned: Mencionado competidorcompetitor_comparison_favorable: Comparación favorable con competidorcompetitor_comparison_unfavorable: Comparación desfavorable con competidorRisk & 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 plazoRelationship & 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óndescription: Descripción detallada de la señal
contactId: ID del contacto relacionado
companyId: ID de la empresa relacionada
category: Categoría de la señal comercial. Los tipos disponibles son:
positive: Señal positivarisk: Señal de riesgoneutral: Señal neutralactivityType: Tipo de actividad donde se detectó la señal. Los tipos disponibles son:
meeting: Reunióncall: Llamadamail: Correo electrónicoactivityId: ID de la actividad donde se detectó la señal
evidence: Array de evidencias textuales que soportan la detección de la señal
changeType: 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 recuperadabilling_*)Estos eventos se disparan cuando cambia el estado de la suscripción o expira un trial Growth.
billing.trial_expiredSe emite cuando un tenant completa el trial Growth de 14 días sin contratar un plan de pago y pasa automáticamente al plan Free.
{
"tenantId": "string",
"meetingCount": 0,
"maxMeetings": 10
}
maxMeetings refleja el límite del plan Free vigente.| Tipo | Descripción |
|---|---|
billing.payment_succeeded | Pago de suscripción procesado correctamente |
billing.payment_failed | Fallo en el cobro de una factura |
billing.subscription_activated | Suscripción activada tras checkout |
billing.subscription_cancelled | Suscripción cancelada (efectiva al final del periodo o inmediata) |
Cada solicitud webhook incluye:
Headers:
Content-Type: application/jsonX-Webhook-Signature: Firma para verificar la autenticidad (próximamente)Body:
Verificación de Payload:
Manejo de Errores:
Seguridad:
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");
});
Si necesitas ayuda con la implementación de webhooks o tienes preguntas sobre los eventos disponibles, contacta con nuestro equipo de soporte.