Een Umbraco CRM-koppeling bouwt u op een van drie manieren: met een directe API-koppeling in de code van de website, via een koppelplatform (Umbraco Automate binnen Umbraco 17, of extern Zapier, Make of n8n), of met een kant-en-klare package. Kant-en-klaar is er minder dan vaak wordt gedacht. Umbraco HQ levert officiële Umbraco Forms-workflows voor HubSpot en ActiveCampaign die een formulierinzending als contact in het CRM zetten. Voor Microsoft Dynamics 365 bestaat een officiële package, maar die toont alleen formulieren uit Dynamics 365 Marketing op uw pagina. Voor Salesforce, Zoho, Pipedrive en pakketten die in Nederland veel worden gebruikt, zoals Teamleader en AFAS, wordt het in de praktijk een API-koppeling of een koppelplatform.
Welke route past, hangt af van uw CRM, uw Umbraco-versie en hoeveel er tussen formulier en CRM moet gebeuren: alleen een contact aanmaken, of ook ontdubbelen en de lead toewijzen aan een accountmanager.
Het korte antwoord: drie manieren
1. Directe API-koppeling in maatwerk
Bij deze route schrijf ik code in de website die bij elke inzending de API van uw CRM aanroept. U bepaalt alles zelf: welke velden meegaan, hoe een bestaand contact wordt herkend, wat er gebeurt als het CRM niet reageert en welke accountmanager de lead krijgt. Er zit geen extra partij tussen, dus ook geen kosten voor een koppelplatform en geen extra verwerker van persoonsgegevens.
Wat u inlevert: elke wijziging loopt via een developer, en de code moet mee bij updates aan beide kanten. Een concreet voorbeeld aan de Umbraco-kant: UmbracoApiController is vanaf versie 15 uit Umbraco verwijderd. Eigen API-endpoints die op een Umbraco 13-site daarop zijn gebouwd, moeten bij een upgrade naar 17 worden herschreven.
2. Koppelplatform of automatisering
Hier stuurt Umbraco de inzending door en regelt een automatiseringstool de rest. Daarvoor zijn twee smaken.
Umbraco Automate draait in de backoffice zelf. Volgens de documentatie bouwt u flows met triggers en acties op een visueel canvas, en kan een ingebouwde actie onder meer HTTP-verzoeken doen. Met de Forms-package wordt een formulierinzending een trigger. Umbraco HQ meldt bij de lancering dat Automate open source is, geen limiet heeft op het aantal runs en beschikbaar is voor Umbraco 17 en hoger. Draait u nog op 13, dan valt deze optie af tot na de upgrade. Hoe u met Automate nieuwe aanvragen sneller bij sales krijgt, leest u in leads sneller opvolgen met Umbraco Automate.
Zapier, Make of n8n vangen een webhook uit Umbraco op. Umbraco Forms kan een inzending standaard per e-mail versturen of naar een externe URL posten, en dat volstaat om een flow te starten. Umbraco HQ beschrijft zelf een Zapier-flow die eerst spam eruit filtert, daarna in Zoho CRM controleert of de lead al bestaat en hem vervolgens aanmaakt of bijwerkt.
Bij Zapier en vergelijkbare tools levert u in: een extra abonnement, een extra verwerker van persoonsgegevens en een extra plek waar een koppeling ongemerkt kan stoppen. Of Automate voor u die rol kan overnemen, bespreek ik in Umbraco Automate als gratis alternatief voor Zapier.
3. Een kant-en-klare package
Let bij packages op het verschil tussen twee soorten. De ene soort sluit het formulier van het CRM in op uw Umbraco-pagina: de data gaat rechtstreeks naar het CRM en komt nooit in Umbraco. De andere soort is een Umbraco Forms-workflow: het formulier hoort bij Umbraco, de inzending staat in Umbraco en wordt daarnaast als contact naar het CRM gestuurd.
Dit heb ik gecontroleerd bij Umbraco HQ, op de Umbraco Marketplace en in de officiële integratiecode op GitHub:
| CRM | Officiële package | Wat het doet |
|---|---|---|
| HubSpot | HubSpot (CMS) | HubSpot-formulieren kiezen en tonen op een Umbraco-pagina |
| HubSpot | HubSpot with Umbraco Forms | Een Umbraco Forms-inzending wordt een HubSpot-contact, velden zelf te koppelen (HubSpot-listing) |
| ActiveCampaign | Umbraco Forms-workflow | Een Umbraco Forms-inzending wordt een ActiveCampaign-contact |
| Microsoft Dynamics 365 | Umbraco.Cms.Integrations.Crm.Dynamics | Alleen formulieren uit Dynamics 365 Marketing kiezen en tonen (documentatie) |
| Salesforce, Zoho, Pipedrive | Geen officiële package | Umbraco adviseert webhooks, de API of een automatiseringstool |
| Teamleader, AFAS | Geen officiële package | Of er community-packages zijn die Umbraco 17 ondersteunen, heb ik niet kunnen vaststellen |
Controleer altijd welke versie van een package bij uw Umbraco hoort. In april 2026 ontstond op het Umbraco-forum verwarring over welke HubSpot-package welke Umbraco-versie ondersteunt, juist omdat er twee bestaan. De minimale versie vindt u op NuGet onder het tabblad Dependencies. De Dynamics-package is in versie 5.0.0 gebouwd voor .NET 10.
De routes naast elkaar
| API-koppeling op maat | Umbraco Automate | Zapier, Make of n8n | Package | |
|---|---|---|---|---|
| Past bij | Elk CRM met een API, eigen logica | Umbraco 17 en hoger, flows die u zelf wilt aanpassen | Snel starten, veel losse tools | HubSpot of ActiveCampaign met Umbraco Forms |
| Eenmalig | Bouwtijd developer | Inrichten, eventueel eigen acties | Flow inrichten | Installeren en velden koppelen |
| Doorlopend | Onderhoud bij API-wijzigingen | Open source, geen limiet op runs | Abonnement van het platform | Updates per Umbraco-versie |
| Wat u inlevert | Elke wijziging via een developer | Werkt pas vanaf Umbraco 17 | Extra verwerker, data buiten uw site | Alleen wat de package ondersteunt |
Welke data gaat waarheen?
Voordat er een regel code wordt geschreven, moet vastliggen welke inzending in welk CRM-object terechtkomt. Umbraco noemt zelf voorbeelden: in Dynamics 365 een lead aanmaken vanuit een formulier 'Contact sales', inclusief bron en toestemming, en nieuwsbriefinschrijvingen als HubSpot-contact op de juiste lijst zetten.
| Bron op de website | Doel in het CRM | Minimaal meesturen | Let op |
|---|---|---|---|
| Contact- of offerteformulier | Lead of contact, eventueel met deal | Naam, e-mail, bedrijf, vraag, pagina-URL | Lead of contact? In Salesforce en Dynamics is een lead een ander object dan een contact |
| Nieuwsbriefinschrijving | Contact op een lijst of met een tag | E-mail, toestemming met datum en tijd | Welk systeem is leidend als nieuwsbrief en CRM los van elkaar staan? |
| Download of whitepaper | Contact met campagnebron | E-mail, naam van het document | Niet elke download is een saleslead |
| Aanmelding evenement of webinar | Contact plus deelname | Naam, e-mail, evenement | Afmeldingen ook doorsturen |
Stuur altijd de bron mee: de pagina, de formuliernaam en eventuele UTM-waarden. Zonder bron weet marketing niet welke pagina leads oplevert.
Stappenplan voor een API-koppeling
Dit moet er zijn voordat ik begin: een beheerder van het CRM die mag meekijken, een test- of sandboxomgeving van het CRM, API-toegang binnen uw abonnement (dat verschilt per pakket, check het bij uw leverancier), de lijst met velden en keuzewaarden, en de naam van degene die bepaalt wie welke lead krijgt.
- Doel in één zin. Bijvoorbeeld: 'Elke offerteaanvraag staat als lead bij de accountmanager van de regio, met de pagina waar de aanvraag vandaan kwam.' Alles wat niet bijdraagt aan die zin, schuift naar later.
- Datamapping. Een spreadsheet met per rij het Umbraco-veld, het CRM-veld, het type, of het verplicht is en de exacte keuzewaarden. Hier zitten de Nederlandse details. Bepaal waar 'van der' landt als uw CRM een apart veld voor tussenvoegsels heeft. Leg één formaat vast voor telefoonnummers (06 of +31). Controleer of een KvK-nummer uit 8 cijfers bestaat voordat het het CRM in gaat.
- Authenticatie. OAuth of een API-token, nooit in de broncode of in Git. Gebruik aparte sleutels voor test en productie, en koppel het token aan een servicegebruiker. Hangt het aan het account van een medewerker, dan stopt de koppeling zodra die vertrekt.
- Foutafhandeling. Het CRM is soms traag of onbereikbaar. De inzending moet dan in Umbraco bewaard blijven, opnieuw worden verstuurd met een oplopende wachttijd en na een aantal mislukte pogingen een melding geven aan een mens.
- AVG. Stuur alleen de velden mee die sales echt gebruikt. Sluit een verwerkersovereenkomst met uw CRM-leverancier en, als u een koppelplatform gebruikt, ook met die partij. Een vinkje voor de nieuwsbrief staat niet standaard aan, en de gegeven toestemming gaat mee naar het CRM. Spreek een bewaartermijn af voor beide plekken, want met Umbraco Forms staan de gegevens ook in de database van de website. Ik ben geen jurist: laat uw privacyverklaring toetsen als u twijfelt.
- Testen. Op de testomgeving van de website, tegen de sandbox van het CRM. Test minimaal: een nieuw contact, een bestaand contact met hetzelfde e-mailadres in hoofdletters, een ongeldig e-mailadres, een naam met é of ë, een CRM dat niet reageert en een spamachtige inzending.
- Livegang en controle. Vergelijk de eerste week dagelijks het aantal inzendingen in Umbraco met het aantal nieuwe records in het CRM. Kloppen die getallen een week lang, dan kunt u op de koppeling bouwen.
Hoe lang duurt het? Dat kan ik niet eerlijk zeggen zonder uw CRM en formulieren te zien. De bouw zelf is zelden het langste deel. Het wachten op API-toegang, een sandbox en een besluit over de veldkeuzes duurt vaak langer dan de code. Wie stap 1 en 2 voorbereidt voordat het project begint, wint de meeste tijd.
Formulieren als bron: Umbraco Forms of CampaignCanvas Forms
In Umbraco Forms heten de stappen na een inzending workflows. Standaard kunnen die een e-mail sturen of de data naar een externe URL posten, en een developer kan eigen workflows bouwen voor een specifiek CRM. Zo werken ook de officiële HubSpot- en ActiveCampaign-integraties. In Umbraco 17 kan een inzending bovendien een flow in Automate starten via de Forms-package. Umbraco Forms is een add-on van Umbraco HQ; controleer de licentievoorwaarden voor uw situatie.
Mijn eigen formulierplugin, CampaignCanvas Forms, kost €99 eenmalig en zit gratis bij elke nieuwe website die ik bouw. Over kant-en-klare CRM-koppelingen voor CampaignCanvas doe ik hier bewust geen uitspraken. Gebruikt u het en wilt u de data in uw CRM, dan bespreken we per CRM welke route past. Alle plugins met prijzen staan op de pagina Umbraco-plugins.
Valkuilen die ik in de praktijk zie
Wijzigende API's en packages. CRM-leveranciers vernieuwen hun API's en Umbraco verandert per hoofdversie. Een koppeling die op Umbraco 13 werkt, werkt niet vanzelf op 17. Leg vast wie de koppeling bijhoudt als een van beide kanten verandert, en zet in de documentatie welke API-versie u gebruikt.
Rate limits. Elk CRM beperkt het aantal API-verzoeken per tijdseenheid. De exacte limieten verschillen per pakket en abonnement, en ik noem hier geen getallen die morgen anders kunnen zijn. Bij losse formulieren merkt u er zelden iets van. Bij het in één keer overzetten van oude inzendingen of bij een campagne met een piek wel. Bouw in dat de koppeling bij een 'te veel verzoeken'-antwoord wacht en het daarna opnieuw probeert, zodat er geen lead verloren gaat.
Dubbele contacten. Die ontstaan zodra de koppeling elke inzending als nieuw contact aanmaakt. Zoek eerst op e-mailadres (zonder spaties, in kleine letters) en werk een bestaand contact bij. Iemand die twee e-mailadressen gebruikt, blijft twee contacten; dat lost geen koppeling op.
Stille fouten. Een workflow faalt zonder melding. De inzending staat in Umbraco, niemand kijkt daar, en sales denkt dat het een rustige week is.
Testdata in het live CRM. Een testomgeving die met de productiesleutel naar het echte CRM post, vult uw pijplijn met 'Test Test'. Aparte sleutels per omgeving voorkomen dat.
Spam in het CRM. Filter spam voordat een inzending het CRM bereikt. In het Zapier-voorbeeld van Umbraco HQ is spamcontrole de eerste stap.
Keuzelijsten die niet overeenkomen. 'Noord-Holland' in het formulier en 'Noord Holland' in het CRM geeft een lege regio of een foutmelding.
Praktijkvoorbeeld: YincQ en Financieel Gezond
Voor YincQ heb ik het platform Financieel Gezond opnieuw gebouwd: in 2 maanden, voor €10.000 in totaal, twee maanden Growth. Het platform bedient 3 gebruikersgroepen in één omgeving en staat live op financieelgezond.nl.
Ronald Stolk van YincQ schreef er deze Google-review over:
“Of het nu gaat om een lastige API of om aanvullend maatwerk, eigenaar Peter Sinke denkt altijd eerlijk en oprecht met je bedrijfsuitdagingen mee. Onze complimenten!”
Het project ging verder dan een formulier dat naar een CRM moet. Het laat wel zien hoe ik werk: in losse taken, voor een vaste maandprijs, met één aanspreekpunt. Meer cases staan bij mijn projecten.
Wat kost een koppeling?
Bij een nieuwe website krijgt u één vaste prijs binnen één werkdag na een gratis gesprek van 30 minuten. Noem in dat gesprek uw CRM en welke formulieren erheen moeten, dan zit de koppeling in die prijs. Het aantal pagina's maakt voor de prijs niet uit, en bent u bij oplevering niet tevreden, dan betaalt u niet. Een site gaat normaal live in 15 werkdagen. Of de koppeling daarbinnen past, hangt af van hoe snel de API-toegang geregeld is; dat hoort u in het gesprek. Ik neem maximaal 2 nieuwe websiteprojecten per maand aan. Zie website laten maken.
Voor bureaus loopt het via Development as a Subscription, white-label onder uw eigen naam. Starter kost €3.000 per maand (één taak tegelijk, levering in 2 tot 4 werkdagen per taak). Growth kost €5.000 per maand (twee taken parallel, levering in 1 tot 3 werkdagen per taak, gegarandeerd of de volgende week is gratis). Elke taak is maximaal 4 uur werk, dus een koppeling knip ik op in delen: bijvoorbeeld mapping en authenticatie, dan foutafhandeling en logging, dan testen tegen de sandbox. Het abonnement is maandelijks opzegbaar en de eerste maand krijgt u terug als het niet bevalt.
Draait uw site op Umbraco 13 en wilt u Automate gebruiken, dan komt er een upgrade naar 17 bij. Die prijs bepaal ik na een gratis inspectie; een eenvoudige site blijft meestal onder €4.000.
Kosten naast de bouw die u zelf moet meenemen:
- Het CRM-abonnement, en de vraag of API-toegang in uw abonnement zit.
- Het abonnement van Zapier, Make of n8n als u die route kiest.
- Eventuele licentiekosten van Umbraco Forms als u dat gebruikt.
- Onderhoud. WebCare kost €199 per maand voor hosting plus onderhoud, met kleine wijzigingen en plugin-updates. Of een API-wijziging van uw CRM onder 'klein' valt, hangt af van de wijziging.
- Overstapkosten. Wisselt u van CRM, dan moet een API-koppeling op maat grotendeels opnieuw. Bij een koppelplatform vervangt u vooral de laatste stap.
Wilt u weten welke route bij uw CRM en uw Umbraco-versie past, en wat dat vast kost? Plan een gratis gesprek van 30 minuten via datapad.nl. U praat direct met mij en heeft binnen één werkdag een vaste prijs.
Veelgestelde vragen
Kan ik Umbraco aan HubSpot koppelen zonder maatwerk?
Ja. De officiële package 'HubSpot with Umbraco Forms' zet inzendingen van Umbraco Forms als contact in HubSpot. Controleer wel welke versie bij uw Umbraco-versie hoort. Wilt u ontdubbelen op eigen regels of leads toewijzen aan accountmanagers, dan heeft u meestal toch maatwerk of een automatiseringsflow nodig.
Werkt Umbraco Automate op Umbraco 13?
Nee. Umbraco Automate is beschikbaar voor Umbraco 17 en hoger. Op Umbraco 13 heeft u eerst een upgrade nodig, of u kiest voor een API-koppeling op maat of een extern platform zoals Zapier, Make of n8n.
Wat gebeurt er met een lead als het CRM even niet bereikbaar is?
Dat hangt af van hoe de koppeling is gebouwd. Met Umbraco Forms blijft de inzending in de database van de website staan. Een goede koppeling probeert het daarna automatisch opnieuw met een oplopende wachttijd en waarschuwt iemand als dat blijft mislukken.
Is er een Umbraco-package voor Salesforce, Teamleader of AFAS?
Umbraco HQ heeft geen officiële package voor Salesforce, Zoho of Pipedrive en adviseert daarvoor webhooks, de API of een automatiseringstool. Voor Teamleader en AFAS bestaat ook geen officiële package; of er community-packages zijn die Umbraco 17 ondersteunen, heb ik niet kunnen vaststellen.
Kan het ook andersom, data uit het CRM op de website tonen?
Ja, bijvoorbeeld evenementen, partners of vestigingen. De website haalt dan gegevens op via de API van het CRM. Caching is daarbij belangrijk, zodat uw site niet trager wordt en u niet tegen de limieten van de API aanloopt.
Wat is een Umbraco API-koppeling precies?
Code die Umbraco laat praten met een ander systeem via de API van dat systeem, in één richting of in beide. Een koppeling tussen websiteformulieren en een CRM is daar het bekendste voorbeeld van.