Skip to main content

Verbind Heilo met uw CRM

Vier stappen om Heilo met elk CRM te verbinden — met Zapier, Make of een ander hulpmiddel dat webhooks ondersteunt.

Na elk gesprek stuurt Heilo een melding met de gespreksgegevens naar een adres dat u kiest. Deze handleiding laat zien hoe u Heilo met elk CRM verbindt via Zapier of Make — zonder code, in 15–20 minuten.

Het is een universele route die werkt met elk CRM dat door Zapier of Make wordt ondersteund. Stap-voor-stap-recepten voor Pipedrive, HubSpot en Zoho CRM vindt u hieronder. One-click-sjablonen (Zapier/Make) staan nog op de roadmap — tot die tijd begeleidt elk recept u handmatig door de laatste stap (opslaan in uw CRM).

1Maak een nieuwe Zap in Zapier

De “Webhooks by Zapier (Catch Hook)”-trigger genereert een adres waar Heilo events naartoe stuurt.

  1. Meld u aan bij uw Zapier-dashboard
  2. Create Zap → Choose Trigger → “Webhooks by Zapier”
  3. Event = “Catch Hook” → Continue
  4. Zapier toont een adres zoals https://hooks.zapier.com/hooks/catch/… — kopieer het

2Plak het adres in Heilo als webhook-abonnement

Heilo verifieert het adres — uw Zapier-endpoint reageert automatisch. Na activering wordt elk gesprek naar dit adres gestuurd.

  1. Ga terug naar Instellingen → Integraties in Heilo
  2. Klik op “Abonnement toevoegen”
  3. Plak het Zapier-adres in het veld “Endpoint-URL”, kies de eventtypes (afgerond gesprek + uitgaande belpoging) en klik op “Aanmaken + handshake”
  4. De status moet veranderen in “Actief”. Kopieer het signing_secret (eenmalig getoond)

3Stuur een testevent

Heilo stuurt een testevent met de volledige set gegevens van een afgerond gesprek (voorbeeldgegevens: Jan Kowalski / stukadoorswerk / Warschau) — in Zapier ziet u elk veld dat u in echte events krijgt. Map één keer en het werkt voor zowel de test als echte gesprekken.

  1. Klik in Heilo op het “Test”-icoon naast uw abonnement
  2. Ga terug in Zapier naar de triggerstap → “Test trigger” → u zou de volledige gegevens moeten zien
  3. Controleer of u de gespreksgegevens ziet — het nummer van de beller, de naam, de samenvatting en de opnamekoppeling
  4. Continue → ga door naar de actiestap (uw CRM)

4Stel het opslaan in uw CRM in

Voeg in uw hulpmiddel (Zapier of Make) acties toe voor uw CRM — bijvoorbeeld Pipedrive, Zoho CRM, Notion of Airtable. Voor verkoopworkflows zijn dat meestal drie stappen: (1) een contact vinden of aanmaken op basis van het telefoonnummer, (2) een lead/deal aanmaken of bijwerken, (3) een activiteit, taak of notitie koppelen.

Heilo-veldKoppelen aan CRM
data.call_idID-/referentieveld
data.customer_phone_e164Contacttelefoon (“Phone” / “Primary Phone”)
data.transcript_processed.caller_nameContactnaam (als Heilo deze heeft gedetecteerd)
data.transcript_processed.summaryNotitietekst of activiteitsomschrijving
data.transcript_processed.service_neededActiviteitsonderwerp of dealtitel
data.transcript_processed.subjectLead-/dealtitel (beste fallback voor service_needed)
data.transcript_processed.lead_scorePrioriteit, label of kwalificatiefilter
data.transcript_processed.preferred_dateVervaldatum voor opvolging of verwachte sluitingsdatum
data.transcript_processed.client_cityContactveld stad / adres
data.transcript_processed.client_addressStraatadres van contact
data.transcript_processed.services_matchOf de aanvraag aansluit op uw aanbod (true/false) — voor kwalificatie
data.transcript_processed.additional_detailsExtra details uit het gesprek → notitie / omschrijving
data.recording_urlEen URL-veld (bijv. “Opnamekoppeling”)
data.durationActiviteitsduur (in seconden)

Het veld data.outbound_lifecycle verschijnt alleen in de gebeurtenissen call.outbound.attempted en call.failed — het zit niet in call.completed.

Recepten voor specifieke CRM's

Hieronder staan CRM-specifieke configuraties. De generieke webhook levert u de gespreksgegevens; dit onderdeel laat zien hoe u die omzet in een contact, lead/deal en activiteit in een specifiek CRM.

Pipedrive: contact + lead/deal + activiteit

Beoogd resultaat: na een afgerond gesprek vindt of maakt Pipedrive een persoon aan, maakt een verkooplead/-deal aan en koppelt een activiteit met de samenvatting en de opnamekoppeling.

Gebruik Lead als gesprekken eerst in de Leads Inbox terecht moeten komen voor kwalificatie. Gebruik Deal als elk gekwalificeerd gesprek direct in de pipeline moet komen.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
  2. Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
  3. Pipedrive → Find or Create Person. Zoek op Phone Numbers = data.customer_phone_e164 en stel Person Name in op caller_name of het telefoonnummer.
  4. Pipedrive → Create Lead of Find or Create Deal. Stel de titel in op subject, met service_needed als fallback.
  5. Pipedrive → Create Activity. Koppel deze aan Lead ID of Deal ID en zet summary, recording_url, transcript_original en call_id in Note/Public Description.
Make
  1. Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
  2. Voeg een filter toe na de webhook: event_type = call.completed; sta tijdens het mappen van testgegevens ook webhook.test toe (of filter op data._test = true).
  3. Pipedrive CRM → Search Persons op data.customer_phone_e164. Als er geen resultaat is, maak dan een Person aan met dat telefoonnummer en caller_name of het telefoonnummer als naam.
  4. Pipedrive CRM → Search Leads of Search Deals voor die persoon. Als er geen open kans is, maak dan een Lead of Deal aan.
  5. Pipedrive CRM → Create Activity of Create Note. Koppel deze aan de lead/deal/persoon en sla summary, recording_url en call_id op.
Heilo-veldPipedrive-veld / -actieGebruik
event_typeFilter / RouterVerwerk call.completed; gebruik webhook.test alleen voor het mappen van velden.
data.customer_phone_e164Person → Phone NumbersPrimair veld voor het opzoeken en ontdubbelen van contacten.
data.transcript_processed.caller_namePerson → Person NameAls dit leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam.
data.transcript_processed.subjectLead/Deal → TitleBeste titel voor de kans; val terug op service_needed.
data.transcript_processed.service_neededLead/Deal → Titel of aangepast veldCategorie van de aanvraag; handig voor pipeline-routering of labels.
data.transcript_processed.summaryActiviteit/Notitie → Note of Public DescriptionKorte gespreksomschrijving die zichtbaar is op de kans.
data.transcript_processed.lead_scoreLead label / priority / filterMaak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling.
data.transcript_processed.preferred_dateVerwachte sluitingsdatum of vervaldatum van de activiteitGebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde.
data.transcript_processed.client_cityPerson → Address (stad) of aangepast veldStad van de klant; handig voor segmentatie of een regionale pipeline.
data.transcript_processed.client_addressPerson/Organization → AddressVul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven.
data.transcript_processed.services_matchFilter / Lead labelfalse = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing.
data.transcript_processed.additional_detailsActivity/Note → NoteExtra details uit het gesprek; voeg ze toe aan de activiteitstekst.
data.recording_urlActivity/Note → Recording linkAfspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn.
data.call_idCustom field → Heilo Call IDIdempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek.
data.durationActivity durationHeilo stuurt seconden; converteer dit als uw Pipedrive-veld een tijdformaat verwacht.

Voorwaarden voor een correcte koppeling

  • Schakel strict-modus niet in voor Zapier/Make — hun webhook-endpoints geven standaard 2xx-responsen terug, maar sturen de challenge niet terug.
  • Meng eventtypes niet zonder filter: call.outbound.attempted bevat niet het volledige transcript of de opname.
  • Voeg een aangepast Pipedrive-veld met de naam Heilo Call ID toe en sla data.call_id daar op om duplicaten te voorkomen.
  • Zoek bij het bijwerken van een bestaande lead/deal eerst naar een open kans voor de persoon en maak alleen een nieuwe aan als die er niet is.
HubSpot: contact + deal + notitie

Beoogd resultaat: na een afgerond gesprek vindt of maakt HubSpot een contact aan op basis van het telefoonnummer, maakt een deal aan en logt een notitie met de samenvatting en de opnamekoppeling.

Ontdubbelingsvalkuil: de Zapier-actie Create or Update Contact koppelt bestaande contacten uitsluitend op e-mailadres. Heilo-events bevatten een telefoonnummer en vaak geen e-mailadres, waardoor die actie bij elk gesprek een duplicaatcontact aanmaakt. Zoek altijd eerst op de telefoonproperty en maak alleen een contact aan wanneer de zoekopdracht niets vindt.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
  2. Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
  3. HubSpot → Find Contact. Stel de zoekproperty in op Phone Number en wijs data.customer_phone_e164 toe; schakel de optie in om het contact aan te maken als er niets wordt gevonden, met caller_name of het telefoonnummer als naam. Gebruik hier geen Create or Update Contact — die actie koppelt op e-mailadres.
  4. HubSpot → Create Deal. Stel Deal Name in op subject (met service_needed als fallback), kies Pipeline en Deal Stage en koppel de deal aan het contact.
  5. HubSpot → Create Engagement (type Note). Koppel deze aan het contact en de deal en zet summary, recording_url, transcript_original en call_id in de notitietekst.
Make
  1. Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
  2. Voeg een filter toe na de webhook: event_type = call.completed; sta tijdens het mappen van testgegevens ook webhook.test toe (of filter op data._test = true).
  3. HubSpot CRM → Search for Contacts op de telefoonproperty = data.customer_phone_e164. Als er geen resultaat is, maak het contact dan aan met Create a Contact (dat telefoonnummer plus caller_name of het nummer als naam).
  4. HubSpot CRM → Create a Deal. Stel Deal Name in op subject, kies Pipeline en Deal Stage en koppel de deal aan het contact.
  5. HubSpot CRM → Create an Engagement (type Note). Koppel deze aan het contact en de deal en sla summary, recording_url en call_id op.
Heilo-veldHubSpot-veld / -actieGebruik
event_typeFilter / RouterVerwerk call.completed; gebruik webhook.test alleen voor het mappen van velden.
data.customer_phone_e164Contact → Phone NumberPrimaire zoeksleutel. Sla telefoonnummers in HubSpot op in E.164-formaat — de telefoonzoekopdracht vergelijkt exacte waarden, geen formaatvarianten.
data.transcript_processed.caller_nameContact → First Name / Last NameAls dit leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam.
data.transcript_processed.subjectDeal → Deal NameBeste titel voor de kans; val terug op service_needed.
data.transcript_processed.service_neededDeal → Deal Name of aangepaste propertyCategorie van de aanvraag; handig voor pipeline-routering of labels.
data.transcript_processed.summaryNote → Note bodyKorte gespreksomschrijving die zichtbaar is op de kans.
data.transcript_processed.lead_scoreCustom property / filterMaak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling.
data.transcript_processed.preferred_dateDeal → Close Date of vervaldatum van de taakGebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde.
data.transcript_processed.client_cityContact → CityStad van de klant; handig voor segmentatie of een regionale pipeline.
data.transcript_processed.client_addressContact → Street AddressVul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven.
data.transcript_processed.services_matchFilter / deal tagfalse = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing.
data.transcript_processed.additional_detailsNote → Note bodyExtra details uit het gesprek; voeg ze toe aan de activiteitstekst.
data.recording_urlNote → Recording linkAfspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn.
data.call_idCustom property → Heilo Call IDIdempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek.
data.durationAangepaste property of notitieHeilo stuurt seconden; converteer dit als uw HubSpot-property een ander formaat verwacht.

Voorwaarden voor een correcte koppeling

  • Schakel strict-modus niet in voor Zapier/Make — hun webhook-endpoints geven standaard 2xx-responsen terug, maar sturen de challenge niet terug.
  • Meng eventtypes niet zonder filter: call.outbound.attempted bevat niet het volledige transcript of de opname.
  • Vertrouw voor het koppelen niet op Create or Update Contact — die actie ontdubbelt uitsluitend op e-mailadres; voer altijd eerst de telefoonzoekopdracht uit.
  • Voeg een aangepaste HubSpot-property met de naam Heilo Call ID toe (tekst van één regel) en sla data.call_id daar op om duplicaten te voorkomen.
  • Zoek bij het bijwerken van een bestaande lead/deal eerst naar een open kans voor de persoon en maak alleen een nieuwe aan als die er niet is.
Zoho CRM: contact + deal + notitie

Beoogd resultaat: na een afgerond gesprek vindt of maakt Zoho CRM een contact aan op basis van het telefoonnummer, maakt een deal aan en koppelt een notitie met de samenvatting en de opnamekoppeling.

Zoek contacten op het veld Phone (of Mobile, als u de nummers daar opslaat). Heilo stuurt data.customer_phone_e164 in E.164-formaat — houd de nummers in Zoho in hetzelfde formaat, anders vindt de zoekopdracht niets.

Zapier
  1. Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
  2. Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
  3. Zoho CRM → Find Module Entry in de module Contacts, met zoeken op het veld Phone = data.customer_phone_e164; schakel de optie in om de entry aan te maken als er niets wordt gevonden. Zoho vereist Last Name — gebruik caller_name of het telefoonnummer.
  4. Zoho CRM → Create Module Entry in de module Deals. Stel Deal Name in op subject (met service_needed als fallback), kies Stage en koppel de deal aan het contact.
  5. Zoho CRM → Create Module Entry in de module Notes. Zet summary, recording_url, transcript_original en call_id in Note Content en koppel de notitie aan de deal of het contact.
Make
  1. Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
  2. Voeg een filter toe na de webhook: event_type = call.completed; sta tijdens het mappen van testgegevens ook webhook.test toe (of filter op data._test = true).
  3. Zoho CRM → Search Objects in de module Contacts met het criterium Phone = data.customer_phone_e164. Als er geen resultaat is, maak het contact dan aan met Create an Object (Last Name uit caller_name of het telefoonnummer).
  4. Zoho CRM → Create an Object in de module Deals. Stel Deal Name in op subject, kies Stage en koppel de deal aan het contact.
  5. Zoho CRM → Create an Object in de module Notes. Sla summary, recording_url en call_id op in Note Content en koppel de notitie aan de deal of het contact.
Heilo-veldZoho CRM-veld / -actieGebruik
event_typeFilter / RouterVerwerk call.completed; gebruik webhook.test alleen voor het mappen van velden.
data.customer_phone_e164Contact → PhonePrimaire zoeksleutel. Zoek op het veld Phone (of Mobile) en houd aan beide kanten één nummerformaat aan — de zoekopdracht vergelijkt exacte waarden.
data.transcript_processed.caller_nameContact → Last NameZoho vereist Last Name; als caller_name leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam.
data.transcript_processed.subjectDeal → Deal NameBeste titel voor de kans; val terug op service_needed.
data.transcript_processed.service_neededDeal → Deal Name of aangepast veldCategorie van de aanvraag; handig voor pipeline-routering of labels.
data.transcript_processed.summaryNote → Note ContentKorte gespreksomschrijving die zichtbaar is op de kans.
data.transcript_processed.lead_scoreCustom field / filterMaak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling.
data.transcript_processed.preferred_dateDeal → Closing Date of vervaldatum van de taakGebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde.
data.transcript_processed.client_cityContact → Mailing CityStad van de klant; handig voor segmentatie of een regionale pipeline.
data.transcript_processed.client_addressContact → Mailing StreetVul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven.
data.transcript_processed.services_matchFilter / tagfalse = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing.
data.transcript_processed.additional_detailsNote → Note ContentExtra details uit het gesprek; voeg ze toe aan de activiteitstekst.
data.recording_urlNote → Note Content (link)Afspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn.
data.call_idCustom field → Heilo Call IDIdempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek.
data.durationAangepast veld of notitieHeilo stuurt seconden; converteer dit als uw Zoho CRM-veld een ander formaat verwacht.

Voorwaarden voor een correcte koppeling

  • Schakel strict-modus niet in voor Zapier/Make — hun webhook-endpoints geven standaard 2xx-responsen terug, maar sturen de challenge niet terug.
  • Meng eventtypes niet zonder filter: call.outbound.attempted bevat niet het volledige transcript of de opname.
  • Voeg een aangepast Zoho CRM-veld met de naam Heilo Call ID toe en sla data.call_id daar op om duplicaten te voorkomen.
  • Zoho weigert records waarbij verplichte velden ontbreken: Contacts vereist Last Name en Deals minimaal Deal Name en Stage (afhankelijk van uw lay-out ook Closing Date) — stel voor elk een veilige fallback in.
  • Zoek bij het bijwerken van een bestaande lead/deal eerst naar een open kans voor de persoon en maak alleen een nieuwe aan als die er niet is.

Volledige datastructuur (referentie)

Elke melding heeft dezelfde structuur. De velden onder “data” hangen af van het eventtype — een afgerond gesprek bevat bijvoorbeeld het verwerkte transcript. De Heilo-Signature-header ondertekent de payload (HMAC-SHA256), zodat u kunt verifiëren dat een verzoek echt van Heilo afkomstig is.

{
  "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": "..."
  }
}

Veelvoorkomende problemen

Verificatie (handshake) mislukt na het toevoegen van het abonnement
Uw adres bevestigde niet binnen 10 seconden. In Zapier gebeurt dit automatisch; in Make moet het scenario ingeschakeld zijn (en in strict-modus heeft u ook een “Webhook response”-module nodig). Controleer ook of het adres geen spaties of “&”-tekens bevat, corrigeer het en klik vervolgens op “Opnieuw verifiëren” bij het gepauzeerde abonnement.
Er worden dubbele contacten aangemaakt in mijn CRM
Connectortools normaliseren telefoonformaten niet — “+48 600 100 200” en “+48600100200” lijken twee verschillende nummers. Heilo stuurt het nummer al in E.164-formaat (het veld customer_phone_e164), dus gebruik dat om het contact op te zoeken. In Zapier kunt u ook een “Formatter → Phone Number → E.164”-stap toevoegen vóór het opzoeken.
De opnamekoppeling stopt na een tijdje met werken
De koppeling werkt zolang het gesprek bestaat en niet is ingepland voor verwijdering (AVG). Als het gesprek is verwijderd, geeft de koppeling een 410-fout. Dit is bewust zo ontworpen.
Een melding over het overschrijden van de bewerkingslimiet
Eén Heilo-gesprek kost meestal ongeveer 3 bewerkingen in het hulpmiddel (find + create + optionele update). Gratis abonnementen zijn voldoende om te testen; voor hogere gespreksvolumes kunt u een betaald Zapier- of Make-abonnement overwegen (Make bevat 1000 gratis bewerkingen/maand ≈ 330 gesprekken).

Roadmap (v1.1+)

Wat we plannen voor komende releases. Deze lijst is geen garantie — prioriteiten volgen uw feedback.

  • Specifieke recepten voor meer CRM's: Salesforce, Bitrix24, Livespace
  • One-click-sjablonen (Zapier/Make) voor de populairste CRM's
  • Kopieer-plakregels voor ontdubbeling en veldmapping
  • Meer eventtypes om te mappen (bijv. contact aangemaakt/bijgewerkt)

Mist u uw CRM of scenario? Mail support@heilo.io — we geven prioriteit op basis van werkelijke behoefte.

Beheer sleutels en webhooks in het paneel

Na het inloggen genereert u API-sleutels, voegt u webhook-abonnementen toe en bekijkt u het verzendlogboek.