Handleidingen · n8n

AI-dashboard bouwen met n8n en Google Looker Studio: realtime inzicht voor MKB

Bouw een volledig geautomatiseerd AI-dashboard met n8n, Google Sheets en Looker Studio. Realtime KPI's + dagelijkse Claude AI-samenvatting. Stap-voor-stap voor

🟡 Gevorderd — beetje technisch ⏱ 3-4 uur
Tools: n8nGoogle Looker StudioGoogle SheetsClaude API (optioneel)
Goud-op-zwart illustratie: spreadsheetdata voedt een dashboard met grafieken, marktradar en nieuwsbron

✅ Wat je leert in deze handleiding

  • ✓ n8n workflows opzetten die automatisch data verzamelen
  • ✓ Google Sheets als datawarehouse gebruiken
  • ✓ Looker Studio dashboards bouwen met live data
  • ✓ AI-summaries genereren via Claude API
  • ✓ Automatische e-mailrapportages instellen

54% van de Nederlandse MKB-bedrijven kampt met tegenvallende datakwaliteit als belemmering voor AI-adoptie. Een groter probleem is echter dat veel ondernemers helemaal geen overzicht hebben van hun eigen businessdata — ze leven van losse Excel-bestanden, handmatige exports en onderbuikgevoel.

In deze handleiding bouw je een volledig geautomatiseerd AI-dashboard. n8n verzamelt data uit je verschillende systemen, Google Sheets fungeert als central datawarehouse, Looker Studio visualiseert alles in realtime, en Claude geeft dagelijks een AI-samenvatting van je KPI's. Geen handmatig werk meer.

Wat je nodig hebt

Vereisten:
- n8n (self-hosted of n8n.cloud, vanaf €20/maand)
- Google account (Sheets + Looker Studio zijn gratis)
- Toegang tot je databronnen via API (CRM, webshop, boekhouding)
- Claude API key (optioneel, voor AI-summaries) — anthropic.com/pricing
- Basiskennis van n8n nodes (zie onze handleiding n8n klantenservice-agent)

De architectuur in vogelvlucht

Ons dashboard werkt in vier lagen:

1. Databronnen: CRM (HubSpot/Pipedrive), webshop (WooCommerce/Shopify), boekhouding (Exact/Moneybird), Google Analytics
2. Datapijplijn: n8n haalt elke nacht (of elk uur) data op via API en schrijft naar Google Sheets
3. Visualisatie: Looker Studio leest live uit Google Sheets en toont grafieken
4. AI-laag: Claude analyseert de data en stuurt elke ochtend een samenvatting per e-mail

Deze architectuur is bewust simpel gehouden: geen dure datawarehouse, geen complexe ETL-pipeline, geen DevOps-kennis vereist.

Architectuuroverzicht:

[CRM API] ──────────────┐
[Webshop API] ──────────┼──> [n8n workflow] ──> [Google Sheets] ──> [Looker Studio]
[Boekhouding API] ──────┘          │
[Google Analytics] ─────────────────┘
                                   │
                             [Claude API]
                                   │
                             [E-mail rapport]

Stap 1: Google Sheets opzetten als datawarehouse

Maak een nieuw Google Spreadsheet aan met de naam 'Dashboard Data'. Maak de volgende tabbladen:

- Omzet — dagelijkse omzetcijfers per product/categorie
- Leads — nieuwe leads per dag, bron, status
- Klantenservice — aantal tickets, gemiddelde responstijd, CSAT score
- Website — sessies, conversiepercentage, bounce rate
- Meta — metadata (laatste update, datumrange)

Elk tabblad krijgt een vaste kolomstructuur die n8n telkens aanvult met nieuwe rijen.

Tabblad: Omzet
| datum      | omzet_excl  | omzet_incl  | orders | gem_orderwaarde | top_product    |
|------------|-------------|-------------|--------|-----------------|----------------|
| 2026-04-01 | 4.132,00    | 5.000,00    | 23     | 217,39          | Product A      |
| 2026-04-02 | 3.890,00    | 4.707,00    | 19     | 247,74          | Product B      |

Tabblad: Leads
| datum      | nieuwe_leads | bron_organisch | bron_betaald | bron_referral | gesloten_deals |
|------------|--------------|----------------|--------------|---------------|----------------|
| 2026-04-01 | 12           | 5              | 4            | 3             | 2              |

Stap 2: n8n workflow aanmaken voor databronnen

Open n8n en maak een nieuwe workflow aan: 'Dashboard Data Sync'. Deze workflow draait elke nacht om 02:00 en schrijft de data van de vorige dag naar Google Sheets.

Nodes die je nodig hebt:
1. Schedule Trigger — elke nacht 02:00
2. HTTP Request nodes voor elke databron
3. Code node voor data transformatie
4. Google Sheets node voor wegschrijven
5. Slack/e-mail node voor error notification

Startpunt: voeg de Schedule Trigger toe en stel in op 0 2 * * * (elke nacht 02:00).

// Schedule Trigger configuratie
{
  "rule": {
    "interval": [
      {
        "field": "cronExpression",
        "expression": "0 2 * * *"
      }
    ]
  }
}

Stap 3: HubSpot CRM data ophalen

Voeg een HTTP Request node toe voor HubSpot. We halen de deals op van gisteren via de HubSpot Deals API. Vervang YOUR_HUBSPOT_API_KEY met je eigen API-sleutel (te vinden in HubSpot > Instellingen > Integraties > Privé-apps).

// HTTP Request node: HubSpot Deals
{
  "method": "POST",
  "url": "https://api.hubapi.com/crm/v3/objects/deals/search",
  "headers": {
    "Authorization": "Bearer YOUR_HUBSPOT_API_KEY",
    "Content-Type": "application/json"
  },
  "body": {
    "filterGroups": [
      {
        "filters": [
          {
            "propertyName": "createdate",
            "operator": "GTE",
            "value": "{{ $now.minus(1, 'day').startOf('day').toMillis() }}"
          }
        ]
      }
    ],
    "properties": ["dealname", "amount", "dealstage", "hs_deal_stage_probability"],
    "limit": 100
  }
}

Stap 4: WooCommerce omzetdata ophalen

Voor webshop-eigenaren: WooCommerce heeft een ingebouwde REST API. Genereer een Consumer Key en Consumer Secret via WooCommerce > Instellingen > Geavanceerd > REST API.

// HTTP Request node: WooCommerce Orders (gisteren)
const gisteren = new Date();
gisteren.setDate(gisteren.getDate() - 1);
const datumStr = gisteren.toISOString().split('T')[0];

// URL in HTTP Request node:
const url = `https://jouwwebshop.nl/wp-json/wc/v3/orders?after=${datumStr}T00:00:00&before=${datumStr}T23:59:59&per_page=100&consumer_key=ck_XXXX&consumer_secret=cs_XXXX`;

// De response bevat orders met:
// order.total = omzet
// order.line_items = producten
// order.status = 'completed', 'processing', etc.

Stap 5: Data transformeren met een Code node

Voeg een Code node toe die de ruwe API-responses omzet naar de kolomstructuur van je Google Sheets. Dit is het hart van je pipeline.

// Code node: Data transformatie
const hubspotDeals = $node["HubSpot Deals"].json.results || [];
const wooOrders = $node["WooCommerce Orders"].json || [];

// Gisteren als datum
const gisteren = new Date();
gisteren.setDate(gisteren.getDate() - 1);
const datum = gisteren.toISOString().split('T')[0];

// Omzet berekenen
const omzetExcl = wooOrders
  .filter(o => o.status === 'completed')
  .reduce((sum, o) => sum + parseFloat(o.total), 0);

const aantalOrders = wooOrders.filter(o => o.status === 'completed').length;

// Leads tellen
const nieuweleads = hubspotDeals.length;

// Output rij voor Google Sheets
return [{
  json: {
    datum,
    omzet_excl: omzetExcl.toFixed(2),
    omzet_incl: (omzetExcl * 1.21).toFixed(2),
    orders: aantalOrders,
    gem_orderwaarde: aantalOrders > 0 ? (omzetExcl / aantalOrders).toFixed(2) : 0,
    nieuwe_leads: nieuweleads
  }
}];

Stap 6: Wegschrijven naar Google Sheets

Voeg een Google Sheets node toe. Configureer 'Append or Update Row' met de Spreadsheet ID en het juiste tabblad. n8n verbindt automatisch via OAuth — klik op 'Connect' en log in met je Google-account.

Belanrijke instellingen:
- Operation: Append Row
- Spreadsheet: [selecteer je Dashboard Data spreadsheet]
- Sheet: Omzet
- Mapping: koppel elk veld uit de Code node aan de juiste kolom

// Google Sheets node configuratie
{
  "operation": "appendOrUpdate",
  "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms",
  "sheetName": "Omzet",
  "columnMapping": {
    "A": "={{ $json.datum }}",
    "B": "={{ $json.omzet_excl }}",
    "C": "={{ $json.omzet_incl }}",
    "D": "={{ $json.orders }}",
    "E": "={{ $json.gem_orderwaarde }}"
  }
}

Stap 7: Looker Studio dashboard opzetten

Ga naar lookerstudio.google.com en maak een nieuw rapport aan. Voeg Google Sheets toe als databron.

Aangeraden visualisaties voor je eerste dashboard:
1. Scorecard: totale omzet deze week vs. vorige week
2. Lijndiagram: dagelijkse omzet laatste 30 dagen
3. Staafdiagram: omzet per product/categorie
4. Scorecard: nieuwe leads deze week
5. Tabel: top 10 producten (omzet + orderaantal)
6. Scorecard: gemiddelde orderwaarde (maand vs. vorige maand)

Tip: gebruik 'Date Range Control' zodat je zelf de periode kunt selecteren. Looker Studio ververst automatisch zodra n8n nieuwe data schrijft naar Sheets.

Aanbevolen Looker Studio layout:

┌─────────────────────────────────────────────────────────┐
│  Dashboard Workflows.nl MKB   [Datumfilter: 30 dagen]   │
├──────────┬──────────┬──────────┬──────────┬─────────────┤
│  Omzet   │  Orders  │  Leads   │ Gm.Order │  Conversie  │
│  €24.8K  │   134    │    67    │  €185    │    2.4%     │
│  ↑12%    │  ↑8%     │  ↑23%   │  ↑3%     │  ↓0.2%      │
├──────────┴──────────┴──────────┴──────────┴─────────────┤
│                  Dagelijkse omzet (lijn)                 │
│  ▁▂▃▄▅▄▅▆▇▆▅▄▃▄▅▆▇▇▆▅▄▅▆▇▆▅▄▃▄▅▆▇                     │
├──────────────────────────┬──────────────────────────────┤
│  Top producten (tabel)   │  Leads per bron (donut)      │
└──────────────────────────┴──────────────────────────────┘

Stap 8: Claude AI-samenvatting toevoegen

Het mooiste onderdeel: elke ochtend om 07:00 stuurt n8n de KPI-data naar Claude, die een leesbare samenvatting genereert en die per e-mail verstuurt. Voeg een tweede workflow toe: 'Ochtend AI Rapport'.

// HTTP Request node: Claude API aanroepen
// URL: https://api.anthropic.com/v1/messages
// Method: POST
// Headers: x-api-key: YOUR_CLAUDE_API_KEY, anthropic-version: 2023-06-01

const gisterData = $node["Google Sheets Lees"].json;

const prompt = `Je bent een zakelijk adviseur voor een MKB-bedrijf. Analyseer deze KPI's van gisteren en schrijf een korte, bondige samenvatting (max 200 woorden) met 3 concrete aandachtspunten.

KPI's:
- Omzet: €${gisterData.omzet_excl}
- Orders: ${gisterData.orders}
- Gemiddelde orderwaarde: €${gisterData.gem_orderwaarde}
- Nieuwe leads: ${gisterData.nieuwe_leads}
- Website bezoekers: ${gisterData.bezoekers}

Vergelijk met de week-gemiddelden en wijs op significante afwijkingen. Sluit af met 1 concrete actie voor vandaag.`;

return [{
  json: {
    model: "claude-sonnet-4-6",
    max_tokens: 500,
    messages: [{ role: "user", content: prompt }]
  }
}];

Stap 9: E-mail rapport versturen

Voeg een e-mailnode toe (Send Email in n8n). Gebruik Gmail of je eigen SMTP-server. Configureer het bericht met de AI-samenvatting en een directe link naar je Looker Studio dashboard.

<!-- E-mail template in n8n Send Email node -->
<h2>Goedemorgen! Hier zijn je KPI's van gisteren</h2>

<table style="border-collapse: collapse; width: 100%;">
  <tr>
    <td style="padding: 12px; background: #f8f9fa;"><strong>Omzet (excl. BTW)</strong></td>
    <td style="padding: 12px;">€{{ $json.omzet_excl }}</td>
  </tr>
  <tr>
    <td style="padding: 12px; background: #f8f9fa;"><strong>Aantal orders</strong></td>
    <td style="padding: 12px;">{{ $json.orders }}</td>
  </tr>
  <tr>
    <td style="padding: 12px; background: #f8f9fa;"><strong>Nieuwe leads</strong></td>
    <td style="padding: 12px;">{{ $json.nieuwe_leads }}</td>
  </tr>
</table>

<h3>AI-analyse</h3>
<p>{{ $node['Claude API'].json.content[0].text }}</p>

<p><a href="https://lookerstudio.google.com/reporting/JOUW_RAPPORT_ID" 
   style="background: #4285f4; color: white; padding: 12px 24px; 
          text-decoration: none; border-radius: 4px;">
  Open volledig dashboard
</a></p>

Stap 10: Alerts instellen voor afwijkingen

Voeg een IF node toe aan je nachtelijke workflow. Als de omzet meer dan 30% lager is dan het 7-daags gemiddelde, stuur dan een directe Slack/WhatsApp-melding. Zo word je altijd op tijd gewaarschuwd — niet de volgende ochtend maar direct.

// IF node conditie: omzet-alert
// Voeg toe na de Code node, voor Google Sheets

// Conditie (IF node):
// {{ $json.omzet_excl }} < {{ $json.gem_7dag * 0.70 }}

// True branch: Stuur Slack melding
// HTTP Request naar Slack Webhook:
{
  "text": ":warning: OMZET ALERT :warning:",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Omzet gisteren ({{ $json.datum }}): €{{ $json.omzet_excl }}*\nDit is {{ Math.round((1 - $json.omzet_excl / $json.gem_7dag) * 100) }}% onder het weekgemiddelde van €{{ $json.gem_7dag }}.\n\n*Actie vereist:* Check webshop, betalingsprovider en advertentiecampagnes."
      }
    }
  ]
}

// Slack Webhook URL: https://hooks.slack.com/services/XXXX/YYYY/ZZZZ
// (aanmaken via api.slack.com/messaging/webhooks)

Troubleshooting: veelvoorkomende problemen

Probleem 1: n8n workflow mislukt — 'Rate limit exceeded'
Oorzaak: te veel API-calls in korte tijd
Oplossing: Voeg een Wait node toe (1-2 seconden) tussen elke API-aanroep. HubSpot limiet: 100 requests/10 seconden; WooCommerce: 25 requests/seconde

Probleem 2: Google Sheets node — 'Insufficient permission'
Oorzaak: n8n OAuth-scope te beperkt
Oplossing: Verwijder de Google-koppeling in n8n en verbind opnieuw. Zorg dat je 'all Google Sheets' aanvinkt tijdens autorisatie

Probleem 3: Looker Studio toont verouderde data
Oorzaak: Looker Studio cache (standaard 12 uur)
Oplossing: Klik op Data > Data vernieuwen in Looker Studio, of stel refresh in op 1 uur via de databroninstelling

Probleem 4: Claude API geeft lege response
Oorzaak: prompt te lang of model-timeout
Oplossing: Beperk de data die je meestuurt tot de meest relevante KPI's. Gebruik max_tokens: 400 en temperature: 0.3 voor consistente output

Probleem 5: Dubbele rijen in Google Sheets
Oorzaak: workflow draait twee keer (retry na fout)
Oplossing: Gebruik 'Append or Update Row' in plaats van 'Append Row', met datum als unieke sleutel

Wat kost dit?

De totale kosten van dit dashboard zijn minimaal:

- n8n Cloud Starter: €20/maand (tot 5.000 workflow-uitvoeringen)
- Google Sheets: gratis
- Google Looker Studio: gratis
- Claude API (AI-summaries): circa €2-5/maand bij dagelijkse runs

Totaal: circa €22-25/maand

Ter vergelijking: een BI-tool als Tableau kost €70-140/maand per gebruiker. Power BI Premium €20/gebruiker/maand (plus Azure kosten). Je bespaart niet alleen geld — je bouwt ook iets dat precies past bij jouw databronnen, zonder vendor lock-in.

ROI-berekening: als dit dashboard je 2 uur per week bespaart op handmatige rapportages (à €50/uur), verdien je €400/maand terug op een investering van €25. Terugverdientijd: minder dan 2 dagen.

Uitbreidingsmogelijkheden

Dit dashboard is een startpunt. Mogelijke uitbreidingen:

- Financieel dashboard: koppel Exact Online of Moneybird voor realtime P&L overzicht
- Social media analytics: Instagram Insights, LinkedIn Analytics, TikTok API
- Voorspellende analytics: train een eenvoudig ML-model op historische data om volgende week's omzet te voorspellen
- Klantwaarde-tracking: bereken CLV per klant-segment automatisch
- Concurrentieanalyse: monitor prijswijzigingen van concurrenten via web scraping nodes
- WhatsApp rapport: stuur de AI-samenvatting naar WhatsApp Business in plaats van e-mail

Verwante handleidingen op workflows.nl:
- n8n klantenservice-agent bouwen met Claude
- HubSpot AI voor leadgeneratie
- Power Automate + Copilot voor documentworkflows

Conclusie

Met n8n en Google Looker Studio bouw je een professioneel AI-dashboard voor circa €25 per maand — zonder data-analist, zonder dure BI-tools, zonder weken configureren.

De kern van dit systeem:
- n8n haalt automatisch data op uit al je systemen
- Google Sheets slaat alles op in een structuur die Looker Studio begrijpt
- Looker Studio visualiseert alles in realtime
- Claude analyseert de data en stuurt je elke ochtend een bruikbaar rapport

Begin vandaag met de Google Sheets structuur (Stap 1) en bouw van daaruit verder. De eerste werkende versie heb je in een middag.

Gerelateerd

Nieuwsbrief

Meer handleidingen en tips?

Elke week de beste agentic AI inzichten en nieuwe handleidingen in je inbox.

Gratis aanmelden →