← Blog

Automation

Van Zapier-wildgroei naar Temporal: €2.120 minder per maand

Vier overlappende automatiseringstools, €2.300 per maand op de rekening, en een Zap die in stilte 47 orders liet vallen. De oplossing was geen extra tool. Het was Temporal.

Jacob Molkenboer· Oprichter · A Brand New Company· 7 jun 2026· 9 min
Versleten ivoren bureau met verknoopte messing telegraafkabels links, papieren formulier met groen briefje ernaast.

Het duidelijkste signaal dat je Zapier-stack uit de hand is gelopen: de operations lead kan in één zin niet meer uitleggen wat er gebeurt als een klant een bestelling plaatst.

Bij een van onze klanten in Almere kostte dat antwoord zeven minuten en een whiteboard. Een Shopify-bestelling stuurde een webhook naar Zapier. Zapier gaf die door aan een Make-scenario dat bepaalde of de SKU in het hoofdmagazijn lag of bij de 3PL in Venlo. De 3PL-tak liep via een aparte n8n-workflow op hun hosted instance. De express-verzending triggerde een Pipedream-pipeline die een rij naar Airtable schreef en een Slack-kanaal pingde. Klantmails liepen via Klaviyo. De financiële koppeling met Exact Online zat in een vijfde tool waar al elf maanden niemand meer in had ingelogd.

Vier automatiserings-SaaS-facturen. Drie smaken van YAML-of-toch-niet. Eén ops lead, op een zondagavond, met de vraag waarom 47 orders ergens tussen Shopify en het pickstation waren verdwenen.

Dit stuk gaat over wat we eraan hebben gedaan, en hoe de rekening er negentig dagen later uitzag.

De wildgroei van vier tools, uitgedrukt in geld

De operator heeft 51 mensen in dienst, grotendeels magazijn en klantenservice. Hun automatiseringsrekening in maart 2026 zag er ongeveer zo uit:

  • Zapier Company plan, ~100k tasks: €1.520
  • Make Pro, ~80k operations: €340
  • n8n Cloud Team: €240
  • Pipedream Business: €180

Totaal: €2.280. Afgerond €2.300. Ze zaten al dertien maanden stilletjes boven de €2.000. Elke Black Friday sprong dat omhoog naar €4.400, omdat Zapier en Make allebei factureren op een gebruikscurve die je afstraft in precies die maanden dat je ze het hardst nodig hebt.

Niemand had hier echt schuld aan. Ze hadden hun eerste ops lead in 2022 aangenomen, kozen Zapier omdat het bureau dat ze gebruikten Zapier koos, en voegden een jaar later Make toe omdat het volgende bureau Make koos. Elke tool loste een echt probleem op op het moment dat hij werd ingevoerd. Niemand was ooit betaald om de vorige eruit te slopen.

Waarom Zapier de verkeerde kant op schaalt voor een order-gedreven business

Zapier rekent op tasks. Een task is grofweg één stap in een Zap. Een enkele Shopify-bestelling met vier regels, een voorraadcheck, een routeringsbeslissing, een 3PL-overdracht, een mail en een boekhoudkoppeling jaagt makkelijk acht tasks erdoor. Vermenigvuldig dat met 30.000 bestellingen per maand en je zit op 240.000 tasks, en dan zit je vast in Zapier's Company-tier. Elk procent omzetgroei vermenigvuldigt de rekening.

Prima als je €80 per maand uitgeeft en gewoon iets aan de praat probeert te krijgen. Dat stopt ergens rond de €1.000 per maand met prima zijn, want voor datzelfde bedrag had je een freelancer kunnen inhuren om de workflow in code te schrijven.

Het andere probleem zijn onzichtbare fouten. Als een Zap kapot gaat, krijg je een mail. Heb je 280 Zaps waarvan er veertien dagelijks onschuldig ogende waarschuwingen geven, dan lees je die mails niet meer. Het zondagavond-incident waarvoor we werden gebeld, was een Zap die twee weken eerder in stilte was uitgeschakeld omdat Shopify een veld in een webhook-payload had aangepast. Zevenenveertig bestellingen waren binnengekomen bij Shopify, hadden het magazijn nooit bereikt, en de klanten begonnen het door te krijgen.

Waarom specifiek Temporal

We hebben drie opties bekeken. Self-hosted n8n, dat de rekening zou drukken maar de operationele vorm hetzelfde zou houden. Inngest, dat netjes past bij event-driven JavaScript maar niet aansloot bij de bestaande TypeScript-backendconventies van het team. En Temporal, waarvoor we hebben gekozen.

Temporal is een workflow engine. Je schrijft workflows als gewone functies in TypeScript, Go, Python, Java of .NET. Het framework slaat elke stap op die de functie zet, dus als een worker-proces halverwege crasht, pakt een andere worker het exact bij de regel op waar het stopte. Geeft een externe API een 502, dan probeert de workflow het opnieuw volgens het backoff-beleid dat je hebt geschreven. Deploy je de worker opnieuw, dan lopen actieve workflows door op de nieuwe code waar dat veilig kan en op de oude code waar dat de geschiedenis zou veranderen.

Drie eigenschappen waren doorslaggevend voor deze operator.

De eerste is durable execution. Het zondagavond-probleem van "de Zap is in stilte gestopt" kan op deze manier niet meer gebeuren, omdat een Temporal-workflow ofwel loopt, klaar is, hard gefaald is, of gepauzeerd staat op een timer die je in de UI kunt zien.

De tweede is replay. Als iets stuk gaat, kun je een gefaalde workflow opnieuw uitvoeren tegen de huidige code zonder een custom recoveryscript te schrijven. Dat alleen al haalde een hele categorie ad-hoc Slack-reddingsdraden uit de week van de ops lead.

De derde is voorspelbare kosten. Je betaalt voor compute, niet voor events. De operator draait nu vier kleine workers op een Hetzner CCX13-cluster, plus een Temporal Cloud namespace op de Essentials-tier. Dat is de rekening van €180.

De eerste workflow die we hebben verplaatst

We hebben order-to-fulfillment als eerste gepakt, omdat die alles raakte wat al kapot ging: Shopify, het magazijn-picksysteem, de 3PL EDI-feed, Klaviyo voor klantmails, en de Exact Online-boekhoudkoppeling. Als we die ene workflow konden verplaatsen en een week konden overleven, konden we de rest ook.

Hier is de workflowfunctie, vereenvoudigd om op de pagina te passen.

import { proxyActivities, sleep } from '@temporalio/workflow'
import type * as activities from './activities'

const {
  reserveStock,
  routeFulfillment,
  notifyCustomer,
  postToAccounting,
  flagForManualReview,
} = proxyActivities<typeof activities>({
  startToCloseTimeout: '30 seconds',
  retry: { maximumAttempts: 5, initialInterval: '2s' },
})

export async function orderWorkflow(order: ShopifyOrder) {
  const reservation = await reserveStock(order)

  if (!reservation.ok) {
    await flagForManualReview(order, reservation.reason)
    return { status: 'manual_review' }
  }

  const route = await routeFulfillment({
    order,
    carrier: reservation.location === 'venlo' ? '3pl_venlo' : 'in_house',
  })

  await notifyCustomer(order, route)

  // Wait up to 24h for the warehouse to confirm picking
  await sleep('24 hours')

  await postToAccounting(order, route)
  return { status: 'done', route }
}

Alles wat daadwerkelijk met de buitenwereld praat, leeft in het activities-bestand. De workflowfunctie is deterministisch. Hij roept geen Date.now() aan, genereert geen random getallen, leest geen environment variables. Heeft hij een timestamp nodig, dan vraagt hij die aan een activity. Die beperking is de prijs van replay, en hij bijt als je code migreert vanuit Zapier of Make, want die tools moedigen je aan om precies het tegenovergestelde te doen.

De aanpak van de migratie

We hebben de standaard strangler fig gebruikt. De Zapier- en Make-scenario's bleven online. We stuurden een kopie van de Shopify-webhook naar een kleine Express-server vóór Temporal. Een week lang draaiden we beide paden en vergeleken de outputs in een derde script. Toen het nieuwe pad vijf werkdagen op rij voor 100% van de bestellingen hetzelfde resultaat opleverde, hebben we de webhook-target omgewisseld en de Zaps één route per keer uitgezet.

De volledige migratie kostte elf kalenderweken. Vier workflows gingen live in de eerste drie weken. De lange staart bestond uit edge cases in de financiële koppeling, retourafhandeling, en een specifiek btw-scenario voor Duitse klanten dat de oude opzet al sinds 2024 in stilte verkeerd deed.

Wat er stuk ging, eerlijk gezegd

Drie echte valkuilen, in de volgorde waarin we ze tegenkwamen.

Idempotency was een bijzaak

Temporal probeert activities opnieuw. Soms probeert hij een activity opnieuw die wél is geslaagd maar dat niet heeft kunnen bevestigen. Als je postToAccounting-activity elke keer een nieuwe factuur in Exact Online aanmaakt, krijg je een slechte maand. Elke externe schrijfactie heeft een idempotency key nodig, meestal de workflow-ID plus een stapnaam. We hebben dit toegevoegd aan Klaviyo, Exact en ons magazijnsysteem. Het magazijnsysteem ondersteunde het niet, dus hebben we een dunne proxy geschreven die dat wel deed.

De grootte van de worker pool is niet vanzelfsprekend

De standaard worker concurrency gaat ervan uit dat je activities snel zijn en je workflows kort. De 3PL EDI-activity duurde 8 tot 30 seconden, afhankelijk van het tijdstip. Bij onze eerste Black Friday-repetitie stonden 4.000 workflows in de wachtrij achter een worker pool die was ingericht op kantooruren. We hebben workers gesplitst per task queue (één pool voor magazijn-activities, één voor financiën, één voor mail) en de queue-diepte ging terug naar enkele cijfers.

Workflow-versionering bijt bij de deploy

Als een workflow loopt op het moment dat je code wijzigt, kan replay falen omdat de nieuwe code een andere tak neemt dan de oude. De versioning-API van Temporal regelt dat, maar je moet hem wel gebruiken. We hebben dit geleerd zoals de meeste teams het leren: door op een woensdagmiddag drie lopende workflows kapot te maken en aan de ops lead uit te leggen wat "non-deterministic error" betekent.

De betreffende woensdag: drie bestellingen stonden gepauzeerd in de 24-uurs sleep-call. De deploy voegde een tweede sms-notificatie toe na de mailstap. Toen de workflows wakker werden, liep de replay engine door de oude geschiedenis, raakte de nieuwe code-tak die er eerder niet was, en gooide NondeterminismError. We hebben de deploy binnen tien minuten teruggedraaid, de nieuwe sms-stap achter patched('add-sms-v1') gezet, en opnieuw uitgerold. Klantimpact: nul, want de orders stonden veilig gepauzeerd en hervatten netjes bij de tweede poging. Lessen: één, voorgoed geleerd.

Let op

Stap niet over op Temporal als je niet minstens één engineer hebt die comfortabel een stack trace leest. De besparing is echt. De leercurve ook. Reken op twee weken "dit is raar" voordat het klikt.

De cijfers na negentig dagen

We hebben de nieuwe stack acht weken naast de oude laten draaien, en daarna vier weken op zichzelf. De vergelijking die de CFO van de operator opvroeg, zag er zo uit.

  • Maandelijkse automatiseringsrekening: €2.300 naar €180
  • Aantal SaaS-dashboards dat de ops lead per week opent: 4 naar 1
  • Gemiddelde tijd om een stille fout op te merken: ongeveer 6 uur naar ongeveer 90 seconden
  • Regels workflow-logica onder versiebeheer: 0 naar alles
  • Engineering-tijd besteed aan de migratie: 7 weken één senior, parttime

Die €180 is eerlijk. Het is één CCX13 (4 vCPU, 16GB) plus een CCX23 standby op Hetzner, de Temporal Cloud Essentials namespace, en één Sentry-seat. Network egress is afrondingsruis. Groeien ze nog eens met factor 3 in ordervolume, dan loopt de rekening op naar ongeveer €260. Waren ze op Zapier gebleven bij diezelfde factor 3, dan was de prognose €6.400 geweest.

Wanneer Temporal het verkeerde antwoord is

Drie eerlijke gevallen waarin we mensen afraden dit te doen.

Zijn je workflows vooral enkel-staps, dan is Zapier prima. De hele kern van de vergelijking hierboven is dat de operator multi-step workflows draaide met retries, branching, en lange wachttijden. Een "nieuwe lead in HubSpot, stuur een Slack-bericht"-automatisering rechtvaardigt niks van dit alles.

Heb je geen engineer in je team die een vastgelopen workflow kan debuggen, migreer dan niet. Temporal geeft je durable execution en eist competentie terug. Workato of de enterprise-tier van Make past beter als je een no-code interface nodig hebt waar iemand in marketing aan kan sleutelen.

Zit je nog niet tegen de per-task prijsmuur aan, wacht dan. Het break-evenpunt voor deze operator lag rond €800 per maand aan automatiserings-SaaS. Daaronder kost de migratie meer dan de besparing binnen een jaar terugverdient.

Een audit van vijf minuten die je vandaag kunt doen

Open de facturen van de afgelopen drie maanden van elke automatiserings-SaaS die je betaalt. Tel ze op. Deel door drie. Is dat getal hoger dan wat je een freelancer zou betalen voor twee weken geconcentreerd werk, dan heb je een wildgroei-probleem dat het meten waard is. Tel daarna hoeveel van die tools je ops lead deze maand in is geweest. Is het antwoord meer dan twee, dan kost de wildgroei je al iets wat niet op de factuur staat.

Toen we de orderpipeline voor deze Almeerse operator herbouwden, liepen we tegen de aanname aan dat de maandfactuur van elke tool de echte kostpost was. De verborgen kost was het telefoontje op zondagavond. We hebben beide opgelost met één Temporal worker pool en een week van zorgvuldige migratie. Lijkt je stack hierop en herken je de bedragen, dan is dat het soort process automation-werk dat wij doen.

Kern

Als je maandelijkse automatiserings-SaaS-rekening hoger is dan twee weken van een freelancer, betaal je iemand anders zijn hostingmarge.

FAQ

Is Temporal de moeite waard voor een kleine e-commerce shop?

Alleen als je automatiserings-SaaS-rekening boven de €800 per maand zit en je workflows multi-step zijn met retries of lange wachttijden. Daaronder is Zapier of Make nog steeds de juiste keuze.

Hoe lang duurt een migratie van Zapier naar Temporal?

Voor een operator met vijf tot tien kernworkflows: reken op elf kalenderweken met één senior engineer parttime. Het meeste daarvan zijn edge cases in de financiële koppeling, niet de workflow-logica.

Kan een niet-engineer een Temporal-stack onderhouden?

Nee. Temporal eist engineering-competentie. Heeft je team niemand die comfortabel stack traces leest en versiebeheer gebruikt, blijf dan op een no-code automatiseringstool.

Waarom dan niet zelf n8n hosten?

Dat drukt de rekening maar houdt dezelfde operationele vorm: brittle replay, zwakke versionering, en geen durable execution. Voor multi-step orderworkflows zijn de garanties van Temporal het deel waarvoor je betaalt.

automationprocess automationcase studyworkflowmigratione-commerce

Iets bouwen?

Start een project