WordPress Training
Ressources

Matomo-gegevens automatisch naar Google Sheets exporteren

Matomo Analytics Dashboard

Matomo is een uitstekende analytics-oplossing — AVG-vriendelijk, eigendomsvriendelijk, datasoeverein. Wat Matomo echter niet standaard goed doet: gegevens flexibel in spreadsheets verder verwerken. Als u wekelijks een traffic-rapport naar de directie stuurt, maandelijks een SEO-audittabel bijhoudt of gewoon met de filterdurf van Google Sheets door uw gegevens wilt gaan, moet u Matomo en Sheets met elkaar trouwen. In de praktijk werken drie wegen, allemaal met een verschillende setup-inspanning. Voor de principiële vraag of Matomo of Google Analytics in 2026 de betere keuze is, leest u mijn bijdrage over Google Analytics vs. Matomo — deze hier gaat ervan uit dat u Matomo al gebruikt.

Vereisten: een draaiende Matomo-instantie (Cloud of self-hosted), API-toegang (zie hieronder), een Google-account met Sheets-toegang. Tijd voor setup: 30–90 minuten per methode.

Waarom Sheets in plaats van de Matomo-UI?

Voordat ik technisch word, kort de vraag: waarvoor is dit eigenlijk zinvol?

  • Rapportage aan stakeholders. Directieleden willen tabellen, geen dashboards met ingelogde muisactie. Een wekelijks automatisch gevulde Sheets-tabel met de vijf belangrijkste kerncijfers is goud waard.
  • Cross-tool-vergelijking. Als u Matomo-gegevens naast Search-Console-gegevens, Mailchimp-stats en CRM-conversies wilt tonen, is Sheets de lijm.
  • Eigen beoordelingssysteem. Wilt u uit bouncepercentage, sessieduur en conversiepercentage een „Page-Quality-Score“ berekenen? Draaitabellen, FORMULES, geneste IF's — dat is het thuisland van Sheets, niet van Matomo.
  • Historisch archief. Sommige Matomo-Cloud-plannen hebben limieten voor dataretentie. Wie belangrijke kerncijfers in Sheets bewaart, heeft ze over vijf jaar nog.

Wat Sheets niet vervangt: de Matomo-UI zelf. Funnel-analyses, sessieopnames, heatmaps — die doet u nog steeds in Matomo. Sheets is de aggregatie- en distributielaag.

Methode 1: Matomo Reporting API + Apps Script (stap voor stap)

De robuustste en flexibelste methode. Setup-tijd: 30–60 minuten.

Stap 1: Matomo Auth Token aanmaken.

In Matomo → Gebruikersbeheer → Beveiliging → „Authenticatie-tokens“ → „Nieuw token aanmaken“. Rechten: read-only op de relevante Sites. Noteer het token (u ziet het maar één keer).

Stap 2: API-URL opbouwen.

De Matomo Reporting API heeft een zeer consistente structuur:

https://IHR-MATOMO.example.com/index.php
  ?module=API
  &method=VisitsSummary.get
  &idSite=1
  &period=day
  &date=last30
  &format=JSON
  &token_auth=IHR_TOKEN

Belangrijke parameters:

  • method — wat u wilt opvragen (bijv. VisitsSummary.get, Actions.getPageUrls, Referrers.getKeywords)
  • idSite — de Site-ID (ziet u in de Matomo-backend)
  • periodday, week, month, year, range
  • date — bijv. last30, 2026-05-01,2026-05-31
  • format=JSON — geeft gestructureerde gegevens terug, ideaal voor Apps Script

Stap 3: Google Apps Script opzetten.

In Google Sheets → Extensies → Apps Script. Het volgende script (basisgeraamte):

function fetchMatomoVisitsSummary() {
  const url = 'https://IHR-MATOMO.example.com/index.php'
    + '?module=API&method=VisitsSummary.get'
    + '&idSite=1&period=day&date=last30'
    + '&format=JSON&token_auth=' + getToken();

  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  const data = JSON.parse(response.getContentText());

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Matomo');
  sheet.clearContents();
  sheet.appendRow(['Datum', 'Bezoeken', 'Unieke bezoekers', 'Bouncepercentage', 'Gem. tijd']);

  Object.entries(data).forEach(([date, metrics]) => {
    sheet.appendRow([
      date,
      metrics.nb_visits || 0,
      metrics.nb_uniq_visitors || 0,
      metrics.bounce_rate || '0%',
      metrics.avg_time_on_site || 0
    ]);
  });
}

function getToken() {
  return PropertiesService.getScriptProperties().getProperty('MATOMO_TOKEN');
}

Stap 4: token veilig opslaan. Apps Script → Projectinstellingen → Script-properties → MATOMO_TOKEN als sleutel, uw token als waarde. Zo staat het token niet in de code.

Stap 5: trigger instellen. Apps Script → Triggers → „Nieuwe trigger toevoegen“ → fetchMatomoVisitsSummary → tijdgestuurd → dagelijks om 06:00 uur.

Klaar. Vanaf nu actualiseert uw Sheet zich elke ochtend automatisch met de bezoekgegevens van de laatste 30 dagen.

Methode 2: Looker Studio als brug

Als u minder wilt scripten en meer wilt klikken.

Setup:

  1. In Looker Studio (vroeger Google Data Studio) → „Gegevensbronnen“ → „Matomo Connector“ (community-connector).
  2. Verbinding met Matomo tot stand brengen: URL + Auth-Token.
  3. Gegevensbron aanmaken (bijv. „VisitsSummary“).
  4. In Looker Studio een rapport maken of de gegevens direct in een tabel slepen.
  5. In Looker Studio → „Bestand“ → „Naar Google Sheets exporteren“ — eenmalig of via Scheduled Email.

Voordelen:

  • Geen code
  • Visualisaties „for free“ in Looker Studio
  • Geplande e-mailrapporten rechtstreeks vanuit Looker
  • Self-service voor niet-technische gebruikers

Nadelen:

  • Community-connectors zijn van wisselende kwaliteit — sommige zijn al twee jaar niet meer geüpdatet
  • Looker-Studio-rapporten zijn niet zo dynamisch als de native Sheets-logica
  • Traag bij grote hoeveelheden gegevens

Voor veel kleinere setups (zzp'ers, kleine bureaus) is dit de pragmatische oplossing — zonder Apps-Script-buikpijn.

Methode 3: plugins en SaaS-bridges

Er zijn twee soorten plugins:

WordPress-plugins (als Matomo via WordPress is ingebed):

  • „Matomo Analytics — Ethical Stats“ (officiële plugin van Matomo) toont weliswaar gegevens in het WordPress-dashboard, maar Sheets-export is niet ingebouwd.
  • „Connect Polylang for Matomo“ en vergelijkbare gespecialiseerde plugins richten zich op andere use cases.

SaaS-bridges:

  • Coupler.io — betaald (vanaf 49 USD/maand), klikgebaseerde integratie tussen Matomo en Google Sheets. Loont als u meerdere gegevensbronnen wilt integreren.
  • Supermetrics — de grote speler. Zeer duur (vanaf 99 EUR/maand), maar geschikt voor concerns.
  • Funnel.io — vergelijkbaar met Supermetrics, iets goedkoper.

Mijn advies voor de meeste lezers: methode 1 (Apps Script) is de beste investering in 60 minuten, die u zonder doorlopende kosten blijvend zelf kunt onderhouden. SaaS-bridges zijn dan zinvol als u meer dan 5 gegevensbronnen wilt orkestreren en geen zin hebt in scripten.

Foutbronnen: Auth-Token, CORS, rate-limits

In meer dan twintig setups heb ik de volgende fouten keer op keer gezien:

1. Auth-Token met te veel rechten. Maak voor de Sheets-integratie een eigen token aan met uitsluitend read-rechten voor de specifieke Site. Gebruik nooit admin-tokens — als u ooit het geopende tabblad doorgeeft, is het risico te hoog.

2. URL-encoding-fouten. Als u filters met speciale tekens gebruikt (bijv. segment=pageUrl=@/blog/), moeten die correct gecodeerd zijn. UrlFetchApp.fetch in Apps Script verwacht meestal schone URL's — encodeURIComponent() is uw vriend.

3. CORS-problemen (niet in Apps Script, maar in de browser). Als u de Matomo API vanuit een browser-webapp wilt aanroepen, hebt u CORS-headers in Matomo nodig. Apps Script wordt hierdoor niet getroffen, omdat de aanroep serverzijdig draait.

4. Rate-limits. Matomo Cloud heeft (per 2026) geen officiële API-rate-limits, maar bij self-hosted setups op zwakke hardware kunnen grote rapporten (bijv. pageviews over 365 dagen met segmentatie) de server overbelasten. Oplossing: smaller chunks, kortere date-ranges.

5. Inconsistenties in tijdstempels. Matomo gebruikt UTC. Als u in Sheets met lokale tijden werkt, kunnen er off-by-one-day-effecten optreden. Converteer in Apps Script vóór het schrijven met Utilities.formatDate(date, 'Europe/Vienna', 'yyyy-MM-dd').

Praktijkvoorbeeld: wekelijks traffic-rapport

Een concrete setup die ik voor drie klanten draaiend heb:

Sheet-opbouw:

  • Tab „Raw“: Apps-Script-gegevens uit Matomo (dagelijks geactualiseerd)
  • Tab „Weekly“: berekende weeksommen via QUERY()/SUMIFS()
  • Tab „Dashboard“: grafieken en KPI-boxen die naar „Weekly“ verwijzen
  • Tab „E-Mail“: voorbereide weektekst met & en TEXT()

Apps Script Trigger:

  • Dagelijks om 06:00: Raw-tab actualiseren
  • Elke maandag om 09:00: bovendien sendWeeklyEmail() uitvoeren, dat vanuit het Sheet een e-mail naar de stakeholders stuurt

De wekelijkse e-mail bevat dan automatisch: top 5 pagina's van de week, vergelijking met de vorige week en vorige maand, nieuwe referrers, technische opvallendheden (bijv. een plotseling gestegen bouncepercentage op een landingspagina).

Wie dezelfde richting opgaat — gegevens beter benutten, meer uit analytics halen — zou ook mijn bijdrage over gratis SEO-analyses voor beginners moeten bekijken. En voor het grote plaatje SEO + WordPress: WordPress SEO-basis.


Hulp bij de setup gewenst?

Als u de Apps-Script-setup voor uw Matomo-instantie niet zelf wilt opzetten, kan ik dat in 2–3 uur voor u inrichten — inclusief overdrachtstraining, zodat u zelf nieuwe rapporten kunt toevoegen. Schrijf me kort wat u wilt tracken.

Setup aanvragen: Contact opnemen

Tags

AnalyticsAutomatisierungGoogle SheetsMatomoReporting