- De Meta Conversions API stuurt events zoals Purchase vanaf je server, zodat ze Meta ook bereiken als de browserpixel is geblokkeerd.
- Gebruik hem naast de pixel en geef beide kopieën dezelfde eventnaam en event_id; Meta telt het event dan één keer als beide binnen 48 uur aankomen.
- Website-events hebben action_source, event_source_url en de user agent van de shopper nodig; gehasht e-mailadres en telefoonnummer, IP-adres, fbp en fbc bepalen hoe goed Meta ze kan koppelen.
- Test met het tabblad Test events in Events Manager en verwijder daarna de testcode, want testevents worden niet weggegooid.
- De meeste problemen komen door niet-overeenkomende event-id's, het eigen IP-adres van de server, een verloren fbclid of contactgegevens die zijn gehasht zonder te normaliseren.
Met de Meta Conversions API (CAPI) kan je server events zoals Purchase rechtstreeks naar Meta sturen. De Meta-pixel stuurt dezelfde events vanuit de browser van de shopper. CAPI stuurt ze vanaf je server, dus ze komen nog steeds aan als een adblocker de pixel tegenhoudt, een cookie weg is of de bedankpagina nooit laadt.
Deze gids behandelt wat een Conversions API-event bevat, hoe je het naast de pixel laat draaien met één event_id, welke parameters Meta vereist en aanbeveelt, hoe je test met Test events en welke fouten het vaakst voorkomen.
Wat is de Meta Conversions API?
De Conversions API is onderdeel van de Graph API van Meta. Je server stuurt een HTTPS POST-verzoek naar graph.facebook.com/VERSION/PIXEL_ID/events met een toegangstoken en een data-lijst met maximaal 1,000 events. Elk event beschrijft één actie, zoals een aankoop, in drie delen: wat er gebeurde, wie het deed en de details.
| Veld | Wat het bevat |
|---|---|
event_name | De actie, bijvoorbeeld Purchase, AddToCart of InitiateCheckout |
event_time | Wanneer het gebeurde, als Unix-timestamp in seconden |
event_id | Een uniek id voor dit event, gebruikt om het te ontdubbelen met de pixel |
action_source | Waar het gebeurde: website voor aankopen in een webshop |
event_source_url | De pagina-URL waar het event plaatsvond |
user_data | Klantgegevens voor matching: gehasht e-mailadres en telefoonnummer, IP-adres, user agent, fbp en fbc |
custom_data | Details zoals value, currency en content_ids |
Een ingekort Purchase-event ziet er zo uit:
{
"data": [{
"event_name": "Purchase",
"event_time": 1792929600,
"event_id": "order-1042",
"action_source": "website",
"event_source_url": "https://yourstore.com/checkouts/thank-you",
"user_data": {
"em": ["<SHA-256 of the normalized email>"],
"ph": ["<SHA-256 of the normalized phone>"],
"client_ip_address": "203.0.113.24",
"client_user_agent": "Mozilla/5.0 (iPhone; ...)",
"fbp": "fb.1.1792928400000.1234567890",
"fbc": "fb.1.1792928400000.AbCdEf123"
},
"custom_data": { "value": 74.00, "currency": "USD" }
}]
}Contactvelden zoals e-mailadres en telefoonnummer worden genormaliseerd en met SHA-256 gehasht voordat ze je server verlaten. Het IP-adres, de user agent, fbp en fbc worden ongewijzigd verstuurd.
Waarom de Conversions API naast de pixel gebruiken?
Meta raadt aan om de Conversions API naast de pixel te gebruiken en dezelfde events via beide te sturen. Elke kant ziet iets wat de andere niet ziet, en samen geven ze Meta completere data.
- Zet de cookie _fbp en slaat de fbclid van een advertentieklik op in de cookie _fbc
- Ziet de pagina en de browser terwijl het bezoek plaatsvindt
- Gaat verloren als de browser hem blokkeert of de pagina niet laadt
- Stuurt de betaalde bestelling vanuit de gegevens van je webshop
- Kan gehasht e-mailadres, telefoonnummer en adres uit de bestelling toevoegen
- Hangt niet van de browser af, dus adblockers houden hem niet tegen
De prijs van beide gebruiken is dat Meta nu twee kopieën van elk event ontvangt. In het volgende gedeelte zie je hoe Meta er maar één bewaart.
Hoe werkt ontdubbeling met één event_id?
Meta behandelt een browserevent en een serverevent als hetzelfde event wanneer twee dingen overeenkomen: de eventnaam en het event-id. In de pixel gaat het id in de optie eventID. In de Conversions API komt dezelfde waarde in event_id.
fbq('track', 'Purchase', { value: 74.00, currency: 'USD' }, { eventID: 'order-1042' });Meta ontdubbelt een overeenkomend paar alleen als de twee kopieën binnen 48 uur na elkaar aankomen. Een paar regels zorgen dat dit in de praktijk werkt:
- Maak het id één keer aan. Bouw het op uit iets wat beide kanten kennen, zoals het bestelnummer, en geef het door aan de browser en de server. Twee systemen die elk hun eigen id maken, komen niet overeen.
- Gebruik één formaat.
order-1042en1042zijn verschillende id's. - Zorg dat de eventnaam exact overeenkomt.
Purchaseenpurchasezijn verschillende events. - Verstuur het serverevent snel. Een serverevent dat meer dan 48 uur na het browserevent aankomt, wordt een tweede keer geteld.
Meta beschrijft ook een tweede methode die events koppelt via fbp of external_id. Volgens Meta werkt die over het algemeen alleen als het browserevent vóór het serverevent aankomt, dus een gedeeld event_id is de betrouwbaardere keuze. Meldt Meta nog steeds meer aankopen dan je webshop had, dan staan in onze gids over dubbele aankoopevents de gebruikelijke oorzaken.
Welke parameters zijn verplicht en welke worden aanbevolen?
De verplichte velden maken een event geldig. De aanbevolen velden bepalen hoeveel van je events Meta aan een persoon kan koppelen, en alleen gekoppelde events kunnen worden gebruikt voor attributie en advertentielevering.
| Parameter | Website-events | Wat je verstuurt |
|---|---|---|
event_name | Verplicht | Een standaardevent zoals Purchase, of een eigen eventnaam |
event_time | Verplicht | Unixtijd in seconden, maximaal 7 dagen in het verleden |
action_source | Verplicht | website voor events in je webshop |
event_source_url | Verplicht | De pagina-URL waar het event plaatsvond |
client_user_agent | Verplicht | De browserstring van de shopper, niet die van je server |
user_data | Verplicht | Minstens één parameter met klantgegevens |
event_id | Aanbevolen | Hetzelfde id dat de pixel gebruikt, voor ontdubbeling |
em, ph | Aanbevolen | E-mailadres en telefoonnummer, genormaliseerd en gehasht met SHA-256 |
client_ip_address | Aanbevolen | Het IP-adres van de shopper, niet gehasht |
fbp, fbc | Aanbevolen | De cookies met het browser-id en het click-id, niet gehasht |
external_id | Aanbevolen | Je eigen klant-id, hetzelfde bij browser- en serverevents |
value, currency | Meesturen bij Purchase | De bestelwaarde en een valutacode van drie letters |
Drie details veroorzaken de meeste problemen:
- Normaliseer voordat je hasht. Meta verwacht e-mailadressen zonder spaties en in kleine letters, en telefoonnummers als cijfers met landcode.
Anna@Example.comenanna@example.comgeven verschillende hashes, en alleen de tweede kan matchen. - Hash browser-id's niet.
fbp,fbc, het IP-adres en de user agent gaan als gewone waarden mee. - Houd het click-id precies zoals het is. De waarde van
fbcisfb.1., de aanmaaktijd in milliseconden, een punt en defbcliduit de URL van de landingspagina. Defbclidis hoofdlettergevoelig. Sla die op wanneer de bezoeker landt, want bij de checkout staat die niet meer in de URL.
In hoeverre deze velden overeenkomen, meet de Event Match Quality-score van Meta. In onze gids over Event Match Quality komen elke parameter, de hashregels en de score waar je naar moet streven aan bod.
Hoe test je events met Test events?
Events Manager heeft een tabblad Test events dat events toont zodra ze binnenkomen. Gebruik het voordat je op een nieuwe opzet vertrouwt.
- Open Test events
Selecteer in Events Manager je dataset (pixel) en open het tabblad Test events. Kopieer de testcode die daar staat.
- Voeg de code toe aan je serverevents
Verstuur hem als
test_event_codein het verzoek. Plak hem in ROASaurus in het veld Test event code van de Meta-pixel. - Plaats een testbestelling
Bezoek de webshop, voeg een product toe en betaal, zodat zowel de pixel als de server een Purchase verstuurt.
- Vergelijk de twee kopieën
Beide kopieën moeten dezelfde eventnaam, hetzelfde event-id, dezelfde waarde en dezelfde valuta tonen.
- Controleer de klantgegevens
Het serverevent moet gehasht e-mailadres en telefoonnummer bevatten, het IP-adres, de user agent en fbp, plus fbc als het bezoek met een advertentieklik begon.
- Verwijder de testcode
Meta zegt dat het veld alleen voor testen is, dus verwijder het voordat je op de events vertrouwt.
Purchase browser order-1042 74.00 USDVanuit de pixelPurchase server order-1042 74.00 USDVanuit de Conversions APIevent_name + event_id matchGeteld als één aankoopem ph fbp fbc client_ip_address client_user_agentKlantgegevens in het servereventVeelvoorkomende fouten in de Conversions API en hoe je ze oplost
| Wat je ziet | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Het hele verzoek mislukt en er worden geen events verwerkt | Eén event in de batch heeft een event_time van meer dan 7 dagen oud | Verstuur events zodra ze plaatsvinden. Herstel of verwijder oude events voordat je het opnieuw probeert. |
| Meta meldt meer aankopen dan je webshop had | Verschillende event-id's, een pixelevent zonder eventID, of een tweede app die dezelfde pixel verstuurt | Gebruik voor beide kopieën één id en per pixel één serverafzender. |
| Lage matchkwaliteit bij serverevents | Je server stuurt zijn eigen IP-adres en user agent mee | Geef het IP-adres en de user agent door die zijn vastgelegd uit de browser of de bestelling van de shopper. |
| Weinig events met fbc | De fbclid is niet opgeslagen op de landingspagina, of is gewijzigd | Sla de fbclid precies op zoals hij binnenkomt en bouw fbc daaruit op. |
| E-mailadres en telefoonnummer komen niet overeen | Waarden gehasht zonder te normaliseren, of verstuurd zonder te hashen | Verwijder spaties en zet het e-mailadres in kleine letters, houd de cijfers en de landcode van het telefoonnummer over en hash dan met SHA-256. |
| Verzoeken mislukken met een foutmelding over een verlopen token | Het toegangstoken kwam uit een Facebook-login, en logintokens verlopen | Koppel opnieuw, of gebruik een System User-token uit Business Manager, dat je zonder vervaldatum kunt aanmaken. |
Open na een paar dagen live verkeer het tabblad Diagnostics in Events Manager. Meta toont daar problemen met aanbevelingen om ze op te lossen. Vergelijk daarna het dagelijkse aantal Purchase-events in Events Manager met de betaalde bestellingen in je webshop voor dezelfde dagen. Is Meta duidelijk hoger, dan staan in onze helppagina over dubbeltelling voorkomen de instellingen die je moet controleren.
De Conversions API instellen met ROASaurus
ROASaurus stuurt Conversions API-events vanuit de bestelgegevens van je webshop, dus je hoeft de serverkant niet zelf te bouwen. Klik in Tracking & platforms op Connect with Facebook en kies je advertentieaccount en pixel, of plak het id van de pixel (dataset) en een Conversions API-token. De Meta-instelgids loopt door beide opties heen, en de Meta-integratiepagina toont elk veld dat wordt verstuurd.
- Eén id aan beide kanten. Browser- en serverevents delen één event-id. Bij een aankoop is dat
order-gevolgd door het bestel-id. - Een korte wachttijd vóór de aankoop. De Purchase van de server wacht even nadat de bestelling binnenkomt, zodat het aankoopevent van de browser eerst kan worden gekoppeld. Het IP-adres, de user agent en de pagina-URL daarvan gaan dan mee met het serverevent, samen met de
fbpenfbcdie voor de bezoeker zijn opgeslagen. - Klantgegevens uit de bestelling. E-mailadres, telefoonnummer, naam en adres worden genormaliseerd en gehasht met SHA-256. Het klant-id van de webshop en het bezoeker-id van ROASaurus gaan gehasht mee als
external_id. - Events die Meta niet kan koppelen, worden overgeslagen. Een event zonder
fbc,fbp, e-mailadres, telefoonnummer of IP-adres wordt niet verstuurd.
De Event log toont elke serverlevering met het verzoek en het antwoord van Meta. Verschillen je marges sterk tussen producten, dan kun je naast elke aankoop ook een winstwaarde meesturen: onze gids over Meta-waardeoptimalisatie op winst legt uit hoe. Voor het volledige datapad van klik tot bestelling zie je server-side tracking.
Bronnen
- Meta for Developers: Handling Duplicate Pixel and Conversions API Events
- Meta for Developers: Server Event Parameters
- Meta for Developers: Customer Information Parameters
- Meta for Developers: Using the API - Conversions API
- Meta for Developers: ClickID and the fbp and fbc Parameters