Skip to main content

Conecte Heilo a su CRM

Ocho pasos para conectar Heilo con cualquier CRM: mediante Zapier, Make o cualquier otra herramienta que admita webhooks.

Tras cada llamada, Heilo envía una notificación con los detalles de la llamada a una dirección que usted elija. Esta guía muestra cómo conectar Heilo a cualquier CRM usando Zapier o Make, sin código, en 15-20 minutos.

Es una vía universal que funciona con cualquier CRM compatible con Zapier o Make. Las recetas paso a paso dedicadas para Pipedrive, HubSpot y Zoho CRM se incluyen más abajo. Las plantillas de un clic (Zapier/Make) están todavía en el roadmap — hasta entonces, cada receta le guía manualmente por el último paso (guardar en su CRM).

1Antes de empezar: qué exigen los planes de Zapier y Make

El disparador «Webhooks by Zapier» es una app premium y no funciona en el plan Free: Free da 100 tareas al mes y Zaps de dos pasos, es decir, un disparador y una acción. La receta de esta guía tiene al menos tres acciones tras el disparador, así que necesitas Professional o superior; Professional parte de 19,99 USD al mes con pago anual, o 29,99 USD con pago mensual, por 750 tareas. Solo una acción con éxito consume tarea: el disparador, Filter y Formatter no cuentan. Planes y precios de Zapier

Make no pone ninguna barrera de plan ante los webhooks: el módulo «Custom webhook» funciona también en el plan Free, que da hasta 1000 créditos al mes y dos escenarios activos. La unidad de facturación en Make es el crédito, no la operación; una ejecución de módulo es un crédito, y el módulo disparador también cuenta. No lo conviertas en un número de llamadas: tras el primer evento real, abre el historial del escenario y lee los créditos que consumió esa única ejecución. Planes y precios de Make

Comprobamos los precios y límites de los proveedores en sus propias páginas el 9 de septiembre de 2026. Cambian sin contar con nosotros, así que confírmalos en los enlaces de arriba antes de decidir.

2Cree un nuevo Zap en Zapier

El trigger «Webhooks by Zapier (Catch Hook)» genera una dirección a la que Heilo enviará los eventos.

  1. Inicie sesión en su panel de Zapier
  2. Create Zap → Choose Trigger → «Webhooks by Zapier»
  3. Event = «Catch Hook» → Continue
  4. Zapier muestra una dirección como https://hooks.zapier.com/hooks/catch/… — cópiela

3Pegue la dirección en Heilo como una suscripción de webhook

Heilo verifica la dirección: su endpoint de Zapier responde automáticamente. Tras la activación, cada llamada se envía a esta dirección.

  1. Vuelva a Ajustes → Integraciones en Heilo
  2. Haga clic en «Añadir suscripción»
  3. Pegue la dirección de Zapier en el campo «URL del endpoint», elija los tipos de evento (llamada completada + intento de llamada saliente) y haga clic en «Crear + handshake»
  4. El estado debería cambiar a «Activa». El secreto de firma se muestra una sola vez: guárdalo ahora, aunque de momento te quedes con la variante básica, porque sin él no podrás comprobar la firma más adelante

4Envía un evento de prueba desde Heilo

El evento de prueba lleva exactamente la estructura de una llamada completada real, así que el mapeo construido sobre él seguirá funcionando después. Una salvedad: el enlace de grabación de este evento es un ejemplo, no un archivo; abrirlo no demuestra que el audio real vaya a estar disponible.

  1. En Heilo, haga clic en el icono «Probar» junto a su suscripción
  2. El evento pasa por la misma cola de entrega que cualquier otro: si el receptor lo rechaza, lo verás en el historial de entregas de Heilo

5Lee la estructura completa de los datos

Zapier solo ofrece los campos que ha visto realmente. Por eso lees la estructura después de enviar la prueba y no antes: de lo contrario, la mitad de los campos no aparecerá en la lista.

  1. En Zapier vuelve al paso del disparador y ejecuta «Test trigger»
  2. Comprueba que ves los datos de la llamada: número, nombre, resumen y enlace a la grabación
  3. Continue → pasa al paso de acción (tu CRM)

6Configure el guardado en su CRM

En su herramienta (Zapier o Make) añada acciones para su CRM, por ejemplo Pipedrive, Zoho CRM, Notion o Airtable. En los flujos de ventas suelen ser tres pasos: (1) buscar o crear un contacto por número de teléfono, (2) crear o actualizar un lead/negocio, (3) adjuntar una actividad, tarea o nota.

Antes de publicar la automatización, pon un filtro en el campo event_type. Deja pasar el tipo de negocio elegido y rechaza webhook.test y la confirmación de dirección: sin eso, tus propias pruebas crearán registros en el CRM. Durante el mapeo puedes dejar pasar la prueba; antes de publicar tienes que cortarla. Dónde va exactamente el filtro en cada una de las tres recetas está en la sección de recetas más abajo.

Campo de HeiloMapear al CRM
data.call_idCampo de ID / referencia
data.customer_phone_e164Teléfono del contacto («Phone» / «Primary Phone»)
data.transcript_processed.caller_nameNombre del contacto (si Heilo lo detectó)
data.transcript_processed.summaryCuerpo de la nota o descripción de la actividad
data.transcript_processed.service_neededAsunto de la actividad o título del negocio
data.transcript_processed.subjectTítulo del lead/negocio (mejor alternativa para service_needed)
data.transcript_processed.lead_scorePrioridad, etiqueta o filtro de cualificación
data.transcript_processed.preferred_dateFecha de seguimiento o fecha prevista de cierre
data.transcript_processed.client_cityCampo de ciudad / dirección del contacto
data.transcript_processed.client_addressDirección postal del contacto
data.transcript_processed.services_matchSi la solicitud coincide con su oferta (true/false), para la cualificación
data.transcript_processed.additional_detailsDetalles adicionales de la llamada → nota / descripción
data.recording_urlUn campo de URL (p. ej. «Enlace de grabación»)
data.durationDuración de la actividad (en segundos)

El campo data.outbound_lifecycle aparece solo en los eventos call.outbound.attempted y call.failed; no está presente en call.completed.

7Publica la automatización

Hasta ahora todo ocurría en modo edición y nada reaccionaba a llamadas reales. Activa la automatización en tu herramienta: en Zapier publicas el Zap, en Make enciendes el escenario. Antes de hacerlo, asegúrate de que el filtro del paso anterior está guardado: publicar sin él significa que el siguiente evento de prueba también creará algo en el CRM.

8Comprueba una llamada real en tu CRM

El último paso no es una formalidad. Un evento de prueba demuestra que el cable está conectado, no que el registro haya llegado donde corresponde. Recibe o realiza una llamada real, espera a que termine y abre el contacto en tu CRM. Comprueba tres cosas: la actividad existe y hay exactamente una, lleva el Heilo Call ID, y el resumen coincide con lo que realmente se dijo. Solo eso es la aceptación de la integración.

Recetas para CRMs específicos

A continuación encontrará configuraciones específicas para cada CRM. El webhook genérico le proporciona los datos de la llamada; esta sección muestra cómo convertirlos en un contacto, un lead/negocio y una actividad en un CRM concreto.

Pipedrive: contacto + lead/negocio + actividad

Resultado objetivo: tras una llamada completada, Pipedrive busca o crea una persona, crea un lead/negocio de ventas y adjunta una actividad con el resumen y el enlace de la grabación.

Use Lead si las llamadas deben llegar primero a la Leads Inbox para cualificarlas. Use Deal si cada llamada cualificada debe entrar de inmediato en el pipeline.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Mantenga la suscripción de Heilo en modo permisivo.
  2. Filter by Zapier: permita event_type = call.completed; durante la configuración permita también webhook.test (o filtre por data._test = true).
  3. Pipedrive → Find or Create Person. Busque por Phone Numbers = data.customer_phone_e164 y establezca Person Name a partir de caller_name o del número de teléfono.
  4. Pipedrive → Search Activities por tu campo Heilo Call ID = data.call_id. Este paso decide si abajo actualizas o creas; sin él, un reintento añade una segunda actividad para la misma llamada.
  5. Actividad encontrada → Update Activity; sin resultado → Create Activity vinculada a la persona. En ambos casos escribe Heilo Call ID = data.call_id junto con summary, recording_url y transcript_original. Aquí no se crea ningún negocio: la regla para oportunidades está en su propia sección más abajo.
Make
  1. Trigger: Webhooks → Custom webhook. El escenario debe estar activo y ejecutarse cuando lleguen los datos.
  2. Añada un filtro después del webhook: event_type = call.completed; mientras mapea los datos de prueba, permita también webhook.test (o filtre por data._test = true).
  3. Pipedrive CRM → Search Persons por data.customer_phone_e164. Si no hay resultado, cree una Person con ese teléfono y caller_name o el número de teléfono como nombre.
  4. Pipedrive CRM → Search Activities por tu campo Heilo Call ID = data.call_id. Configura el escenario para procesar de uno en uno, para que dos ejecuciones paralelas no se crucen en esta búsqueda.
  5. Router: la actividad existe → Update an Activity; no existe → Create an Activity vinculada a la persona. Escribe Heilo Call ID = data.call_id, summary y recording_url. Esta receta no crea ninguna oportunidad.
Campo de HeiloCampo / acción de PipedriveUso
event_typeFilter / RouterProcese call.completed; use webhook.test solo para el mapeo de campos.
data.customer_phone_e164Person → Phone NumbersCampo principal para la búsqueda de contactos y la deduplicación.
data.transcript_processed.caller_namePerson → Person NameSi está vacío, use el número de teléfono como nombre alternativo seguro.
data.transcript_processed.subjectLead/Deal → TitleMejor título para la oportunidad; recurra a service_needed como alternativa.
data.transcript_processed.service_neededLead/Deal → Title o campo personalizadoCategoría de la consulta; útil para el enrutamiento del pipeline o las etiquetas.
data.transcript_processed.summaryActivity/Note → Note o Public DescriptionDescripción breve de la llamada visible en la oportunidad.
data.transcript_processed.lead_scoreLead label / priority / filterPor ejemplo, cree un lead/negocio solo a partir de 7/10 o envíe las puntuaciones más bajas a revisión.
data.transcript_processed.preferred_dateFecha prevista de cierre o fecha de vencimiento de la actividadÚselo cuando el cliente haya mencionado un plazo o una fecha de seguimiento preferida.
data.transcript_processed.client_cityPerson → Address (ciudad) o campo personalizadoCiudad del cliente; útil para la segmentación o un pipeline regional.
data.transcript_processed.client_addressPerson/Organization → AddressRellene la dirección de la persona/organización cuando la persona que llama la haya proporcionado.
data.transcript_processed.services_matchFilter / Lead labelfalse = solicitud fuera de su oferta; omita el negocio o márquelo para rechazo.
data.transcript_processed.additional_detailsActivity/Note → NoteDetalles adicionales de la llamada; añádalos al cuerpo de la actividad.
data.recording_urlActivity/Note → Recording linkEnlace de reproducción; puede dejar de funcionar tras eliminarse la llamada por la retención del RGPD.
data.call_idCustom field → Heilo Call IDClave de idempotencia. Evita un segundo registro en el CRM para la misma llamada.
data.durationActivity durationHeilo envía segundos; conviértalos si su campo de Pipedrive espera un formato de hora.

Condiciones para un emparejamiento correcto

  • No actives el modo estricto al confirmar la dirección: los webhooks de Zapier y Make acusan recibo pero no devuelven el campo challenge. Esto afecta solo a la confirmación puntual de la dirección, no a la firma de las entregas normales.
  • No mezcle tipos de evento sin un filtro: call.outbound.attempted no incluye la transcripción completa ni la grabación.
  • Crea en Pipedrive un campo propio Heilo Call ID y escribe ahí data.call_id. Es por él por lo que buscas antes de cada escritura: sin él no hay nada contra lo que deduplicar.
  • Número oculto o sin número: no crees una persona a partir de ese valor. Envía el evento a gestión manual, o todas esas llamadas acabarán en un único contacto ficticio.
HubSpot: contacto + negocio + nota

Resultado objetivo: tras una llamada completada, HubSpot busca o crea un contacto por número de teléfono, crea un negocio y registra una nota con el resumen y el enlace de la grabación.

Trampa de deduplicación: la acción Create or Update Contact de Zapier empareja los contactos existentes únicamente por correo electrónico. Los eventos de Heilo llevan un número de teléfono y a menudo no incluyen correo, por lo que esa acción crea un contacto duplicado en cada llamada. Busque siempre primero por la propiedad de teléfono y cree el contacto solo cuando la búsqueda no encuentre nada.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Mantenga la suscripción de Heilo en modo permisivo.
  2. Filter by Zapier: permita event_type = call.completed; durante la configuración permita también webhook.test (o filtre por data._test = true).
  3. HubSpot → Find Contact. Establezca la propiedad de búsqueda en Phone Number y asigne data.customer_phone_e164; active la opción de crear el contacto si no se encuentra nada, con caller_name o el número de teléfono como nombre. No use aquí Create or Update Contact: esa acción empareja por correo electrónico.
  4. HubSpot → Find Engagement por tu propiedad Heilo Call ID = data.call_id. No actives aquí «crear si no existe»: eso lo decide el paso siguiente.
  5. Nota encontrada → actualízala; sin resultado → Create Engagement (tipo Note) asociada al contacto. Escribe Heilo Call ID = data.call_id junto con summary, recording_url y transcript_original. Create Deal no forma parte de la receta por defecto.
Make
  1. Trigger: Webhooks → Custom webhook. El escenario debe estar activo y ejecutarse cuando lleguen los datos.
  2. Añada un filtro después del webhook: event_type = call.completed; mientras mapea los datos de prueba, permita también webhook.test (o filtre por data._test = true).
  3. HubSpot CRM → Search for Contacts por la propiedad de teléfono = data.customer_phone_e164. Si no hay resultado, cree el contacto con Create a Contact (ese teléfono más caller_name o el número como nombre).
  4. HubSpot CRM → Search for Engagements por la propiedad Heilo Call ID = data.call_id. Configura el escenario para procesar de uno en uno.
  5. Router: la nota existe → actualízala; no existe → Create an Engagement (tipo Note) asociada al contacto. Escribe Heilo Call ID = data.call_id, summary y recording_url. Esta receta no crea ningún negocio.
Campo de HeiloCampo / acción de HubSpotUso
event_typeFilter / RouterProcese call.completed; use webhook.test solo para el mapeo de campos.
data.customer_phone_e164Contact → Phone NumberClave principal de búsqueda. Guarde los teléfonos en HubSpot en formato E.164: la búsqueda por teléfono compara valores exactos, no variantes de formato.
data.transcript_processed.caller_nameContact → First Name / Last NameSi está vacío, use el número de teléfono como nombre alternativo seguro.
data.transcript_processed.subjectDeal → Deal NameMejor título para la oportunidad; recurra a service_needed como alternativa.
data.transcript_processed.service_neededDeal → Deal Name o propiedad personalizadaCategoría de la consulta; útil para el enrutamiento del pipeline o las etiquetas.
data.transcript_processed.summaryNote → Note bodyDescripción breve de la llamada visible en la oportunidad.
data.transcript_processed.lead_scoreCustom property / filterPor ejemplo, cree un lead/negocio solo a partir de 7/10 o envíe las puntuaciones más bajas a revisión.
data.transcript_processed.preferred_dateDeal → Close Date o fecha de vencimiento de la tareaÚselo cuando el cliente haya mencionado un plazo o una fecha de seguimiento preferida.
data.transcript_processed.client_cityContact → CityCiudad del cliente; útil para la segmentación o un pipeline regional.
data.transcript_processed.client_addressContact → Street AddressRellene la dirección de la persona/organización cuando la persona que llama la haya proporcionado.
data.transcript_processed.services_matchFilter / deal tagfalse = solicitud fuera de su oferta; omita el negocio o márquelo para rechazo.
data.transcript_processed.additional_detailsNote → Note bodyDetalles adicionales de la llamada; añádalos al cuerpo de la actividad.
data.recording_urlNote → Recording linkEnlace de reproducción; puede dejar de funcionar tras eliminarse la llamada por la retención del RGPD.
data.call_idCustom property → Heilo Call IDClave de idempotencia. Evita un segundo registro en el CRM para la misma llamada.
data.durationPropiedad personalizada o notaHeilo envía segundos; conviértalos si su propiedad de HubSpot espera otro formato.

Condiciones para un emparejamiento correcto

  • No actives el modo estricto al confirmar la dirección: los webhooks de Zapier y Make acusan recibo pero no devuelven el campo challenge. Esto afecta solo a la confirmación puntual de la dirección, no a la firma de las entregas normales.
  • No mezcle tipos de evento sin un filtro: call.outbound.attempted no incluye la transcripción completa ni la grabación.
  • No confíe en Create or Update Contact para el emparejamiento: esa acción deduplica únicamente por correo electrónico; ejecute siempre primero la búsqueda por teléfono.
  • Añada una propiedad personalizada de HubSpot llamada Heilo Call ID (texto de una línea) y almacene allí data.call_id para evitar duplicados.
  • Número oculto o sin número: no crees una persona a partir de ese valor. Envía el evento a gestión manual, o todas esas llamadas acabarán en un único contacto ficticio.
Zoho CRM: contacto + negocio + nota

Resultado objetivo: tras una llamada completada, Zoho CRM busca o crea un contacto por número de teléfono, crea un negocio y adjunta una nota con el resumen y el enlace de la grabación.

Busque los contactos por el campo Phone (o Mobile, si guarda ahí los números). Heilo envía data.customer_phone_e164 en formato E.164: mantenga los números de Zoho en el mismo formato o la búsqueda no encontrará nada.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Mantenga la suscripción de Heilo en modo permisivo.
  2. Filter by Zapier: permita event_type = call.completed; durante la configuración permita también webhook.test (o filtre por data._test = true).
  3. Zoho CRM → Find Module Entry en el módulo Contacts, buscando por el campo Phone = data.customer_phone_e164; active la opción de crear la entrada si no se encuentra nada. Zoho exige Last Name: use caller_name o el número de teléfono.
  4. Zoho CRM → Find Module Entry en el módulo Notes, buscando por tu campo Heilo Call ID = data.call_id. No actives «crear si no existe».
  5. Nota encontrada → actualiza Note Content; sin resultado → Create Module Entry en el módulo Notes, relacionada con el contacto. Escribe Heilo Call ID = data.call_id junto con summary, recording_url y transcript_original. La receta por defecto no toca el módulo Deals.
Make
  1. Trigger: Webhooks → Custom webhook. El escenario debe estar activo y ejecutarse cuando lleguen los datos.
  2. Añada un filtro después del webhook: event_type = call.completed; mientras mapea los datos de prueba, permita también webhook.test (o filtre por data._test = true).
  3. Zoho CRM → Search Objects en el módulo Contacts con el criterio Phone = data.customer_phone_e164. Si no hay resultado, cree el contacto con Create an Object (Last Name a partir de caller_name o del número).
  4. Zoho CRM → Search Objects en el módulo Notes con el criterio Heilo Call ID = data.call_id. Configura el escenario para procesar de uno en uno.
  5. Router: la nota existe → actualízala; no existe → Create an Object en el módulo Notes, relacionada con el contacto. Escribe Heilo Call ID = data.call_id, summary y recording_url. Esta receta no crea ninguna oportunidad.
Campo de HeiloCampo / acción de Zoho CRMUso
event_typeFilter / RouterProcese call.completed; use webhook.test solo para el mapeo de campos.
data.customer_phone_e164Contact → PhoneClave principal de búsqueda. Busque por el campo Phone (o Mobile) y mantenga un único formato de número en ambos lados: la búsqueda compara valores exactos.
data.transcript_processed.caller_nameContact → Last NameZoho exige Last Name; si caller_name está vacío, use el número de teléfono como nombre alternativo seguro.
data.transcript_processed.subjectDeal → Deal NameMejor título para la oportunidad; recurra a service_needed como alternativa.
data.transcript_processed.service_neededDeal → Deal Name o campo personalizadoCategoría de la consulta; útil para el enrutamiento del pipeline o las etiquetas.
data.transcript_processed.summaryNote → Note ContentDescripción breve de la llamada visible en la oportunidad.
data.transcript_processed.lead_scoreCustom field / filterPor ejemplo, cree un lead/negocio solo a partir de 7/10 o envíe las puntuaciones más bajas a revisión.
data.transcript_processed.preferred_dateDeal → Closing Date o fecha de vencimiento de la tareaÚselo cuando el cliente haya mencionado un plazo o una fecha de seguimiento preferida.
data.transcript_processed.client_cityContact → Mailing CityCiudad del cliente; útil para la segmentación o un pipeline regional.
data.transcript_processed.client_addressContact → Mailing StreetRellene la dirección de la persona/organización cuando la persona que llama la haya proporcionado.
data.transcript_processed.services_matchFilter / tagfalse = solicitud fuera de su oferta; omita el negocio o márquelo para rechazo.
data.transcript_processed.additional_detailsNote → Note ContentDetalles adicionales de la llamada; añádalos al cuerpo de la actividad.
data.recording_urlNote → Note Content (enlace)Enlace de reproducción; puede dejar de funcionar tras eliminarse la llamada por la retención del RGPD.
data.call_idCustom field → Heilo Call IDClave de idempotencia. Evita un segundo registro en el CRM para la misma llamada.
data.durationCampo personalizado o notaHeilo envía segundos; conviértalos si su campo de Zoho CRM espera otro formato.

Condiciones para un emparejamiento correcto

  • No actives el modo estricto al confirmar la dirección: los webhooks de Zapier y Make acusan recibo pero no devuelven el campo challenge. Esto afecta solo a la confirmación puntual de la dirección, no a la firma de las entregas normales.
  • No mezcle tipos de evento sin un filtro: call.outbound.attempted no incluye la transcripción completa ni la grabación.
  • Añada un campo personalizado de Zoho CRM llamado Heilo Call ID y almacene allí data.call_id para evitar duplicados.
  • Zoho rechaza los registros a los que les faltan campos obligatorios: Contacts necesita Last Name y Deals al menos Deal Name y Stage (según el diseño, también Closing Date); asigne alternativas seguras para cada uno.
  • Número oculto o sin número: no crees una persona a partir de ese valor. Envía el evento a gestión manual, o todas esas llamadas acabarán en un único contacto ficticio.

Tres claves distintas: no las mezcles

event_id identifica una notificación concreta. La misma llamada puede enviar varias notificaciones, y la misma notificación puede llegar dos veces en un reintento. Guarda event_id para reconocer una repetición.

call_id identifica la conversación, es decir, la actividad en tu CRM. Una llamada es una actividad, sin importar cuántas notificaciones hayan llegado sobre ella. Esta es la clave por la que buscas antes de escribir.

El número de teléfono, o el id de contacto en tu CRM, identifica a la persona. Atención a tres casos: un número oculto llega como un valor literal, no como número; puede no haber número alguno; y dos contactos pueden coincidir con un mismo número. En ninguno de ellos crees un contacto a partir de ese valor: envía el evento a gestión manual, o todas las llamadas con número oculto acabarán en un único contacto ficticio.

Una oportunidad de venta: una adición deliberada, no un paso por defecto

La receta por defecto no crea una oportunidad de venta, porque no toda llamada lo es y un «crear negocio» incondicional entierra el embudo bajo un negocio por llamada. Si quieres crearlas, hazlo con una regla: busca primero una oportunidad abierta para ese contacto y adjunta la actividad a ella; crea una nueva solo si no hay ninguna. Cuando encajen varias oportunidades abiertas, no adivines: adjunta la actividad al contacto y deja la elección a una persona.

Repeticiones, fallos parciales y resultados desconocidos

Heilo reintenta una entrega fallida cinco veces, con intervalos de 2 minutos, 5 minutos, 30 minutos y 2 horas. No garantizamos el orden: un evento de grabación puede llegar antes que el de llamada completada. La receta debe soportarlo en lugar de suponer que lo primero enviado llegó primero.

La deduplicación debe cubrir cada llamada que crea un registro, no solo la primera. El esquema «comprueba una marca, crea, escribe la marca» no basta: dos ejecuciones en paralelo leen la marca antes de que ninguna la escriba, y acabas con dos registros. Si tu CRM tiene una clave única o un upsert por Heilo Call ID, úsalo. Si no, configura el escenario para procesar de uno en uno y busca antes de cada escritura.

Un tiempo de espera agotado tras enviar una petición que crea un registro no significa que el registro no se creara: significa que no lo sabes. No reintentes la creación. Lee primero el estado por Heilo Call ID y decide a partir de ahí. Lo mismo vale para un fallo a medias: si el contacto se creó y la nota no, el reintento debe añadir la nota, no un segundo contacto.

Estructura completa de datos (referencia)

Cada notificación tiene la misma estructura. Los campos dentro de «data» dependen del tipo de evento: una llamada completada, por ejemplo, incluye la transcripción procesada. Heilo firma cada entrega con la cabecera Heilo-Signature (HMAC-SHA256 sobre el cuerpo bruto de la petición), pero una firma no sirve de nada hasta que el receptor la comprueba. El Catch Hook de Zapier y el Custom webhook de Make aceptan la petición sin comprobarla; qué significa eso en la práctica está en la sección sobre las dos variantes de seguridad.

{
  "api_version": "2026-06-15",
  "event_id": "<uuid>",
  "event_type": "call.completed",
  "resource_id": "<call_id>",
  "created_at": "2026-06-03T12:34:56Z",
  "data": {
    "call_id": "...",
    "direction": "inbound",
    "caller_phone": "+48600100200",
    "customer_phone_e164": "+48600100200",
    "customer_phone_national": "600 100 200",
    "company_phone_e164": "+48222630000",
    "call_created_at": "2026-06-03T12:30:11Z",
    "app_url": "https://www.heilo.io/calls/3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "duration": 87,
    "recording_url": "https://heilo.io/api/v1/calls/.../recording.mp3?token=...",
    "transcript_processed": {
      "caller_name": "Jan Kowalski",
      "client_address": "ul. Przykladowa 10",
      "client_city": "Warszawa",
      "summary": "...",
      "service_needed": "Tynki gipsowe w mieszkaniu 65m2",
      "subject": "Wycena tynkow - Warszawa, 65m2",
      "lead_score": 7,
      "preferred_date": "2026-06-10",
      "services_match": true,
      "additional_details": "Klient wspomnial o terminie do konca czerwca."
    },
    "transcript_original": "..."
  }
}

Problemas frecuentes

La verificación (handshake) falló tras añadir la suscripción
Su dirección no se confirmó en 10 segundos. En Zapier esto ocurre automáticamente; en Make el escenario debe estar activado (y en modo estricto también necesita un módulo «Webhook response»). Compruebe también que la dirección no tenga espacios ni caracteres «&», corríjala y luego haga clic en «Volver a verificar» en la suscripción pausada.
Se están creando contactos duplicados en mi CRM
Las herramientas de conexión no normalizan los formatos de teléfono: «+48 600 100 200» y «+48600100200» parecen dos números distintos. Heilo ya envía el número en formato E.164 (el campo customer_phone_e164), así que use ese para buscar el contacto. En Zapier también puede añadir un paso «Formatter → Phone Number → E.164» antes de la búsqueda.
El enlace de la grabación deja de funcionar al cabo de un tiempo
Un enlace a la grabación es válido 7 días desde que se generó y puede dejar de funcionar antes. Un token caducado responde 403; una grabación borrada responde 410. Reenviar el mismo evento no renueva el enlace, porque lleva la misma dirección. Si necesitas la grabación más tarde, abre la llamada en Heilo tras iniciar sesión. Si copias el archivo a tu CRM, gestiona también los eventos call.deletion_scheduled y call.recording.deleted: que el enlace caduque no borra la copia que ya tienes.
Un mensaje sobre la superación del límite de operaciones
Una llamada de Heilo suele ser unos pocos pasos en la herramienta: buscar el contacto, crear o actualizar una actividad. No lo conviertas en un número universal de llamadas: tras el primer evento real, abre el historial de tu Zap o escenario y lee cuántas tareas o créditos consumió esa única ejecución. Eso es lo que costará cada llamada siguiente en tu caso.

Roadmap (v1.1+)

Lo que tenemos previsto para próximas versiones. Esta lista no es una garantía: las prioridades dependen de sus comentarios.

  • Recetas dedicadas para más CRMs: Salesforce, Bitrix24, Livespace
  • Plantillas de un clic (Zapier/Make) para los CRMs más populares
  • Reglas de deduplicación y de mapeo de campos listas para copiar y pegar
  • Más tipos de evento que mapear (p. ej. eventos de proyectos y tareas, sms.received)

¿Falta su CRM o escenario? Escriba a support@heilo.io: priorizamos según la necesidad real.

Gestione claves y webhooks en el panel

Tras iniciar sesión podrá generar claves API, añadir suscripciones de webhooks y consultar el historial de envíos.