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)period—day,week,month,year,rangedate— bijv.last30,2026-05-01,2026-05-31format=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:
- In Looker Studio (vroeger Google Data Studio) → „Gegevensbronnen“ → „Matomo Connector“ (community-connector).
- Verbinding met Matomo tot stand brengen: URL + Auth-Token.
- Gegevensbron aanmaken (bijv. „VisitsSummary“).
- In Looker Studio een rapport maken of de gegevens direct in een tabel slepen.
- 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
&enTEXT()
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
