Advertentieplatforms en webshops

Meta Conversions API (CAPI): een praktische gids

Een praktische gids voor de Meta Conversions API: draai hem naast de pixel met één event_id, verstuur de juiste parameters, test events en los veelvoorkomende fouten op.

·Bijgewerkt op ·9 min leestijd·Door het ROASaurus-team

Belangrijkste punten
  • 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.

VeldWat het bevat
event_nameDe actie, bijvoorbeeld Purchase, AddToCart of InitiateCheckout
event_timeWanneer het gebeurde, als Unix-timestamp in seconden
event_idEen uniek id voor dit event, gebruikt om het te ontdubbelen met de pixel
action_sourceWaar het gebeurde: website voor aankopen in een webshop
event_source_urlDe pagina-URL waar het event plaatsvond
user_dataKlantgegevens voor matching: gehasht e-mailadres en telefoonnummer, IP-adres, user agent, fbp en fbc
custom_dataDetails zoals value, currency en content_ids
Elk Conversions API-event heeft dezelfde vorm: de actie, de klantgegevens en de details.

Een ingekort Purchase-event ziet er zo uit:

Conversions API: een Purchase-event (ingekort)
{
  "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.

Meta-pixel (browser)
  • 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
Conversions API (server)
  • 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 pixel levert de browser-id's en de server levert de bestelling. Elk afzonderlijk mist een deel van het beeld.

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.

Meta-pixel: dezelfde Purchase met eventID
fbq('track', 'Purchase', { value: 74.00, currency: 'USD' }, { eventID: 'order-1042' });
Shopper betaaltBestelling 1042, $74.00
Pixel stuurt PurchaseeventID order-1042, vanuit de browser
Server stuurt Purchaseevent_id order-1042, vanuit de bestelling
Meta telt er éénZelfde naam en id binnen 48 uur
Beide kopieën hebben dezelfde eventnaam en hetzelfde id, dus Meta houdt één aankoop over in plaats van twee.

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-1042 en 1042 zijn verschillende id's.
  • Zorg dat de eventnaam exact overeenkomt. Purchase en purchase zijn 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.

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.

ParameterWebsite-eventsWat je verstuurt
event_nameVerplichtEen standaardevent zoals Purchase, of een eigen eventnaam
event_timeVerplichtUnixtijd in seconden, maximaal 7 dagen in het verleden
action_sourceVerplichtwebsite voor events in je webshop
event_source_urlVerplichtDe pagina-URL waar het event plaatsvond
client_user_agentVerplichtDe browserstring van de shopper, niet die van je server
user_dataVerplichtMinstens één parameter met klantgegevens
event_idAanbevolenHetzelfde id dat de pixel gebruikt, voor ontdubbeling
em, phAanbevolenE-mailadres en telefoonnummer, genormaliseerd en gehasht met SHA-256
client_ip_addressAanbevolenHet IP-adres van de shopper, niet gehasht
fbp, fbcAanbevolenDe cookies met het browser-id en het click-id, niet gehasht
external_idAanbevolenJe eigen klant-id, hetzelfde bij browser- en serverevents
value, currencyMeesturen bij PurchaseDe bestelwaarde en een valutacode van drie letters
Meta noemt action_source, event_source_url en client_user_agent verplicht voor website-events die via de Conversions API worden verstuurd.

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.com en anna@example.com geven 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 fbc is fb.1., de aanmaaktijd in milliseconden, een punt en de fbclid uit de URL van de landingspagina. De fbclid is 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.

  1. Open Test events

    Selecteer in Events Manager je dataset (pixel) en open het tabblad Test events. Kopieer de testcode die daar staat.

  2. Voeg de code toe aan je serverevents

    Verstuur hem als test_event_code in het verzoek. Plak hem in ROASaurus in het veld Test event code van de Meta-pixel.

  3. Plaats een testbestelling

    Bezoek de webshop, voeg een product toe en betaal, zodat zowel de pixel als de server een Purchase verstuurt.

  4. Vergelijk de twee kopieën

    Beide kopieën moeten dezelfde eventnaam, hetzelfde event-id, dezelfde waarde en dezelfde valuta tonen.

  5. 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.

  6. 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 pixel
Purchase server order-1042 74.00 USDVanuit de Conversions API
event_name + event_id matchGeteld als één aankoop
em ph fbp fbc client_ip_address client_user_agentKlantgegevens in het serverevent
Wat een goede testbestelling laat zien (voorbeeldwaarden): twee kopieën, één id en volledige klantgegevens.

Veelvoorkomende fouten in de Conversions API en hoe je ze oplost

Wat je zietWaarschijnlijke oorzaakOplossing
Het hele verzoek mislukt en er worden geen events verwerktEén event in de batch heeft een event_time van meer dan 7 dagen oudVerstuur events zodra ze plaatsvinden. Herstel of verwijder oude events voordat je het opnieuw probeert.
Meta meldt meer aankopen dan je webshop hadVerschillende event-id's, een pixelevent zonder eventID, of een tweede app die dezelfde pixel verstuurtGebruik voor beide kopieën één id en per pixel één serverafzender.
Lage matchkwaliteit bij servereventsJe server stuurt zijn eigen IP-adres en user agent meeGeef het IP-adres en de user agent door die zijn vastgelegd uit de browser of de bestelling van de shopper.
Weinig events met fbcDe fbclid is niet opgeslagen op de landingspagina, of is gewijzigdSla de fbclid precies op zoals hij binnenkomt en bouw fbc daaruit op.
E-mailadres en telefoonnummer komen niet overeenWaarden gehasht zonder te normaliseren, of verstuurd zonder te hashenVerwijder 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 tokenHet toegangstoken kwam uit een Facebook-login, en logintokens verlopenKoppel opnieuw, of gebruik een System User-token uit Business Manager, dat je zonder vervaldatum kunt aanmaken.
De meeste problemen met de Conversions API zijn zichtbaar als geweigerde verzoeken, dubbel tellen of lage matchkwaliteit.

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 fbp en fbc die 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

  1. Meta for Developers: Handling Duplicate Pixel and Conversions API Events
  2. Meta for Developers: Server Event Parameters
  3. Meta for Developers: Customer Information Parameters
  4. Meta for Developers: Using the API - Conversions API
  5. Meta for Developers: ClickID and the fbp and fbc Parameters

In ROASaurus

Lees verder

Advertentieplatforms en webshopsConversietracking bij betaling bij levering en externe checkoutsConversietracking bij betaling bij levering: waarom pixels COD-bestellingen en bestellingen via een externe checkout missen, wanneer je de aankoop verstuurt en hoe je geweigerde bestellingen afhandelt.Advertentieplatforms en webshopsConversietracking voor CCV Shop: een installatiegidsConversietracking voor CCV Shop: verstuur betaalde bestellingen met een ondertekende webhook naar Meta en TikTok, koppel ze aan advertentieklikken, stel alles in, test het en ga om met late betalingen.Advertentieplatforms en webshopsEnhanced conversions van Google Ads op ShopifyEnhanced conversions voegen gehashte klantgegevens toe aan Google Ads-aankopen op Shopify. Zo werken ze, zo verschillen ze van offline imports en zo stel je ze in.
FAQ

Vragen, beantwoord

Heb ik zowel de Meta-pixel als de Conversions API nodig?

Meta raadt aan om beide te gebruiken. De pixel voegt browserdata toe, zoals de fbp-cookie, en de Conversions API levert events die de browser mist. Geef beide kopieën dezelfde eventnaam en hetzelfde event-id, zodat Meta elk event één keer telt.

Hoe lang wacht Meta met ontdubbelen van een browserevent en een serverevent?

Meta ontdubbelt een browserevent en een serverevent met dezelfde eventnaam en hetzelfde event-id wanneer ze binnen 48 uur na elkaar aankomen. Een kopie die later aankomt, wordt opnieuw geteld.

Moeten klantgegevens voor de Conversions API worden gehasht?

Ja, voor contactgegevens. De velden voor e-mailadres, telefoonnummer, naam en adres moeten worden genormaliseerd en gehasht met SHA-256. Het IP-adres, de user agent, fbp en fbc worden zonder hashing verstuurd.

Welke velden zijn verplicht voor een website-event?

Elk event heeft event_name, event_time, action_source en minstens één parameter met klantgegevens nodig. Voor website-events vereist Meta ook event_source_url en client_user_agent.

Kan ik oude bestellingen via de Conversions API versturen?

Alleen recente. De event_time mag maximaal 7 dagen in het verleden liggen, en als één event in een verzoek ouder is, weigert Meta het hele verzoek.

Elke verkoop herleid tot de advertentie die hem opleverde

Server-side tracking, winst en lifetime value in één app. 14 dagen gratis proberen, geen creditcard.

Start je gratis proefperiode →