Advertentieplatforms en webshops

Conversietracking voor CCV Shop: een installatiegids

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

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

Belangrijkste punten
  • Conversietracking voor CCV Shop is het meest volledig als elke betaalde bestelling op de server uit de bestelgegevens van CCV wordt verstuurd, met een snippet op de succespagina van de bestelling die de bestelling aan de advertentieklik koppelt.
  • Met één klik op Create webhook meldt CCV Shop elke bestelling zodra hij als betaald is gemarkeerd, en elke levering moet het privétoken van je webshop meesturen.
  • Bestellingen in CCV Shop bevatten niet het IP-adres van de shopper, dus de snippet op de succespagina van de bestelling is bij CCV Shop belangrijker dan bij de meeste platforms.
  • De 5-minutencontrole kijkt alleen naar recent aangemaakte bestellingen, dus bestellingen die dagen later worden betaald, hangen af van de webhook: houd hem actief.
  • Meta wijst serverevents af die meer dan 7 dagen na het aanmaken van de bestelling binnenkomen, dus een zeer late bankoverschrijving bereikt Meta niet.

Conversietracking voor CCV Shop betekent dat je elke betaalde bestelling in je CCV Shop-webshop meldt aan advertentieplatforms zoals Meta en TikTok, zodat die de juiste advertenties belonen en optimaliseren op echte verkopen. De meest volledige manier is om elke aankoop op de server uit de bestelgegevens van CCV te versturen en een korte snippet toe te voegen aan de succespagina van de bestelling die de bestelling aan de advertentieklik koppelt.

CCV Shop is een gehost webshopplatform van het Nederlandse bedrijf CCV, dat zegt 17,000 webshops te draaien. Deze gids legt uit hoe ROASaurus aan CCV Shop koppelt, hoe bestellingen aan advertentieklikken worden gekoppeld, wat Meta en TikTok bereikt, de installatie, het testen en hoe late betalingen werken. Lees voor het algemene idee wat server-side tracking is.

Hoe koppelt ROASaurus aan CCV Shop?

ROASaurus gebruikt drie onderdelen van CCV Shop, alle beschreven in de API-documentatie van CCV:

Onderdeel van CCV ShopWaarvoor ROASaurus het gebruikt
REST API, met een publieke sleutel en een geheime sleutelLeest elke betaalde bestelling en de bijbehorende orderregels
Webhook voor het event orders.updated.ispaidCCV meldt een bestelling zodra de betaalstatus verandert
De succespagina van de bestelling, met Vertoshop.jsDe snippet leest daar het bestel-id uit en koppelt de bestelling aan de bezoeker
De API en de webhook leveren de bestelling aan. De snippet op de succespagina koppelt hem aan de advertentieklik.
Bestelling als betaald gemarkeerdIn CCV Shop, na de betaling
WebhookCCV post het bestel-id, ondertekend met x-hash
ROASaurusLeest de bestelling en de bijbehorende regels met ondertekende API-aanroepen
AdvertentieplatformsPurchase met event-id order-58213
Het datapad van elke betaalde bestelling. ROASaurus controleert of de bestelling is betaald voordat het iets verstuurt.

Waarom missen browserpixels aankopen in CCV Shop?

Een browserpixel meldt alleen een aankoop als de browser van de shopper de succespagina van de bestelling laadt en het pixelscript draait. Een paar veelvoorkomende situaties doorbreken dat:

  • De shopper betaalt via een redirect, bijvoorbeeld met iDEAL, en sluit het tabblad voordat de succespagina is geladen.
  • Een adblocker of een privacyinstelling van de browser blokkeert het pixelscript.
  • De bezoeker weigert marketingcookies, dus de pixel mag niet laden.
  • De bestelling wordt later betaald, per bankoverschrijving of bij levering, wanneer er geen browser aan te pas komt.

In elk geval markeert CCV Shop de bestelling nog steeds als betaald. ROASaurus verstuurt die bestelling vanaf de server, dus de aankoop wordt gemeld wat er ook in de browser gebeurde. De snippet op de succespagina heeft een andere taak: hij vertelt ROASaurus bij welke bezoeker, en dus bij welke advertentieklik, de bestelling hoort.

De order-paid-webhook en de 5-minutencontrole

Wat Create webhook doet

Als je op Create webhook drukt, registreert ROASaurus een CCV-webhook voor het event orders.updated.ispaid, dat CCV activeert wanneer de eigenschap betaald van een bestelling verandert. Het adres is de webhook-URL van je webshop in ROASaurus, die je winkelsleutel en een privétoken bevat. CCV voegt niets toe aan een webhook waaraan de webshop te herkennen is, en de documentatie raadt aan een identificatie in het adres op te nemen. De winkelsleutel doet dat.

CCV geeft elke webhook een eigen geheime sleutel van 32 tekens. Als CCV die sleutel teruggeeft, slaat ROASaurus hem op, en vanaf dat moment moet elke levering een geldige x-hash-header bevatten. Elke levering moet ook het token van je webshop bevatten. Als ROASaurus een levering ontvangt, negeert het bestellingen die niet betaald zijn, leest het de volledige bestelling en de orderregels uit de API en verstuurt het de bestelling alleen als CCV zegt dat hij betaald is.

Ondertekende API-aanroepen

CCV vereist dat elke API-aanroep is ondertekend. ROASaurus verstuurt drie headers: x-public met je publieke sleutel, x-date met de huidige tijd en x-hash. CCV wijst een tijdstempel af die meer dan 5 minuten afwijkt van zijn servertijd. Je geheime sleutel zelf wordt nooit verstuurd.

Hoe CCV Shop verzoeken ondertekent
API call (ROASaurus → CCV)
x-hash = HMAC-SHA512( public_key|METHOD|uri|body|timestamp , secret_key )

Webhook (CCV → ROASaurus)
x-hash = HMAC-SHA512( address|payload , webhook_key )

De controle van 5 minuten

Elke 5 minuten vraagt ROASaurus CCV ook om betaalde bestellingen die sinds de vorige controle zijn aangemaakt, met 30 minuten overlap, en legt het de bestellingen vast die het nog niet heeft. CCV filtert bestellingen alleen op aanmaakdatum. De controle vindt dus bestellingen die kort na het plaatsen worden betaald, en een bestelling die dagen later wordt betaald, bereikt ROASaurus alleen via de webhook.

CCV beschouwt een antwoord van 200, 201, 202 of 204 als geslaagd. Na een antwoord van 307, 408, 503 of 504 houdt CCV een levering open en probeert het de volgende keer opnieuw, en elk ander antwoord markeert het als mislukt. Het wacht 2 seconden op een verbinding en 5 seconden op het antwoord.

Hoe wordt een CCV Shop-bestelling aan de advertentieklik gekoppeld?

Om een advertentie te belonen, heeft het platform de klik-identificaties nodig van de bezoeker die heeft besteld, zoals het Meta-click-id (fbc) en het TikTok-click-id (ttclid). Het ROASaurus-script slaat ze per bezoeker op wanneer die vanuit een advertentie binnenkomt. ROASaurus krijgt dat bezoeker-id niet uit de CCV-bestelling, dus het koppelt bestellingen op andere manieren aan bezoekers:

MethodeBij CCV ShopHoe het werkt
1. Snippet op de succespagina van de bestellingJaLeest het bestel-id met Vertoshop.getOrder().getId(), plus het bestelbedrag en de valuta, en vuurt een ROASaurus-aankoop af met het event-id order-58213
2. Eerder e-mailadresJaEen gehasht e-mailadres dat de bezoeker eerder op je site heeft opgegeven, in een popupformulier of via een Identify-aanroep
3. IP-adres en browserNeeBestellingen in CCV Shop bevatten niet het IP-adres of de browser van de shopper, dus deze terugvaloptie heeft niets om mee te vergelijken
Op de meeste andere platforms vangt de IP-terugvaloptie een aantal bestellingen op die de snippet mist. Bij CCV Shop kan dat niet, dus voeg de snippet toe.

ROASaurus wacht even voordat het elke aankoop verstuurt, zodat het event van de succespagina eerst kan aankomen, en probeert de koppeling op het moment van versturen opnieuw. De pagina Orders toont het resultaat per bestelling in de kolom Matched by: thank_you, email of not matched.

Een bestelling die niet is gekoppeld, gaat nog steeds naar je advertentieplatforms met gehashte klantgegevens uit de bestelling. Hij heeft geen click-id's, en omdat CCV-bestellingen geen IP-adres of browser bevatten, ook niets daarvan. Dat verlaagt het aandeel events dat Meta aan een persoon kan koppelen; Event Match Quality legt uit hoe Meta dit scoort. In de attributie van ROASaurus verschijnt een niet-gekoppelde bestelling als direct of onbekend.

Wat bereikt Meta en TikTok vanuit een CCV-bestelling?

CCV-bestelgegevensVerstuurd als
idHet event-id order-58213 en het bestel-id
total_price, currencyWaarde en valuta (EUR als CCV geen valuta meegeeft)
create_dateDe eventtijd
E-mailadres, mobiel of vast telefoonnummer, voor- en achternaam van de klantGehasht met SHA-256
Factuurplaats, postcode en landcodeGehasht met SHA-256
Klant-idGehasht extern id
Orderregels: productnummer, product-id, aantal, prijs en naamProducten met id, aantal en prijs
IP-adres en browserNiet in CCV-bestellingen: afkomstig uit het event van de succespagina of de gekoppelde bezoeker
Wat ROASaurus uit elke CCV Shop-bestelling leest en hoe het in het serverevent verschijnt.

Meta ontvangt een Purchase via zijn Conversions API en TikTok een CompletePayment via zijn Events API, beide met het event-id order-58213. TikTok toont CompletePayment in zijn rapporten nu als Purchase. Als je de optie aanvinkt om ook de browserpixel te laden, vuurt de snippet op de succespagina dezelfde events in de browser af met hetzelfde event-id, en bewaren Meta en TikTok één exemplaar. Dezelfde bestellingen gaan naar Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn en de andere advertentieplatforms als je die koppelt. Aankoopconversies voor Google Ads worden alleen vanuit de Shopify-checkout verstuurd, dus ROASaurus verstuurt ze niet vanuit CCV Shop.

Zo stel je conversietracking voor CCV Shop in

  1. Voeg de webshop toe in ROASaurus

    Ga naar Add a store, kies CCV Shop en vul het adres van je webshop in. Het tabblad Connection toont dan je scripttag en de snippet voor de succespagina.

  2. Zoek je API-sleutels

    Ga in CCV Shop naar My webshop › Settings › General › API settings en klik op New API key. Zie je die niet, installeer dan eerst de API-app uit de CCV App Store.

  3. Voeg het script toe aan elke pagina

    Plak de scripttag in de Header HTML van je webshop. In het helpcentrum van CCV staat die onder Mijn webshop › Instellingen › Lay-out › Layout, onderaan de pagina. Een app-codeblok in de header werkt ook.

  4. Voeg de snippet toe aan de succespagina

    Ga naar Mijn webshop › Instellingen › Algemeen › Teksten, open de tekst die na het plaatsen van een bestelling wordt getoond, schakel over naar Source en plak daar het snippet. CCV Shop voert het dan uit op de bedankpagina van de bestelling.

  5. Koppel de API

    Vul op het tabblad Connection de publieke sleutel en de geheime sleutel in. Vul Shop URL alleen in als je API op een ander domein draait dan je webshop. Sla op, druk op Test connection en vervolgens op Create webhook.

  6. Koppel je advertentieplatforms

    Gebruik op Tracking & platforms Connect with Facebook of Add pixel voor Meta, en Add pixel voor TikTok. Vink de optie aan om ook de browserpixel te laden.

Toestemming

Buiten Shopify leest het ROASaurus-script de keuze van de bezoeker uit gangbare toestemmingstools: Cookiebot, OneTrust, IAB TCF-banners en Google consent mode. Bij een andere cookiebanner roep je tlq('consent', true) aan wanneer de bezoeker marketingcookies accepteert en tlq('consent', false) wanneer die ze weigert. Totdat de bezoeker accepteert, heeft die geen bezoeker-id of click-id's en gaan er geen browserpixels af. De betaalde bestelling wordt nog steeds vanaf de server verstuurd, met gehashte klantgegevens uit de bestelling. De helppagina over toestemming legt de details uit.

Hoe test je conversietracking voor CCV Shop?

  • Open je webshop met ?roasaurus=connected in het adres. Een melding bevestigt dat het script draait. ?roasaurus=debug logt wat het naar de browserconsole stuurt.
  • Onder Collected events in de Event log moeten paginaweergaven een bezoeker-id tonen.
  • Plaats een bestelling en betaal hem, of markeer hem als betaald. Onder Collected events moet de Event log een Purchase tonen met het CCV-bestel-id in de gegevens. Ontbreekt die, dan is de snippet op de succespagina niet gedraaid.
  • Op het tabblad Connection toont Last order received de bestelling en Last sync de laatste 5-minutencontrole, met eventuele fouten van CCV.
  • Onder Server deliveries in de Event log krijgt elk gekoppeld platform een regel met de status sent en het antwoord van het platform.
PageView visitor 51c0e9a7Script op elke pagina
Purchase order-58213Snippet op de succespagina van de bestelling
webhook orders.updated.ispaidHandtekening gecontroleerd, bestelling betaald
Meta Purchase sentMatched by thank_you
TikTok CompletePayment sentZelfde event-id, ontdubbeld
Voorbeeld van een gezonde testbestelling. Fetch orders now op het tabblad Connection voert de 5-minutencontrole meteen uit.

Om het event in Meta te zien, plak je de code uit Events Manager › Test events in het veld Test event code van je Meta-pixel in ROASaurus. Verwijder hem weer als je klaar bent.

Late betalingen en andere beperkingen

Bankoverschrijvingen en betalingen bij levering worden betaald nadat de bestelling is geplaatst. Dit gebeurt er met een voorbeeldbestelling per bankoverschrijving, vanaf de dag van plaatsing:

WanneerWat er gebeurtResultaat
Dag 0, bij de checkoutDe bestelling wordt aangemaakt, niet betaaldNiet verstuurd: de 5-minutencontrole vraagt alleen om betaalde bestellingen
Dag 0, ongeveer 35 minuten laterDe aanmaaktijd van de bestelling valt buiten het controlevensterVanaf nu kan alleen de webhook hem nog melden
Dag 3Jij markeert de bestelling als betaaldDe webhook komt binnen, ROASaurus verstuurt hem. De eventtijd van dag 0 is 3 dagen oud: Meta accepteert hem
In plaats daarvan dag 9Jij markeert de bestelling als betaaldDe webhook komt binnen, ROASaurus verstuurt hem. 9 dagen is meer dan 7: Meta wijst hem af
Illustratieve tijdlijn. De eventtijd is de aanmaakdatum van de bestelling, en Meta accepteert serverevents tot 7 dagen na de eventtijd.
  • Betaling bij levering. ROASaurus verstuurt deze bestellingen wanneer CCV ze als betaald markeert, meestal na levering. Zie tracking bij betaling bij levering voor wanneer je zulke bestellingen moet meetellen.
  • Browseraankopen vóór betaling. De snippet op de succespagina draait wanneer de bestelling wordt geplaatst, dus de browserpixels melden een bestelling per bankoverschrijving voordat hij is betaald. Komt de betaling meer dan 48 uur later, dan kunnen Meta en TikTok de browser- en serverkopieën niet samenvoegen.
  • Geen IP-terugvaloptie. Voeg de snippet voor de succespagina toe en leg waar mogelijk eerder op je site e-mailadressen vast.
  • Annuleringen en terugbetalingen worden niet verstuurd. Zodra een aankoop is verstuurd, blijft hij in het advertentieplatform staan.
  • Alleen paginaweergaven, zonder code. Productweergaven en add-to-carts worden alleen op Shopify automatisch gedetecteerd. Bij CCV Shop kan een ontwikkelaar ze versturen met een tlq-trackaanroep.

De integratiepagina voor CCV Shop zet de verbindingsgegevens op één plek, en de helppagina voor andere webshops vergelijkt CCV Shop met de andere platforms waarmee ROASaurus koppelt, zoals Lightspeed.

Bronnen

  1. CCV Shop: API Documentatie
  2. CCV: Webshop API
  3. Meta for Developers: Server Event Parameters
  4. Meta for Developers: Handling Duplicate Pixel and Conversions API Events
  5. TikTok Ads Manager: About Event Deduplication

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 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.Advertentieplatforms en webshopsConversietracking voor Lightspeed eCom-webshopsConversietracking voor Lightspeed eCom (C-Series): verstuur betaalde bestellingen vanaf de server naar Meta en TikTok, koppel ze aan advertentieklikken, stel het in en test het.
FAQ

Vragen, beantwoord

Waar vind ik mijn CCV Shop-API-sleutels?

In My webshop › Settings › General › API settings. Ontbreekt die pagina, installeer dan eerst de API-app uit de CCV App Store.

Wat doet het snippet voor de succespagina?

Het leest het bestel-id met Vertoshop.getOrder().getId(), plus het bestelbedrag en de valuta, en vuurt de ROASaurus-aankoop af met dat id. ROASaurus gebruikt het om de bestelling aan de bezoeker en zijn advertentieklik te koppelen.

Waarom kan ROASaurus CCV-bestellingen niet op IP-adres koppelen?

Bestellingen in CCV Shop bevatten niet het IP-adres of de browser van de shopper. Zonder de snippet of een e-mailadres dat de bezoeker eerder op de site heeft opgegeven, blijft een bestelling ongekoppeld.

Worden bestellingen die dagen later worden betaald nog steeds verstuurd?

Ja, via de order-paid-webhook. De 5-minutencontrole kijkt alleen naar recent aangemaakte bestellingen, dus houd de webhook actief. Meta wijst events af die meer dan 7 dagen na het aanmaken van de bestelling binnenkomen.

Hoe gebruikt ROASaurus mijn geheime sleutel van CCV Shop?

ROASaurus slaat de geheime sleutel versleuteld op en gebruikt hem alleen om elke API-aanroep te ondertekenen met HMAC-SHA512, zoals CCV vereist. De sleutel zelf wordt nooit naar CCV verstuurd, alleen de handtekening.

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 →