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.
- Meld u aan bij uw Zapier-dashboard
- Create Zap → Choose Trigger → “Webhooks by Zapier”
- Event = “Catch Hook” → Continue
- 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.
- Ga terug naar Instellingen → Integraties in Heilo
- Klik op “Abonnement toevoegen”
- Plak het Zapier-adres in het veld “Endpoint-URL”, kies de eventtypes (afgerond gesprek + uitgaande belpoging) en klik op “Aanmaken + handshake”
- 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.
- Klik in Heilo op het “Test”-icoon naast uw abonnement
- Ga terug in Zapier naar de triggerstap → “Test trigger” → u zou de volledige gegevens moeten zien
- Controleer of u de gespreksgegevens ziet — het nummer van de beller, de naam, de samenvatting en de opnamekoppeling
- 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-veld | Koppelen aan CRM |
|---|---|
| data.call_id | ID-/referentieveld |
| data.customer_phone_e164 | Contacttelefoon (“Phone” / “Primary Phone”) |
| data.transcript_processed.caller_name | Contactnaam (als Heilo deze heeft gedetecteerd) |
| data.transcript_processed.summary | Notitietekst of activiteitsomschrijving |
| data.transcript_processed.service_needed | Activiteitsonderwerp of dealtitel |
| data.transcript_processed.subject | Lead-/dealtitel (beste fallback voor service_needed) |
| data.transcript_processed.lead_score | Prioriteit, label of kwalificatiefilter |
| data.transcript_processed.preferred_date | Vervaldatum voor opvolging of verwachte sluitingsdatum |
| data.transcript_processed.client_city | Contactveld stad / adres |
| data.transcript_processed.client_address | Straatadres van contact |
| data.transcript_processed.services_match | Of de aanvraag aansluit op uw aanbod (true/false) — voor kwalificatie |
| data.transcript_processed.additional_details | Extra details uit het gesprek → notitie / omschrijving |
| data.recording_url | Een URL-veld (bijv. “Opnamekoppeling”) |
| data.duration | Activiteitsduur (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
- Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
- Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
- Pipedrive → Find or Create Person. Zoek op Phone Numbers = data.customer_phone_e164 en stel Person Name in op caller_name of het telefoonnummer.
- Pipedrive → Create Lead of Find or Create Deal. Stel de titel in op subject, met service_needed als fallback.
- 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
- Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
- 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).
- 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.
- Pipedrive CRM → Search Leads of Search Deals voor die persoon. Als er geen open kans is, maak dan een Lead of Deal aan.
- Pipedrive CRM → Create Activity of Create Note. Koppel deze aan de lead/deal/persoon en sla summary, recording_url en call_id op.
| Heilo-veld | Pipedrive-veld / -actie | Gebruik |
|---|---|---|
| event_type | Filter / Router | Verwerk call.completed; gebruik webhook.test alleen voor het mappen van velden. |
| data.customer_phone_e164 | Person → Phone Numbers | Primair veld voor het opzoeken en ontdubbelen van contacten. |
| data.transcript_processed.caller_name | Person → Person Name | Als dit leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam. |
| data.transcript_processed.subject | Lead/Deal → Title | Beste titel voor de kans; val terug op service_needed. |
| data.transcript_processed.service_needed | Lead/Deal → Titel of aangepast veld | Categorie van de aanvraag; handig voor pipeline-routering of labels. |
| data.transcript_processed.summary | Activiteit/Notitie → Note of Public Description | Korte gespreksomschrijving die zichtbaar is op de kans. |
| data.transcript_processed.lead_score | Lead label / priority / filter | Maak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling. |
| data.transcript_processed.preferred_date | Verwachte sluitingsdatum of vervaldatum van de activiteit | Gebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde. |
| data.transcript_processed.client_city | Person → Address (stad) of aangepast veld | Stad van de klant; handig voor segmentatie of een regionale pipeline. |
| data.transcript_processed.client_address | Person/Organization → Address | Vul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven. |
| data.transcript_processed.services_match | Filter / Lead label | false = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing. |
| data.transcript_processed.additional_details | Activity/Note → Note | Extra details uit het gesprek; voeg ze toe aan de activiteitstekst. |
| data.recording_url | Activity/Note → Recording link | Afspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn. |
| data.call_id | Custom field → Heilo Call ID | Idempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek. |
| data.duration | Activity duration | Heilo 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
- Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
- Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
- 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.
- 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.
- 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
- Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
- 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).
- 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).
- HubSpot CRM → Create a Deal. Stel Deal Name in op subject, kies Pipeline en Deal Stage en koppel de deal aan het contact.
- 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-veld | HubSpot-veld / -actie | Gebruik |
|---|---|---|
| event_type | Filter / Router | Verwerk call.completed; gebruik webhook.test alleen voor het mappen van velden. |
| data.customer_phone_e164 | Contact → Phone Number | Primaire zoeksleutel. Sla telefoonnummers in HubSpot op in E.164-formaat — de telefoonzoekopdracht vergelijkt exacte waarden, geen formaatvarianten. |
| data.transcript_processed.caller_name | Contact → First Name / Last Name | Als dit leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam. |
| data.transcript_processed.subject | Deal → Deal Name | Beste titel voor de kans; val terug op service_needed. |
| data.transcript_processed.service_needed | Deal → Deal Name of aangepaste property | Categorie van de aanvraag; handig voor pipeline-routering of labels. |
| data.transcript_processed.summary | Note → Note body | Korte gespreksomschrijving die zichtbaar is op de kans. |
| data.transcript_processed.lead_score | Custom property / filter | Maak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling. |
| data.transcript_processed.preferred_date | Deal → Close Date of vervaldatum van de taak | Gebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde. |
| data.transcript_processed.client_city | Contact → City | Stad van de klant; handig voor segmentatie of een regionale pipeline. |
| data.transcript_processed.client_address | Contact → Street Address | Vul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven. |
| data.transcript_processed.services_match | Filter / deal tag | false = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing. |
| data.transcript_processed.additional_details | Note → Note body | Extra details uit het gesprek; voeg ze toe aan de activiteitstekst. |
| data.recording_url | Note → Recording link | Afspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn. |
| data.call_id | Custom property → Heilo Call ID | Idempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek. |
| data.duration | Aangepaste property of notitie | Heilo 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
- Trigger: Webhooks by Zapier → Catch Hook. Houd het Heilo-abonnement in permissieve modus.
- Filter by Zapier: sta event_type = call.completed toe; tijdens de installatie ook webhook.test toestaan (of filter op data._test = true).
- 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.
- 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.
- 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
- Trigger: Webhooks → Custom webhook. Het scenario moet actief zijn en draaien zodra er gegevens binnenkomen.
- 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).
- 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).
- Zoho CRM → Create an Object in de module Deals. Stel Deal Name in op subject, kies Stage en koppel de deal aan het contact.
- 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-veld | Zoho CRM-veld / -actie | Gebruik |
|---|---|---|
| event_type | Filter / Router | Verwerk call.completed; gebruik webhook.test alleen voor het mappen van velden. |
| data.customer_phone_e164 | Contact → Phone | Primaire 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_name | Contact → Last Name | Zoho vereist Last Name; als caller_name leeg is, gebruik dan het telefoonnummer als veilige fallbacknaam. |
| data.transcript_processed.subject | Deal → Deal Name | Beste titel voor de kans; val terug op service_needed. |
| data.transcript_processed.service_needed | Deal → Deal Name of aangepast veld | Categorie van de aanvraag; handig voor pipeline-routering of labels. |
| data.transcript_processed.summary | Note → Note Content | Korte gespreksomschrijving die zichtbaar is op de kans. |
| data.transcript_processed.lead_score | Custom field / filter | Maak bijvoorbeeld alleen een lead/deal aan vanaf 7/10 of stuur lagere scores ter beoordeling. |
| data.transcript_processed.preferred_date | Deal → Closing Date of vervaldatum van de taak | Gebruiken wanneer de klant een deadline of gewenste opvolgdatum noemde. |
| data.transcript_processed.client_city | Contact → Mailing City | Stad van de klant; handig voor segmentatie of een regionale pipeline. |
| data.transcript_processed.client_address | Contact → Mailing Street | Vul het persoons-/organisatieadres in wanneer de beller dit heeft opgegeven. |
| data.transcript_processed.services_match | Filter / tag | false = aanvraag buiten uw aanbod; sla de deal over of markeer hem voor afwijzing. |
| data.transcript_processed.additional_details | Note → Note Content | Extra details uit het gesprek; voeg ze toe aan de activiteitstekst. |
| data.recording_url | Note → Note Content (link) | Afspeelkoppeling; kan stoppen met werken nadat het gesprek is verwijderd in het kader van de AVG-bewaartermijn. |
| data.call_id | Custom field → Heilo Call ID | Idempotentiesleutel. Voorkomt een tweede CRM-record voor hetzelfde gesprek. |
| data.duration | Aangepast veld of notitie | Heilo 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.