Automation
Van Zapier naar n8n: €400 per maand wegwerken in een middag
Het is dinsdag, 14:00. De CFO stuurt ons een Zapier-factuur door van €412,50. Vrijdag draaien de workflows op een Hetzner-bak van €4,51 en is het Zapier-seat opgezegd.

De factuur die het begon
Het is dinsdag, 14:00. De CFO van een performance marketing-bureau met 22 mensen in Utrecht stuurt ons een Zapier-factuur door. €412,50. Het is de zesde op rij boven de vierhonderd. Vorig jaar maart kostte hetzelfde plan ze nog €189. In mei kwam er een nieuwe ad-klant bij, in het najaar nog twee, en de rekening klom rustig mee. De Zaps regelen lead intake vanuit drie Meta-adaccounts, het achterna zitten van facturen in Stripe, deal-stage Slack-pings vanuit HubSpot, een campagne-overzicht op maandagochtend, en nog veertig kleinere dingen die niemand in het huidige team ooit zelf heeft geschreven.
Om 17:30 diezelfde middag draaien de drukste flows parallel op een verse n8n-bak. Vrijdag is het Zapier-seat teruggebracht naar free. Totale engineering-tijd aan onze kant: één middag en een check-in op woensdagochtend. Dit is de aanpak.
Waarom de Zapier-rekening groeide
De mechaniek is geen mysterie. Zapier rekent per task. Een task is één geslaagde actie binnen een Zap. Bij meerstapsworkflows tikt dat snel aan. Eén lead vanuit Meta gaat naar Slack (1), maakt een HubSpot-contact aan (2), zet hem in een sequence (3), pingt de AE (4), schrijft een regel naar een Google Sheet (5). Eén lead, vijf tasks. Veertig leads per dag verdeeld over drie ad-accounts. Tel daar de invoice-chase loop bij op (Stripe webhook, check overdue, mail, log, status updaten) en de teller loopt op. Hun rekening kwam neer op ongeveer 78.000 tasks per maand, op het Team-plan.
De gepubliceerde prijzen van Zapier maken dit transparant genoeg. Het product is prima. De prijscurve is de kostprijs van gemak: iemand anders host de engine, iemand anders slikt de egress, en die iemand wil marge. Zodra je business de lagere tiers ontgroeit, wordt de curve steil.
Wat n8n eigenlijk is
n8n is een workflow-automatiseringstool met hetzelfde node-graph idee als Zapier. Je sleept triggers en acties op een canvas, verbindt ze met pijlen, en publiceert. Het verschil: het is self-hostable onder een fair-code licentie, en je betaalt de runtime-kosten, niet een belasting per task. Op een kleine VPS draait het zoveel volume als je VPS aankan. Voor deze klant was dat een Hetzner CX22 van €4,51 per maand.
Het is geen drop-in vervanging. De node-catalogus is kleiner. Sommige Zapier-native integraties bestaan niet, en die bouw je met de HTTP Request node, wat prima is als je comfortabel API-documentatie leest. De UI helpt minder hand-in-hand. De community is scherp, maar je komt vroeg of laat in hun GitHub issues terecht. Het is ook sneller, eerlijker over wat er bij elke stap gebeurt, en aanzienlijk beter in het debuggen van meerstapsworkflows.
De dinsdagmiddag, op volgorde
We blokken de agenda van 13:00 tot 18:00. Eén operator vanuit de klant (degene die de helft van de Zaps zelf heeft geschreven), één engineer vanuit ons. Koffie. Een tweede monitor.
Stap 1: inventariseren
Voordat je iets aanraakt, exporteer je de Zap-lijst. De Zapier-UI laat 'm zien, maar de schoonste dump zit in de Zap History view. We catalogiseerden 56 Zaps. Ongeveer 18 hadden in 90+ dagen niet meer gevuurd. Zes waren duplicaten van andere Zaps die de oorspronkelijke auteur was vergeten te verwijderen. We markeerden er 24 als in scope voor migratie. De rest ging zonder ceremonie naar het archief.
Stap 2: n8n opzetten
Een kleine Hetzner VPS, Ubuntu 22.04, Docker, n8n in één container achter Caddy voor TLS. De totale opzettijd was ongeveer 25 minuten, waarvan het grootste deel wachten op een DNS-record dat moet propageren.
docker run -d --restart unless-stopped \
--name n8n \
-p 127.0.0.1:5678:5678 \
-e N8N_HOST=flow.client.tld \
-e N8N_PROTOCOL=https \
-e WEBHOOK_URL=https://flow.client.tld/ \
-e N8N_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
-v /opt/n8n:/home/node/.n8n \
docker.n8n.io/n8nio/n8nCaddy ervoor regelt certificaten met één blokje:
flow.client.tld {
reverse_proxy 127.0.0.1:5678
}Sla de encryption key op in 1Password voordat je iets anders doet. Raak je hem kwijt, dan zijn je opgeslagen credentials niet meer te redden.
Stap 3: bouw eerst de drukste Zaps
We sorteerden de in-scope Zaps op task-aantal. De top drie was goed voor 71% van de maandtasks. Die hebben we eerst met de hand herbouwd, terwijl de oorspronkelijke Zapier-versies gewoon bleven draaien. De lead-intake flow kostte 35 minuten. De invoice-chase loop, 50. Het campagne-overzicht, 40.
De HTTP Request node van n8n dekt alles waarvoor je geen native node vindt. Meta Lead Ads bijvoorbeeld had een handmatige webhook-setup nodig, maar het is hetzelfde webhook URL-patroon dat Meta van elk endpoint wil. HubSpot heeft een onderhouden node. Stripe heeft een onderhouden node. Slack heeft een onderhouden node. De 24 in-scope Zaps werden 19 n8n-workflows, omdat een paar samenvielen in gedeelde sub-workflows zodra we ze naast elkaar konden zien.
Stap 4: 48 uur parallel draaien
We schakelen niet meteen om. Twee dagen lang schrijven de nieuwe flows naar een staging Slack-kanaal en een HubSpot-testpipeline. Aan het eind van elke dag vergelijken we de aantallen met de live Zapier-output. Op dag twee matchen alle twaalf drukke flows binnen ±1 event. De afwijkingen zijn timezone edge cases rond middernacht UTC, die patchen we.
Stap 5: omschakelen via webhook
De enige flows die echt een cut-over nodig hebben, zijn die met inkomende webhooks (Meta, Stripe, kalender). De webhook URL bij de bron aanpassen, de eerste drie of vier echte events in de executions-tab van n8n in de gaten houden, bevestigen dat de payload goed geparsed wordt, klaar. De Zapier Zap blijft nog 24 uur aanstaan als vangnet.
Stap 6: Zapier archiveren
Woensdagmiddag is elke in-scope Zap gedupliceerd in n8n en geverifieerd. Vrijdag is het Zapier-account teruggezet naar free. Het seat wordt opgezegd op de verlengingsdatum. Niemand in het team merkt iets anders in zijn Slack-kanalen, en dat is het mooiste compliment dat een migratie kan krijgen.
Wat er daadwerkelijk brak
Drie dingen, op volgorde van pijn:
- De Stripe-naar-HubSpot invoice loop vuurde de eerste ochtend dubbel. Het standaardgedrag van de Stripe Trigger node in n8n is opnieuw vuren bij herstart van de workflow, tenzij je een cursor opslaat. We voegden een Set Workflow Static Data stap toe die de laatst verwerkte invoice ID bijhoudt. Vijf minuten werk zodra we de relevante docs-pagina hadden gelezen.
- Een Google Sheets node liep op dag drie tegen de per-user rate limit aan. Het automation-account van het bureau deed tijdens de ochtendbatch vier writes per seconde. We stapten over op batch updates (één write per 60 regels) en het probleem verdween.
- De campagne-overzichtsmail zag er in Outlook anders uit. De email-by-Zapier actie wikkelt content in nogal eigenwijze HTML. Wij stuurden rauwe HTML via de Send Email node van n8n. Twintig minuten werk om een basis inline-styles wrapper toe te voegen. De nieuwe versie ziet er eigenlijk beter uit.
Self-hosten betekent dat jij de uptime bezit. Sterft je n8n-bak om 3 uur 's nachts, dan sterft je invoice-chase mee. Zet basisbewaking op (Uptime Kuma, healthchecks.io, of een simpele cron-curl) voordat je Zapier opzegt.
Het nieuwe systeem in de gaten houden
Self-hosten ruilt de statuspagina van een leverancier in voor je eigen dashboard. We installeerden Uptime Kuma op dezelfde Hetzner-bak (een Docker-container van 50 MB) en richtten 'm op drie dingen: de n8n web UI, de Caddy reverse proxy, en een synthetische workflow die elke vijf minuten vuurt en alleen naar een privé Slack-kanaal schrijft als hij faalt. De totale onderhoudslast sinds de migratie is één wekelijkse check dat er 's nachts niets in Uptime Kuma op rood is gegaan.
We zetten ook de ingebouwde execution logs van n8n aan. De gratis retentie is 7 dagen, ruim voldoende voor een bureau-volume. Klopt er iets niet, dan open je het Executions-tabblad, vind je de gefaalde run, zie je de exacte node en payload, en pas je het aan. De task history van Zapier is prima, maar de debug-diepte in n8n speelt in een andere divisie: je kunt individuele nodes opnieuw draaien met aangepaste input, wat een loop van 20 minuten 'wat was de exacte payload' terugbrengt naar ongeveer 90 seconden.
De cijfers, zes maanden later
We migreerden op een dinsdag begin december. In juni ziet het plaatje er zo uit:
- Zapier-rekening: €0 (free tier, alleen voor de twee Zaps waarvoor we de moeite niet meer namen ze te migreren)
- Hetzner VPS: €4,51 per maand
- Hetzner snapshots en storage: €1,20 per maand
- Engineering-tijd besteed aan onderhoud van de n8n-bak sinds december: ongeveer 4 uur in totaal, voornamelijk n8n-versies upgraden en twee nieuwe flows toevoegen die het bureau later bedacht
Op jaarbasis ging de klant van €4.950 naar €69 aan tooling, tegenover de middag engineering die we tegen ons standaardtarief in rekening brachten. De terugverdientijd was ongeveer zes weken. Daarna is het pure marge, teruggewonnen op een regel die al een jaar lang stilletjes was opgelopen.
Wanneer je dit beter niet doet
Het migratierekensommetje werkt niet voor iedereen. Sla n8n over als:
- Je Zapier-rekening onder de €50 per maand zit. De kosten van een middag engineering plus je VPS eten elke besparing voor jaren op.
- Niemand in je team comfortabel API-documentatie leest. Self-hosted tools hebben een mens nodig die dat kan. Heb je die niet, dan kost één consulting-opdracht per kwartaal om flows te repareren stilletjes meer dan Zapier deed.
- Je sterk leunt op Zapier's AI-acties, paths of formatter-eigenaardigheden. n8n heeft equivalenten, maar die zijn anders gevormd. Plan een volledige herbouw, geen kopie.
- Je SOC 2-compliance nodig hebt op de automatiseringslaag. n8n biedt dit op zijn cloud-plan, maar dat kost meer dan Zapier. Self-hosted betekent dat jij het auditwerk doet.
Voor de rest (bureaus, e-commerce ops teams, B2B SaaS met hoog leadvolume) wordt het rekensommetje brutaal in Zapier's nadeel boven ruwweg €200 per maand aan task spend. Het break-even punt komt sneller dan de meeste ops-leads verwachten.
Het kleinste wat je vandaag kunt doen
Open je Zapier-dashboard. Sorteer Zaps op task-gebruik, aflopend. Zijn de top drie Zaps goed voor meer dan de helft van je maandtasks, dan zijn die drie je migratiedoel. Bouw de long tail niet opnieuw. Verplaats alleen de zware, en kijk hoe de rekening instort.
Toen we deze automatiseringsruggengraat bouwden voor het bureau uit Utrecht, was het ding waar we tegenaan liepen de Stripe-webhook dedup, opgelost met n8n's static workflow data en een Function node van vijftien regels. Zit je tegen een vergelijkbare rekening aan te kijken met een automatiseringsstack die organisch is gegroeid, dan is dat het soort procesautomatisering dat wij op het juiste fundament herschrijven en werkend opleveren, op een vrijdag.
Kern
Boven ruwweg €200 per maand aan Zapier-tasks verdient een self-hosted n8n-instance zich terug in zes weken en een middag engineering.
FAQ
Is n8n echt gratis?
De self-hosted Community-editie is gratis onder een fair-code licentie. Je betaalt voor de VPS die hem draait, meestal een paar euro per maand. n8n Cloud is betaald en heeft een tier-prijsstructuur vergelijkbaar met Zapier.
Hoe lang duurt een typische Zapier-naar-n8n-migratie?
Voor 20 tot 30 actieve Zaps met grotendeels mainstream integraties: reken op één middag om de zware flows te herbouwen, 48 uur parallel draaien, en een cut-over op vrijdag. Long tails van zelden gebruikte Zaps gaan meestal naar het archief.
Wat gaat er tijdens de migratie het vaakst stuk?
Webhook-deduplicatie (n8n heeft voor sommige triggers expliciete cursor-state nodig), Google Sheets rate limits als je per regel wegschrijft, en email HTML-rendering. Alle drie zijn fixes van 15 minuten zodra je ze in beeld hebt.
Moet ik kunnen programmeren om n8n te gebruiken?
Voor de meeste flows niet. Je moet wel comfortabel API-documentatie kunnen lezen wanneer er geen native node bestaat en je de HTTP Request node moet gebruiken. Kan niemand in het team API-docs lezen, blijf dan op Zapier.
Hoe zit het met SOC 2 of AVG-compliance?
Self-hosten legt de auditlast bij jou. AVG is recht door zee als je VPS in de EU staat (Hetzner Falkenstein of Helsinki). SOC 2 op de automatiseringslaag is makkelijker op n8n Cloud Enterprise dan op een self-hosted bak.