Skip to main content

Conecte Heilo a su CRM

Cuatro pasos para conectar Heilo a cualquier CRM, usando Zapier, Make o cualquier otra herramienta compatible con 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).

1Cree 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

2Pegue 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». Copie el signing_secret (se muestra una sola vez)

3Envíe un evento de prueba

Heilo envía un evento de prueba con el conjunto completo de datos de una llamada completada (datos de muestra: Jan Kowalski / enlucido / Varsovia): en Zapier verá todos los campos que recibirá en los eventos reales. Mapee una vez y funcionará tanto para la prueba como para las llamadas reales.

  1. En Heilo, haga clic en el icono «Probar» junto a su suscripción
  2. De vuelta en Zapier, vaya al paso del trigger → «Test trigger» → debería ver todos los datos
  3. Compruebe que puede ver los datos de la llamada: el número de quien llama, el nombre, el resumen y el enlace de la grabación
  4. Continue → pase al paso de acción (su CRM)

4Configure 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.

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.

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 → Create Lead o Find or Create Deal. Establezca el título a partir de subject, con service_needed como alternativa.
  5. Pipedrive → Create Activity. Adjúntela al Lead ID o Deal ID y, a continuación, coloque summary, recording_url, transcript_original y call_id en Note/Public Description.
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 Leads o Search Deals para esa persona. Si no hay ninguna oportunidad abierta, cree un Lead o un Deal.
  5. Pipedrive CRM → Create Activity o Create Note. Adjúntela al lead/negocio/persona y almacene summary, recording_url y call_id.
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 active el modo estricto para Zapier/Make: sus endpoints de webhook devuelven respuestas 2xx estándar pero no devuelven el challenge.
  • 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 en Pipedrive llamado Heilo Call ID y almacene allí data.call_id para evitar duplicados.
  • Al actualizar un lead/negocio existente, busque primero una oportunidad abierta para la persona y cree una nueva solo si no existe ninguna.
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 → Create Deal. Establezca Deal Name a partir de subject (con service_needed como alternativa), elija Pipeline y Deal Stage, y asocie el negocio al contacto.
  5. HubSpot → Create Engagement (tipo Note). Asócielo al contacto y al negocio, y coloque summary, recording_url, transcript_original y call_id en el cuerpo de la nota.
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 → Create a Deal. Establezca Deal Name a partir de subject, elija Pipeline y Deal Stage, y asocie el negocio al contacto.
  5. HubSpot CRM → Create an Engagement (tipo Note). Vincúlelo al contacto y al negocio y almacene summary, recording_url y call_id.
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 active el modo estricto para Zapier/Make: sus endpoints de webhook devuelven respuestas 2xx estándar pero no devuelven el challenge.
  • 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.
  • Al actualizar un lead/negocio existente, busque primero una oportunidad abierta para la persona y cree una nueva solo si no existe ninguna.
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 → Create Module Entry en el módulo Deals. Establezca Deal Name a partir de subject (con service_needed como alternativa), elija Stage y vincule el negocio al contacto.
  5. Zoho CRM → Create Module Entry en el módulo Notes. Coloque summary, recording_url, transcript_original y call_id en Note Content y relacione la nota con el negocio o el contacto.
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 → Create an Object en el módulo Deals. Establezca Deal Name a partir de subject, elija Stage y vincule el negocio al contacto.
  5. Zoho CRM → Create an Object en el módulo Notes. Almacene summary, recording_url y call_id en Note Content y adjunte la nota al negocio o al contacto.
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 active el modo estricto para Zapier/Make: sus endpoints de webhook devuelven respuestas 2xx estándar pero no devuelven el challenge.
  • 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.
  • Al actualizar un lead/negocio existente, busque primero una oportunidad abierta para la persona y cree una nueva solo si no existe ninguna.

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. La cabecera Heilo-Signature firma el payload (HMAC-SHA256), de modo que puede verificar que una solicitud realmente provino de Heilo.

{
  "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",
    "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
El enlace funciona mientras la llamada exista y no esté programada para su eliminación (RGPD). Si la llamada se eliminó, el enlace devuelve un error 410. Es así por diseño.
Un mensaje sobre la superación del límite de operaciones
Una llamada de Heilo suele equivaler a unas 3 operaciones en la herramienta (buscar + crear + actualización opcional). Los planes gratuitos bastan para hacer pruebas; para volúmenes de llamadas más altos, considere un plan de pago de Zapier o Make (Make incluye 1000 operaciones gratuitas al mes ≈ 330 llamadas).

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. contacto creado/actualizado)

¿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.