- Tracking konwersji w CCV Shop jest najpełniejszy, gdy każde opłacone zamówienie jest wysyłane z danych zamówienia CCV na serwerze, a fragment kodu na stronie sukcesu zamówienia łączy zamówienie z kliknięciem w reklamę.
- Jedno kliknięcie Create webhook sprawia, że CCV Shop zgłasza każde zamówienie w chwili oznaczenia go jako opłacone, a każda dostawa musi zawierać prywatny token twojego sklepu.
- Zamówienia z CCV Shop nie zawierają adresu IP kupującego, więc fragment kodu na stronie sukcesu zamówienia ma w CCV Shop większe znaczenie niż na większości platform.
- 5-minutowa kontrola sprawdza tylko niedawno utworzone zamówienia, więc zamówienia opłacone po kilku dniach zależą od webhooka: utrzymuj go aktywnego.
- Meta odrzuca zdarzenia server-side wysłane ponad 7 dni po utworzeniu zamówienia, więc bardzo spóźniony przelew bankowy nie dociera do Meta.
Tracking konwersji w CCV Shop oznacza zgłaszanie każdego opłaconego zamówienia w twoim sklepie CCV Shop do platform reklamowych, takich jak Meta i TikTok, żeby przypisywały zasługi właściwym reklamom i optymalizowały się na prawdziwej sprzedaży. Najpełniejszy sposób to wysyłanie każdego zakupu z danych zamówienia CCV na serwerze i dodanie krótkiego fragmentu kodu na stronie sukcesu zamówienia, który łączy zamówienie z kliknięciem w reklamę.
CCV Shop to hostowana platforma sklepów internetowych holenderskiej firmy CCV, która podaje, że obsługuje 17,000 sklepów internetowych. Ten poradnik wyjaśnia, jak ROASaurus się z nią łączy, jak zamówienia są powiązane z kliknięciami w reklamy, co trafia do Meta i TikTok, jak wygląda konfiguracja, testowanie i jak działają opóźnione płatności. Ogólną ideę opisuje artykuł czym jest server-side tracking.
Jak ROASaurus łączy się z CCV Shop?
ROASaurus korzysta z trzech elementów CCV Shop, wszystkich opisanych w dokumentacji API CCV:
| Element CCV Shop | Do czego używa go ROASaurus |
|---|---|
| REST API, z kluczem publicznym i kluczem tajnym | Odczytuje każde opłacone zamówienie i jego pozycje |
Webhook dla zdarzenia orders.updated.ispaid | CCV zgłasza zamówienie w chwili zmiany jego statusu płatności na opłacone |
Strona sukcesu zamówienia, z Vertoshop.js | Fragment kodu odczytuje tam order id i łączy zamówienie z odwiedzającym |
Dlaczego piksele w przeglądarce pomijają zakupy w CCV Shop?
Piksel w przeglądarce raportuje zakup tylko wtedy, gdy przeglądarka kupującego załaduje stronę sukcesu zamówienia i uruchomi się skrypt piksela. Kilka typowych sytuacji to psuje:
- Kupujący płaci przez przekierowanie, na przykład iDEAL, i zamyka kartę, zanim załaduje się strona sukcesu.
- Bloker reklam albo ustawienie prywatności w przeglądarce blokuje skrypt piksela.
- Odwiedzający odrzuca marketingowe cookie, więc piksel nie może się załadować.
- Zamówienie jest opłacane później, przelewem bankowym lub przy odbiorze, gdy żadna przeglądarka nie jest zaangażowana.
W każdym z tych przypadków CCV Shop nadal oznacza zamówienie jako opłacone. ROASaurus wysyła to zamówienie z serwera, więc zakup jest raportowany niezależnie od tego, co stało się w przeglądarce. Fragment kodu na stronie sukcesu ma inne zadanie: mówi ROASaurus, do którego odwiedzającego, a więc do którego kliknięcia w reklamę, należy zamówienie.
Webhook opłaconego zamówienia i 5-minutowa kontrola
Co robi Create webhook
Gdy klikniesz Create webhook, ROASaurus rejestruje webhook CCV dla zdarzenia orders.updated.ispaid, które CCV wywołuje, gdy zmienia się właściwość paid zamówienia. Adres to adres webhooka twojego sklepu w ROASaurus, który zawiera klucz sklepu i prywatny token. CCV nie dodaje do webhooka niczego, co identyfikuje sklep, a jego dokumentacja radzi umieścić identyfikator w adresie. Klucz sklepu to robi.
CCV nadaje każdemu webhookowi własny 32-znakowy klucz tajny. Gdy CCV zwraca ten klucz, ROASaurus go zapisuje i od tej pory każda dostawa musi zawierać prawidłowy nagłówek x-hash. Każda dostawa musi też zawierać token twojego sklepu. Gdy ROASaurus odbiera dostawę, ignoruje zamówienia, które nie są opłacone, odczytuje z API pełne zamówienie i jego pozycje i wysyła zamówienie tylko wtedy, gdy CCV mówi, że jest opłacone.
Podpisane wywołania API
CCV wymaga podpisania każdego wywołania API. ROASaurus wysyła trzy nagłówki: x-public z twoim kluczem publicznym, x-date z bieżącym czasem i x-hash. CCV odrzuca znacznik czasu, który różni się od czasu jego serwera o więcej niż 5 minut. Sam twój klucz tajny nigdy nie jest wysyłany.
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 )
Sprawdzanie co 5 minut
Co 5 minut ROASaurus pyta też CCV o opłacone zamówienia utworzone od ostatniej kontroli, z 30-minutowym zapasem wstecz, i zapisuje te, których jeszcze nie ma. CCV filtruje zamówienia tylko po dacie utworzenia. Kontrola znajduje więc zamówienia opłacone wkrótce po złożeniu, a zamówienie opłacone po kilku dniach trafia do ROASaurus wyłącznie przez webhook.
CCV uznaje odpowiedź 200, 201, 202 lub 204 za sukces. Po odpowiedzi 307, 408, 503 lub 504 trzyma dostawę otwartą i ponawia ją przy następnym wystąpieniu, a każdą inną odpowiedź oznacza jako nieudaną. Czeka 2 sekundy na połączenie i 5 sekund na odpowiedź.
Jak zamówienie z CCV Shop jest powiązane z kliknięciem w reklamę?
Żeby przypisać zasługi reklamie, platforma potrzebuje identyfikatorów kliknięcia odwiedzającego, który złożył zamówienie, takich jak click id Meta (fbc) i click id TikToka (ttclid). Skrypt ROASaurus zapisuje je dla każdego odwiedzającego, gdy trafia z reklamy. ROASaurus nie dostaje tego visitor id z zamówienia CCV, więc łączy zamówienia z odwiedzającymi w inny sposób:
| Metoda | W CCV Shop | Jak to działa |
|---|---|---|
| 1. Fragment kodu na stronie sukcesu zamówienia | Tak | Odczytuje order id przez Vertoshop.getOrder().getId(), a także sumę zamówienia i walutę, i wysyła zakup ROASaurus z event id order-58213 |
| 2. Wcześniejszy e-mail | Tak | Zahashowany e-mail podany wcześniej przez odwiedzającego na twojej stronie, w formularzu w popupie lub przez wywołanie Identify |
| 3. Adres IP i przeglądarka | Nie | Zamówienia z CCV Shop nie zawierają adresu IP ani przeglądarki kupującego, więc ta metoda zapasowa nie ma z czym porównywać |
ROASaurus czeka krótko, zanim wyśle każdy zakup, żeby zdarzenie ze strony sukcesu mogło dotrzeć pierwsze, i ponawia dopasowanie w momencie wysyłki. Strona Orders pokazuje wynik dla każdego zamówienia w kolumnie Matched by: thank_you, email lub not matched.
Niedopasowane zamówienie nadal trafia do twoich platform reklamowych z zahashowanymi danymi klienta z zamówienia. Nie ma identyfikatorów kliknięcia, a ponieważ zamówienia CCV nie niosą adresu IP ani przeglądarki, nie ma też tych danych. To obniża odsetek zdarzeń, które Meta może dopasować do osoby; artykuł Event Match Quality wyjaśnia, jak Meta to ocenia. W atrybucji ROASaurus niedopasowane zamówienie jest pokazywane jako bezpośrednie lub nieznane.
Co z zamówienia CCV trafia do Meta i TikTok?
| Dane zamówienia CCV | Wysyłane jako |
|---|---|
id | Event id order-58213 i order id |
total_price, currency | Wartość i waluta (EUR, gdy CCV nie podaje waluty) |
create_date | Czas zdarzenia |
| E-mail klienta, numer komórkowy lub telefonu, imię i nazwisko | Hashowane SHA-256 |
| Miasto rozliczeniowe, kod pocztowy i kod kraju | Hashowane SHA-256 |
| Customer id | Zahashowany external id |
| Pozycje zamówienia: numer produktu, product id, liczba, cena i nazwa | Produkty z id, ilością i ceną |
| Adres IP i przeglądarka | Brak w zamówieniach CCV: pobierane ze zdarzenia na stronie sukcesu albo od dopasowanego odwiedzającego |
Meta dostaje Purchase przez swoje Conversions API, a TikTok CompletePayment przez swoje Events API, oba z event id order-58213. TikTok pokazuje teraz CompletePayment w swoich raportach jako Purchase. Gdy zaznaczysz opcję ładowania także piksela w przeglądarce, fragment kodu na stronie sukcesu wysyła te same zdarzenia w przeglądarce z tym samym event id, a Meta i TikTok zachowują jedną kopię. Te same zamówienia trafiają do Snapchata, Pinteresta, Reddita, X, Microsoft Ads, Taboola, LinkedIn i innych platform reklamowych, gdy je podłączysz. Konwersje zakupu Google Ads są wysyłane tylko z checkoutu Shopify, więc ROASaurus nie wysyła ich z CCV Shop.
Jak skonfigurować tracking konwersji w CCV Shop
- Dodaj sklep w ROASaurus
Przejdź do Add a store, wybierz CCV Shop i wpisz adres swojego sklepu. Karta Connection pokaże wtedy twój tag skryptu i fragment kodu na stronę sukcesu.
- Znajdź swoje klucze API
W CCV Shop przejdź do My webshop › Settings › General › API settings i kliknij New API key. Jeśli tego nie widzisz, najpierw zainstaluj aplikację API z CCV App Store.
- Dodaj skrypt na każdej stronie
Wklej tag skryptu w Header HTML swojego sklepu. Centrum pomocy CCV umieszcza go w Mijn webshop › Instellingen › Lay-out › Layout, na dole strony. Działa też blok kodu aplikacji w nagłówku.
- Dodaj fragment kodu na stronie sukcesu
Przejdź do Mijn webshop › Instellingen › Algemeen › Teksten, otwórz tekst wyświetlany po złożeniu zamówienia, przełącz na Source i wklej tam fragment kodu. CCV Shop uruchomi go wtedy na stronie sukcesu zamówienia.
- Połącz API
Na karcie Connection wpisz klucz publiczny i klucz tajny. Pole Shop URL wypełnij tylko wtedy, gdy twoje API działa na innej domenie niż sklep. Zapisz, kliknij Test connection, a potem Create webhook.
- Połącz swoje platformy reklamowe
W Tracking & platforms użyj Connect with Facebook albo Add pixel dla Meta i Add pixel dla TikTok. Zaznacz opcję ładowania także piksela w przeglądarce.
Zgoda
Poza Shopify skrypt ROASaurus odczytuje wybór odwiedzającego z popularnych narzędzi do zgód: Cookiebot, OneTrust, banerów IAB TCF i Google consent mode. W przypadku innego banera cookie wywołaj tlq('consent', true), gdy odwiedzający zaakceptuje marketingowe cookie, i tlq('consent', false), gdy je odrzuci. Dopóki odwiedzający nie zaakceptuje, nie ma visitor id ani click id, a piksele w przeglądarce się nie uruchamiają. Opłacone zamówienie nadal jest wysyłane z serwera z zahashowanymi danymi klienta z zamówienia. Szczegóły wyjaśnia strona pomocy o zgodach.
Jak przetestować tracking konwersji w CCV Shop?
- Otwórz swój sklep z
?roasaurus=connectedw adresie. Alert potwierdza, że skrypt działa.?roasaurus=debugzapisuje w konsoli przeglądarki to, co skrypt wysyła. - W Event log, w sekcji Collected events, wyświetlenia stron powinny pokazywać visitor id.
- Złóż zamówienie i opłać je albo oznacz je jako opłacone. W Collected events Event log powinien pokazać Purchase z order id CCV w danych. Jeśli go brakuje, fragment kodu na stronie sukcesu nie zadziałał.
- Na karcie Connection Last order received pokazuje zamówienie, a Last sync ostatnią 5-minutową kontrolę, wraz z ewentualnym błędem z CCV.
- W Server deliveries w Event log każda podłączona platforma dostaje wiersz ze statusem sent i odpowiedzią platformy.
PageView visitor 51c0e9a7Skrypt na każdej stroniePurchase order-58213Fragment kodu na stronie sukcesu zamówieniawebhook orders.updated.ispaidPodpis sprawdzony, zamówienie opłaconeMeta Purchase sentMatched by thank_youTikTok CompletePayment sentTen sam event id, po deduplikacjiŻeby zobaczyć zdarzenie w Meta, wklej kod z Events Manager › Test events w pole Test event code swojego piksela Meta w ROASaurus i usuń go, gdy skończysz.
Opóźnione płatności i inne ograniczenia
Przelewy bankowe i płatności za pobraniem są opłacane po złożeniu zamówienia. Oto, co dzieje się z przykładowym zamówieniem z przelewem bankowym, od dnia jego złożenia:
| Kiedy | Co się dzieje | Wynik |
|---|---|---|
| Dzień 0, w checkoucie | Zamówienie jest utworzone, ale nieopłacone | Nie wysłano: 5-minutowa kontrola pyta tylko o opłacone zamówienia |
| Dzień 0, około 35 minut później | Czas utworzenia zamówienia wypada poza okno kontroli | Od teraz może je zgłosić tylko webhook |
| Dzień 3 | Oznaczasz zamówienie jako opłacone | Webhook dociera, ROASaurus go wysyła. Czas zdarzenia z dnia 0 ma 3 dni: Meta go akceptuje |
| Zamiast tego dzień 9 | Oznaczasz zamówienie jako opłacone | Webhook dociera, ROASaurus go wysyła. 9 dni to więcej niż 7: Meta go odrzuca |
- Płatność za pobraniem. ROASaurus wysyła te zamówienia, gdy CCV oznacza je jako opłacone, zwykle po dostawie. Zobacz tracking płatności za pobraniem, żeby wiedzieć, kiedy liczyć takie zamówienia.
- Zakupy z przeglądarki przed płatnością. Fragment kodu na stronie sukcesu uruchamia się w chwili złożenia zamówienia, więc piksele w przeglądarce raportują zamówienie z przelewem bankowym, zanim zostanie opłacone. Jeśli płatność przyjdzie później niż po 48 godzinach, Meta i TikTok nie mogą połączyć kopii z przeglądarki i z serwera.
- Brak dopasowania po IP. Dodaj fragment kodu na stronie sukcesu i zbieraj adresy e-mail wcześniej na swojej stronie, gdzie to możliwe.
- Anulowania i zwroty nie są wysyłane. Gdy zakup zostanie wysłany, zostaje w platformie reklamowej.
- Tylko wyświetlenia stron, bez kodu. Wyświetlenia produktów i dodania do koszyka są wykrywane automatycznie tylko w Shopify. W CCV Shop programista może je wysłać wywołaniem track
tlq.
Strona integracji z CCV Shop zbiera fakty o połączeniu w jednym miejscu, a strona pomocy dla innych sklepów internetowych porównuje CCV Shop z innymi platformami, z którymi łączy się ROASaurus, takimi jak Lightspeed.
Źródła
- 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
W ROASaurus
- Integracja z CCV Shop
- Pomoc: Wix, Lightspeed i inne sklepy internetowe
- Server-side tracking
- Integracja z Meta