Kennisbank

Measurement Protocol en Data Manager API: offline data naar GA4 sturen

Dit artikel behandelt hoe je gebeurtenissen die buiten de browser plaatsvinden, zoals offline aankopen of server-side bevestigingen, alsnog in GA4 krijgt. Je leest hoe je een API-secret aanmaakt, welke velden en limieten een request naar /mp/collect heeft, hoe je test via het debug-endpoint en hoe je consent meestuurt. Ook zie je wanneer de Data Manager API de betere keuze is, bijvoorbeeld als dezelfde koppeling ook Google Ads moet voeden.

Gepubliceerd op: 24 oktober 2026|Door carlokop|0 Reacties|4 min leestijd

Met het Measurement Protocol stuur je events vanaf je eigen server naar GA4, bijvoorbeeld een aankoop in de winkel of een lead die in je CRM wordt afgerond. Je doet een HTTPS POST naar /mp/collect met de meet-ID, een api_secret en de client_id van de websitetag. Met session_id en timestamp_micros (maximaal 72 uur terug) koppel je het event aan het oorspronkelijke bezoek.

Het protocol vult de Google-tag of GTM aan en vervangt ze niet. Staat die basis er nog niet, begin dan met GA4-account aanmaken. Offline of CRM-conversies naar Google Ads sturen is een apart traject. De Data Manager API kan events naar meerdere Google-producten sturen en komt onderaan kort aan bod.

Waarvoor het GA4 Measurement Protocol bedoeld is

De tag op je website verzamelt automatisch context zoals apparaat en locatie. Een Measurement Protocol-event heeft die context alleen als GA4 het via de client_id kan koppelen aan events van de websitetag. Gebruik het dus voor gebeurtenissen die niet in de browser plaatsvinden of die je server betrouwbaarder kent: offline aankopen, kassasystemen, kiosken en server-side bevestigingen. Een volledige server-to-server-implementatie zonder tag levert beperkte rapportage op. Het is daarmee één onderdeel van je datacollectie, naast de tag en eventueel server-side tagging.

API-secret aanmaken

Een API-secret (api_secret) maak je per datastream aan via Beheer → Gegevensstreams → [je webstream] → Measurement Protocol API-secrets → Maken. Geef het een herkenbare naam en kopieer de waarde. Het secret hoort alleen op de server. Staat het in client-side code, dan kan iedereen events naar je property sturen.

De request naar mp/collect

De request gaat naar https://www.google-analytics.com/mp/collect. Voor EU-collectie kun je region1.google-analytics.com gebruiken. measurement_id en api_secret staan in de querystring, de events in de JSON-body.

POST https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXXX&api_secret=JOUW_SECRET
Content-Type: application/json

{
  "client_id": "CLIENT_ID_UIT_DE_WEBSITETAG",
  "timestamp_micros": 1791187200000000,
  "consent": {
    "ad_user_data": "GRANTED",
    "ad_personalization": "DENIED"
  },
  "events": [{
    "name": "purchase",
    "params": {
      "session_id": "1791186000",
      "engagement_time_msec": 100,
      "transaction_id": "T_12345",
      "value": 129.95,
      "currency": "EUR"
    }
  }]
}

timestamp_micros is een Unix-tijd in microseconden, niet in milliseconden. Laat je het weg, dan geldt het tijdstip van de request. Events mogen maximaal 72 uur worden teruggedateerd. Bij een oudere timestamp zet de standaardinstelling RELAXED het event op 72 uur geleden; met ENFORCE_RECOMMENDATIONS wordt het geweigerd. Moet het event samengaan met client-side events, stuur het dan bij voorkeur binnen 48 uur na het oorspronkelijke event.

Schema met links de route browser, tag, GA4 en rechts kassa of CRM via server en POST /mp/collect naar dezelfde property; verbonden via client_id; eronder een tijdlijn met maximaal 72 uur terugdateren en bij voorkeur binnen 48 uur

Dezelfde property via de websitetag of via /mp/collect, gekoppeld met client_id. Events max. 72 uur terug; bij voorkeur binnen 48 uur.

client_id, session_id en user_id

De client_id moet overeenkomen met die van de websitetag. Lees hem dus uit op het moment van de bestelling of het formulier, en bewaar hem bij de order of lead. user_id is optioneel.

Stuur session_id en engagement_time_msec mee als het event in Realtime en sessierapporten moet verschijnen. session_id is verplicht voor sessieattributie (session attribution) en voor het toewijzen van een User-ID. Voor sessieattributie moet de request binnen 24 uur na de start van de sessie binnenkomen.

Limieten en gereserveerde namen

  • maximaal 25 events per request en 25 parameters per event;
  • JSON-body kleiner dan 130 kB;
  • eventnamen en parameternamen maximaal 40 tekens; parameterwaarden maximaal 100 tekens (500 bij GA360);
  • maximaal 25 user properties per request;
  • gereserveerde eventnamen zoals session_start, first_visit en user_engagement kun je niet versturen.

Valideren voordat je live gaat

Het productie-endpoint geeft een 2xx-respons zodra de request binnen is, ook als de payload niet klopt. Test daarom eerst tegen /debug/mp/collect met validation_behavior op ENFORCE_RECOMMENDATIONS. Debug-events komen niet in je rapporten. De validatieserver controleert measurement_id en api_secret niet; die controleer je zelf.

Consent meesturen

Met het object consent geef je ad_user_data en ad_personalization mee als GRANTED of DENIED. Laat je het weg, dan gebruikt GA4 de consentstatus van de bijbehorende online interacties van die client.

Data Manager API als nieuwere route

De Data Manager API stuurt events en conversiegegevens in één aanroep naar meerdere Google-producten, waaronder GA4 en Google Ads. Hij ondersteunt encryptie, werkt zonder api_secret en geeft direct een fout terug bij een ongeldige request (fast-fail), waar het Measurement Protocol alleen via de validatieserver fouten meldt. Voor offline conversies en verbeterde conversies voor leads in Google Ads is hij de vervanger van de Google Ads API: daar worden die uploads sinds 15 juni 2026 geblokkeerd, behalve voor developer tokens op de legacy-allowlist.

Voor een paar offline events per dag naar GA4 is het Measurement Protocol nog steeds de eenvoudigste oplossing. Bouw je een nieuwe koppeling die ook Google Ads moet voeden, begin dan met de Data Manager API.

Klaar voor actie?

Wil je dit toepassen op jouw website?

Ik help je de keuzes uit dit artikel om te zetten in een werkende setup, meetbaar en zonder technische ruis.

Verder lezen

Terug naar kennisbank

Alle artikelen in Google Analytics