- Das Conversion-Tracking für CCV Shop ist am vollständigsten, wenn jede bezahlte Bestellung aus den Bestelldaten von CCV serverseitig gesendet wird, mit einem Snippet auf der Bestellbestätigungsseite, das die Bestellung mit dem Anzeigenklick verknüpft.
- Ein Klick auf „Create webhook“ lässt CCV Shop jede Bestellung in dem Moment melden, in dem sie als bezahlt markiert wird, und jede Übermittlung muss den privaten Token deines Shops tragen.
- Bestellungen aus CCV Shop enthalten nicht die IP-Adresse des Käufers, deshalb ist das Snippet auf der Bestellbestätigungsseite bei CCV Shop wichtiger als bei den meisten Plattformen.
- Die 5-Minuten-Prüfung betrachtet nur kürzlich angelegte Bestellungen, daher sind Bestellungen, die Tage später bezahlt werden, auf den Webhook angewiesen: Lass ihn aktiv.
- Meta lehnt Server-Events ab, die mehr als 7 Tage nach der Anlage der Bestellung eintreffen, deshalb erreicht eine sehr späte Überweisung Meta nicht.
Conversion-Tracking für CCV Shop bedeutet, jede bezahlte Bestellung in deinem CCV-Shop-Webshop an Werbeplattformen wie Meta und TikTok zu melden, damit diese Käufe den richtigen Anzeigen zuschreiben und auf echte Verkäufe optimieren. Am vollständigsten ist es, jeden Kauf aus den Bestelldaten von CCV serverseitig zu senden und der Bestellbestätigungsseite ein kurzes Snippet hinzuzufügen, das die Bestellung mit dem Anzeigenklick verknüpft.
CCV Shop ist eine gehostete Webshop-Plattform des niederländischen Unternehmens CCV, das nach eigenen Angaben 17,000 Webshops betreibt. Dieser Leitfaden erklärt, wie sich ROASaurus damit verbindet, wie Bestellungen mit Anzeigenklicks verknüpft werden, was Meta und TikTok erreicht, wie du einrichtest und testest und wie späte Zahlungen funktionieren. Für den allgemeinen Gedanken lies, was Server-Side-Tracking ist.
Wie verbindet sich ROASaurus mit CCV Shop?
ROASaurus nutzt drei Teile von CCV Shop, alle in der API-Dokumentation von CCV beschrieben:
| Teil von CCV Shop | Wofür ROASaurus ihn nutzt |
|---|---|
| REST API, mit einem öffentlichen und einem geheimen Schlüssel | Liest jede bezahlte Bestellung und ihre Bestellpositionen |
Webhook für das Event orders.updated.ispaid | CCV meldet eine Bestellung in dem Moment, in dem sich ihr Zahlungsstatus ändert |
Die Bestellbestätigungsseite, mit Vertoshop.js | Das Snippet liest dort die Bestell-ID und verknüpft die Bestellung mit dem Besucher |
Warum verpassen Browser-Pixel Käufe in CCV Shop?
Ein Browser-Pixel meldet einen Kauf nur, wenn der Browser des Käufers die Bestellbestätigungsseite lädt und das Pixel-Skript läuft. Mehrere häufige Situationen verhindern das:
- Der Käufer zahlt per Weiterleitung, zum Beispiel mit iDEAL, und schließt den Tab, bevor die Bestätigungsseite lädt.
- Ein Adblocker oder eine Datenschutzeinstellung des Browsers blockiert das Pixel-Skript.
- Der Besucher lehnt Marketing-Cookies ab, deshalb darf das Pixel nicht laden.
- Die Bestellung wird später bezahlt, per Überweisung oder bei der Lieferung, wenn kein Browser beteiligt ist.
In jedem dieser Fälle markiert CCV Shop die Bestellung trotzdem als bezahlt. ROASaurus sendet diese Bestellung vom Server, sodass der Kauf gemeldet wird, was auch immer im Browser passiert ist. Das Snippet auf der Bestätigungsseite hat eine andere Aufgabe: Es teilt ROASaurus mit, zu welchem Besucher und damit zu welchem Anzeigenklick die Bestellung gehört.
Der Webhook für bezahlte Bestellungen und die 5-Minuten-Prüfung
Was „Create webhook“ bewirkt
Wenn du Create webhook drückst, registriert ROASaurus einen CCV-Webhook für das Event orders.updated.ispaid, das CCV auslöst, wenn sich die Eigenschaft „bezahlt“ einer Bestellung ändert. Die Adresse ist die Webhook-URL deines Shops in ROASaurus, die deinen Store-Key und einen privaten Token enthält. CCV fügt einem Webhook nichts hinzu, das den Shop identifiziert, und seine Dokumentation rät, eine Kennung in die Adresse aufzunehmen. Der Store-Key erfüllt diesen Zweck.
CCV gibt jedem Webhook einen eigenen geheimen Schlüssel mit 32 Zeichen. Gibt CCV diesen Schlüssel zurück, speichert ROASaurus ihn, und von da an muss jede Übermittlung einen gültigen x-hash-Header tragen. Jede Übermittlung muss außerdem den Token deines Shops tragen. Erhält ROASaurus eine Übermittlung, ignoriert es Bestellungen, die nicht bezahlt sind, liest die vollständige Bestellung und ihre Positionen aus der API und sendet die Bestellung nur, wenn CCV sagt, dass sie bezahlt ist.
Signierte API-Aufrufe
CCV verlangt, dass jeder API-Aufruf signiert ist. ROASaurus sendet drei Header: x-public mit deinem öffentlichen Schlüssel, x-date mit der aktuellen Zeit und x-hash. CCV lehnt einen Zeitstempel ab, der mehr als 5 Minuten von seiner Serverzeit abweicht. Dein geheimer Schlüssel selbst wird nie gesendet.
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 )
Die 5-Minuten-Prüfung
Alle 5 Minuten fragt ROASaurus bei CCV außerdem nach bezahlten Bestellungen, die seit der letzten Prüfung angelegt wurden, mit 30 Minuten Überlappung, und erfasst die, die es noch nicht hat. CCV filtert Bestellungen nur nach dem Anlagedatum. Die Prüfung findet also Bestellungen, die kurz nach der Aufgabe bezahlt werden, und eine Bestellung, die Tage später bezahlt wird, erreicht ROASaurus nur über den Webhook.
CCV wertet eine Antwort mit 200, 201, 202 oder 204 als Erfolg. Bei einer Antwort mit 307, 408, 503 oder 504 hält es eine Übermittlung offen und wiederholt sie beim nächsten Auftreten, jede andere Antwort markiert es als fehlgeschlagen. Es wartet 2 Sekunden auf eine Verbindung und 5 Sekunden auf die Antwort.
Wie wird eine CCV-Shop-Bestellung mit dem Anzeigenklick verknüpft?
Um einer Anzeige einen Kauf zuzuschreiben, braucht die Plattform die Klick-Kennungen des Besuchers, der bestellt hat, etwa die Meta-Click-ID (fbc) und die TikTok-Click-ID (ttclid). Das ROASaurus-Skript speichert sie für jeden Besucher, wenn er von einer Anzeige kommt. Die Besucher-ID erhält ROASaurus nicht aus der CCV-Bestellung, deshalb verknüpft es Bestellungen auf anderen Wegen mit Besuchern:
| Methode | Bei CCV Shop | So funktioniert es |
|---|---|---|
| 1. Snippet auf der Bestätigungsseite | Ja | Es liest die Bestell-ID mit Vertoshop.getOrder().getId(), dazu die Bestellsumme und die Währung, und löst einen ROASaurus-Kauf mit der Event-ID order-58213 aus |
| 2. Frühere E-Mail-Adresse | Ja | Eine gehashte E-Mail-Adresse, die der Besucher früher auf deiner Website angegeben hat, in einem Popup-Formular oder über einen Identify-Aufruf |
| 3. IP-Adresse und Browser | Nein | CCV-Shop-Bestellungen enthalten weder die IP-Adresse noch den Browser des Käufers, deshalb hat dieser Fallback nichts zum Vergleichen |
ROASaurus wartet kurz, bevor es jeden Kauf sendet, damit das Event von der Bestätigungsseite zuerst eintreffen kann, und versucht die Zuordnung zum Sendezeitpunkt erneut. Die Seite Orders zeigt das Ergebnis pro Bestellung in der Spalte Matched by: thank_you, email oder not matched.
Eine Bestellung ohne Zuordnung geht trotzdem mit gehashten Kundendaten aus der Bestellung an deine Werbeplattformen. Sie hat keine Click-Kennungen, und weil CCV-Bestellungen keine IP-Adresse und keinen Browser enthalten, auch dazu keine Angaben. Das senkt den Anteil der Events, die Meta einer Person zuordnen kann; Event Match Quality erklärt, wie Meta das bewertet. In der Attribution von ROASaurus erscheint eine nicht zugeordnete Bestellung als direkt oder unbekannt.
Was erreicht Meta und TikTok von einer CCV-Bestellung?
| CCV-Bestelldaten | Gesendet als |
|---|---|
id | Die Event-ID order-58213 und die Bestell-ID |
total_price, currency | Wert und Währung (EUR, wenn CCV keine Währung angibt) |
create_date | Der Event-Zeitpunkt |
| E-Mail-Adresse, Mobil- oder Telefonnummer, Vor- und Nachname des Kunden | Mit SHA-256 gehasht |
| Ort, Postleitzahl und Ländercode der Rechnungsadresse | Mit SHA-256 gehasht |
| Kunden-ID | Gehashte externe ID |
| Bestellpositionen: Produktnummer, Produkt-ID, Anzahl, Preis und Name | Produkte mit ID, Menge und Preis |
| IP-Adresse und Browser | Nicht in CCV-Bestellungen: aus dem Event der Bestätigungsseite oder vom zugeordneten Besucher übernommen |
Meta erhält über die Conversions API ein Purchase-Event und TikTok über die Events API ein CompletePayment-Event, beide mit der Event-ID order-58213. TikTok zeigt CompletePayment in seinen Berichten inzwischen als Purchase an. Wenn du die Option ankreuzt, zusätzlich das Browser-Pixel zu laden, löst das Snippet auf der Bestätigungsseite im Browser dieselben Events mit derselben Event-ID aus, und Meta und TikTok behalten eine Kopie. Dieselben Bestellungen gehen an Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn und die anderen Werbeplattformen, wenn du sie verbindest. Kauf-Conversions für Google Ads werden nur aus dem Shopify-Checkout gesendet, daher sendet ROASaurus sie nicht aus CCV Shop.
So richtest du Conversion-Tracking für CCV Shop ein
- Füge den Shop in ROASaurus hinzu
Gehe zu Add a store, wähle CCV Shop und gib die Adresse deines Shops ein. Der Tab Connection zeigt dir dann dein Script-Tag und das Snippet für die Bestätigungsseite.
- Finde deine API-Schlüssel
Gehe in CCV Shop zu My webshop › Settings › General › API settings und klicke auf New API key. Siehst du das nicht, installiere zuerst die API-App aus dem CCV App Store.
- Füge das Skript auf jeder Seite hinzu
Füge das Script-Tag in das Header HTML deines Shops ein. Die Hilfe von CCV nennt dafür Mijn webshop › Instellingen › Lay-out › Layout, ganz unten auf der Seite. Ein App-Code-Block im Header funktioniert ebenfalls.
- Füge das Snippet zur Bestätigungsseite hinzu
Gehe zu Mijn webshop › Instellingen › Algemeen › Teksten, öffne den Text, der nach einer aufgegebenen Bestellung angezeigt wird, wechsle zu Source und füge das Snippet dort ein. CCV Shop führt es dann auf der Dankeseite der Bestellung aus.
- Verbinde die API
Gib im Tab Connection den öffentlichen und den geheimen Schlüssel ein. Fülle Shop URL nur aus, wenn deine API auf einer anderen Domain läuft als dein Shop. Speichere, drücke Test connection und dann Create webhook.
- Verbinde deine Werbeplattformen
Nutze unter Tracking & platforms Connect with Facebook oder Add pixel für Meta und Add pixel für TikTok. Kreuze die Option an, zusätzlich das Browser-Pixel zu laden.
Einwilligung
Außerhalb von Shopify liest das ROASaurus-Skript die Entscheidung des Besuchers aus gängigen Einwilligungs-Tools: Cookiebot, OneTrust, IAB-TCF-Bannern und Google consent mode. Bei einem anderen Cookie-Banner rufst du tlq('consent', true) auf, wenn der Besucher Marketing-Cookies akzeptiert, und tlq('consent', false), wenn er sie ablehnt. Solange der Besucher nicht zustimmt, hat er keine Besucher-ID und keine Click-IDs, und es werden keine Browser-Pixel ausgelöst. Die bezahlte Bestellung wird trotzdem vom Server gesendet, mit gehashten Kundendaten aus der Bestellung. Die Hilfeseite zur Einwilligung erklärt die Details.
Wie testest du das Conversion-Tracking für CCV Shop?
- Öffne deinen Shop mit
?roasaurus=connectedin der Adresse. Ein Hinweis bestätigt, dass das Skript läuft.?roasaurus=debugschreibt in die Browser-Konsole, was es sendet. - Im Event log sollten Seitenaufrufe unter Collected events eine Besucher-ID zeigen.
- Gib eine Bestellung auf und bezahle sie oder markiere sie als bezahlt. Unter Collected events sollte der Event log ein Purchase mit der CCV-Bestell-ID in seinen Daten zeigen. Fehlt es, wurde das Snippet der Bestätigungsseite nicht ausgeführt.
- Im Tab Connection zeigt Last order received die Bestellung und Last sync die letzte 5-Minuten-Prüfung, mit etwaigen Fehlern von CCV.
- Unter Server deliveries im Event log erhält jede verbundene Plattform eine Zeile mit dem Status sent und der Antwort der Plattform.
PageView visitor 51c0e9a7Skript auf jeder SeitePurchase order-58213Snippet der Bestätigungsseitewebhook orders.updated.ispaidSignatur geprüft, Bestellung bezahltMeta Purchase sentZugeordnet über thank_youTikTok CompletePayment sentGleiche Event-ID, dedupliziertUm das Event in Meta zu sehen, füge den Code aus Events Manager › Test events in das Feld Test event code deines Meta-Pixels in ROASaurus ein und entferne ihn, wenn du fertig bist.
Späte Zahlungen und weitere Grenzen
Überweisungen und Nachnahme werden nach der Aufgabe der Bestellung bezahlt. Das passiert mit einer Beispielbestellung per Überweisung, ab dem Tag der Aufgabe:
| Wann | Was passiert | Ergebnis |
|---|---|---|
| Tag 0, im Checkout | Die Bestellung wird angelegt, aber nicht bezahlt | Nicht gesendet: Die 5-Minuten-Prüfung fragt nur bezahlte Bestellungen ab |
| Tag 0, etwa 35 Minuten später | Der Anlagezeitpunkt der Bestellung liegt außerhalb des Prüffensters | Ab jetzt kann nur noch der Webhook sie melden |
| Tag 3 | Du markierst die Bestellung als bezahlt | Der Webhook trifft ein, ROASaurus sendet sie. Der Eventzeitpunkt von Tag 0 ist 3 Tage alt: Meta akzeptiert sie |
| Stattdessen Tag 9 | Du markierst die Bestellung als bezahlt | Der Webhook trifft ein, ROASaurus sendet sie. 9 Tage sind mehr als 7: Meta lehnt sie ab |
- Nachnahme. ROASaurus sendet diese Bestellungen, wenn CCV sie als bezahlt markiert, meist nach der Lieferung. Wann du solche Bestellungen zählen solltest, steht unter Nachnahme-Tracking.
- Browser-Käufe vor der Zahlung. Das Snippet der Bestätigungsseite läuft, wenn die Bestellung aufgegeben wird, deshalb melden die Browser-Pixel eine Überweisungsbestellung, bevor sie bezahlt ist. Kommt die Zahlung mehr als 48 Stunden später, können Meta und TikTok die Browser- und Server-Kopien nicht zusammenführen.
- Kein IP-Fallback. Füge das Snippet der Bestätigungsseite hinzu und erfasse E-Mail-Adressen früher auf deiner Website, wo es geht.
- Stornierungen und Erstattungen werden nicht gesendet. Ein einmal gesendeter Kauf bleibt in der Werbeplattform.
- Nur Seitenaufrufe, ohne Code. Produktansichten und Add-to-Cart-Events werden nur in Shopify automatisch erkannt. In CCV Shop kann ein Entwickler sie mit einem
tlq-Track-Aufruf senden.
Die CCV-Shop-Integrationsseite listet die Fakten zur Verbindung an einer Stelle auf, und die Hilfeseite für andere Webshops vergleicht CCV Shop mit den anderen Plattformen, mit denen sich ROASaurus verbindet, etwa Lightspeed.
Quellen
- CCV Shop: API Documentatie
- CCV: Webshop API
- Meta for Developers: Server Event Parameters
- Meta for Developers: Handling Duplicate Pixel and Conversions API Events
- TikTok Ads Manager: About Event Deduplication