Wat je bouwt en waarom
Een maandelijkse klantrapportage kost bureaus en consultants gemiddeld 4 uur per klant. Met Google Sheets als databron, n8n als automatiseringsmotor, Claude voor het schrijven en Gmail voor de verzending, reduceer je die 4 uur naar 10 minuten menselijk werk -- namelijk het controleren van de data. De rest gaat volledig automatisch.
Het eindresultaat: elke eerste maandag van de maand ontvangt elke klant een gepersonaliseerd rapport met hun KPI's, trends en aanbevelingen. Gegenereerd op basis van jouw data in Google Sheets, geschreven in jouw tone of voice, verstuurd als PDF via Gmail.
Stap 1: Google Sheets structuur opzetten
Maak een Google Sheet aan met een duidelijke structuur. Gebruik twee tabbladen: 'Klanten' (met klantnaam, e-mailadres, rapportage-template, accountmanager) en 'Data' (met per klant de maandelijkse KPI's in kolommen).
In het Data-tabblad gebruik je kolomnamen als [klantnaam]_[metriknaam] zodat je per klant de juiste data kunt ophalen via een filter. Voorbeeld: 'AcmeBV_websitebezoekers', 'AcmeBV_leads', 'AcmeBV_conversieratio'. Dit schema maakt het eenvoudig om per klant een datarij samen te stellen.
Stap 2: Cron trigger instellen in n8n
Open n8n en maak een nieuw workflow aan. Voeg een Schedule Trigger toe. Stel de cron-expressie in op '0 8 1 * *' -- dit triggert elke eerste dag van de maand om 08:00 uur. Als de eerste dag een weekend is, wil je misschien '0 8 1-7 * 1' gebruiken, wat de eerste maandag van de maand pakt.
Voeg een Google Sheets node toe die het Klanten-tabblad ophaalt. Gebruik 'Get Many Rows' om alle klanten te laden. Voeg een filter toe op de kolom 'actief = TRUE' zodat inactieve klanten geen rapport krijgen.
Stap 3: Data per klant ophalen uit Google Sheets
Gebruik een Split in Batches node om elke klant apart te verwerken. Voeg voor elke klant een Google Sheets node toe die het Data-tabblad filtert op klantnaam en de afgelopen twee maanden ophaalt (huidige maand en vorige maand voor de vergelijking).
Sla de data op in een duidelijk JSON-object met huidigeMaandData en vorigeMaandData. Dit gebruik je later voor de KPI-berekening en de Claude-prompt.
Stap 4: KPI's berekenen en vergelijken
Voeg een Code node toe die de groei berekent tussen de huidige en vorige maand. Bereken procentuele veranderingen, sla op of een metric gestegen of gedaald is, en markeer significante veranderingen (meer dan 15% positief of negatief) voor extra aandacht in het rapport.
Stap 5: Claude rapport laten schrijven
Nu komt het mooiste deel: Claude schrijft het volledige klantrapport. Geef Claude in je system prompt de tone of voice van je bureau mee, en in de user prompt alle KPI-data plus instructies voor de structuur van het rapport.
Vraag Claude om HTML-output -- dat geeft je meer opmaakopties dan plain text en is makkelijker te converteren naar PDF. Specificeer de secties die je wilt: samenvatting, KPI-overzicht, opvallende ontwikkelingen, aanbevelingen voor volgende maand.
Stap 6: HTML naar PDF converteren
Om het rapport als PDF te versturen, gebruik je een HTTP Request node die een PDF-generatie API aanroept. Goede opties zijn html2pdf.app (heeft een gratis tier), PDFShift, of je eigen Puppeteer-server. Stuur de HTML van Claude naar de API en ontvang een PDF als base64-encoded string terug.
Stap 7: Gmail versturen met PDF-bijlage
Voeg een Gmail node toe om het rapport te versturen. Gebruik 'Send Email' en voeg de PDF als bijlage toe. Naam de bijlage dynamisch: '[Klantnaam]-Rapport-[Maand]-2026.pdf'. Zo heeft de klant een goed geordend archief.
Stuur een CC naar de accountmanager zodat hij of zij op de hoogte is. Voeg een korte persoonlijke begeleidende e-mail toe -- een paar regels die aansluiten op het rapport en geschreven zijn in jouw tone of voice.
Stap 8: Logboek bijwerken in Google Sheets
Sluit de workflow af met een Google Sheets write-actie. Voeg per klant een rij toe aan een 'Logboek'-tabblad met: klantnaam, datum verzending, welke Claude-versie gebruikt, of er fouten waren, en een link naar de gegenereerde PDF (als je die opslaat in Google Drive).
Dit logboek is je audittrail. Als een klant later vraagt wanneer ze wat hebben ontvangen, kun je het snel terugvinden. Het geeft ook inzicht in eventuele fouten in de workflow.
Troubleshooting
Google Sheets quota: de Google Sheets API heeft limieten (300 requests per minuut). Bij veel klanten (50+) kan de workflow vastlopen. Voeg een Wait node toe van 1 seconde tussen elke klantverwerking.
Claude hallucineert getallen: geef in je system prompt expliciet mee dat Claude alleen de aangeleverde data mag gebruiken en niets mag verzinnen. Voeg een validatiestap toe die controleert of de getallen in het rapport overeenkomen met de input.
PDF-generatie mislukt: controleer of je HTML geldig is (Claude maakt soms HTML-fouten bij complexe tabellen). Voeg een fallback toe die plain text verstuurt als de PDF-conversie faalt.
Met deze workflow bespaar je niet alleen uren per klant per maand -- je levert ook consistenter en sneller dan concurrenten die nog manueel rapporten schrijven. Dat is het echte voordeel: niet de besparing van uren, maar de vrijheid om meer klanten te bedienen zonder meer mensen aan te nemen.