Wróć do bloga

Blog

Tagowanie po stronie serwera dla sklepu Shopify lub WooCommerce: co się uruchamia, co nie i co zainstalować

Opublikowano · 4 min czytania

Kontener serwerowy nie sprawi, że sklep zacznie raportować zakupy. Przekazuje to, co wysyła przeglądarka, z Twojej własnej nazwy hosta zamiast z nazwy Google — i warto to robić: blokery reklam i Safari razem wycinają znaczący odsetek konwersji sklepu. Ale zakup musi najpierw zostać wysłany, a na dwóch platformach, na których działa większość sklepów, nic nie wysyła go od razu po instalacji. To artykuł, który chcielibyśmy wręczać każdemu klientowi pierwszego dnia.

Siedem zdarzeń i jedna rzecz, którą mają wspólną

GA4 definiuje siedem zdarzeń dla ścieżki zakupowej: view_item_list, view_item, add_to_cart, remove_from_cart, begin_checkout, add_payment_info i purchase. Nazwy należą do GA4, nie do żadnej platformy — te same siedem działa w Shopify, WooCommerce i w sklepie zbudowanym samodzielnie.

Łączy je mechanizm. Każde to wypchnięcie do dataLayer strony, dokładnie pod tą nazwą, z obiektem ecommerce w kształcie GA4. Reguła Tag Managera nasłuchuje nazwy; tag zdarzenia GA4 odczytuje obiekt ecommerce i go wysyła. Zrób literówkę w nazwie, zagnieźdź obiekt o poziom za głęboko albo wypchnij go na złej stronie, a tag będzie tkwił w miejscu w nieskończoność bez żadnego błędu. Tak wygląda wypchnięcie zakupu:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'ORD-10442',
    value: 89.90,
    currency: 'EUR',
    items: [
      { item_id: 'SKU-118', item_name: 'Trail jacket', price: 89.90, quantity: 1 }
    ]
  }
});

Wcześniejsze wypchnięcie ecommerce: null nie jest ozdobą. Bez niego produkty z poprzedniego zdarzenia mogą przeniknąć do następnego, a view_item sprzed trzech stron pojawi się wewnątrz purchase.

Shopify: motyw nie widzi kasy

Kontener zainstalowany w motywie Shopify ładuje się na witrynie — na stronach produktów, kolekcjach, w koszyku. Nie ładuje się w kasie ani na stronie podziękowania, które Shopify serwuje z własnej domeny i z własnych szablonów. Kontener zainstalowany w motywie może więc wysyłać view_item i add_to_cart, a nigdy, w żadnej konfiguracji, nie wyśle begin_checkout, add_payment_info ani purchase.

Te trzy pochodzą z Custom Pixel. Piaskownica pikseli Shopify udostępnia zdarzenia kasy (checkout_started, payment_info_submitted, checkout_completed) i pozwala pikselowi wypychać do własnego dataLayer — niewielki skrypt mapuje każde z nich na nazwę i kształt zdarzenia GA4 z góry. Zdarzenia witryny nadal pochodzą z motywu, więc pełna konfiguracja ma oba elementy: aplikację do dataLayer lub fragment w motywie dla części przeglądania i Custom Pixel dla części kasowej.

Jeszcze jedna decyzja. Kanał Google i YouTube w Shopify może wysyłać zdarzenia GA4 bezpośrednio, poza jakimkolwiek kontenerem. Jeśli podłączysz tam usługę GA4 I przepuścisz tę samą usługę przez swój kontener, każdy zakup zostanie policzony dwukrotnie. Wybierz jedną drogę. Jeśli chodzi o zbieranie danych własnych, drogą jest kontener, a połączenie Analytics w kanale pozostaje wyłączone.

WooCommerce: rdzeń nie wypycha niczego

Sam WooCommerce nie zapisuje żadnego dataLayer. Robi to wtyczka — GTM4WP to ta, po którą sięga większość — a jej opcja e-commerce GA4 generuje siedem zdarzeń we właściwym kształcie na właściwych stronach: view_item na produkcie, add_to_cart na przycisku, begin_checkout na stronie kasy, purchase na stronie otrzymanego zamówienia.

Klasyczna usterka WooCommerce to podwojony zakup, i ma ona konkretną przyczynę: strona otrzymanego zamówienia ładuje się ponownie. Odwiedzający ją odświeża, wraca na nią od operatora płatności albo motyw przekierowuje przez nią dwukrotnie — i purchase jest wypychane ponownie z tym samym transaction_id. GA4 deduplikuje zakupy po transaction_id w obrębie sesji, co wyłapuje większość przypadków, ale nie odświeżenie następnego dnia. Warto włączyć ustawienie wtyczki „uruchom tylko raz na zamówienie”; trzyma ono znacznik po stronie serwera, gdzie odświeżenie nie może go zresetować.

Co SignalHost buduje za Ciebie

Powiedz kreatorowi, że strona jest sklepem, a doda do Twojego kontenera internetowego regułę zdarzenia niestandardowego i tag zdarzenia GA4 dla każdego z siedmiu zdarzeń — czternaście encji, wszystkie z prefiksem SH, żeby nigdy nie kolidowały z tym, co już masz. Każdy tag wysyła obiekt ecommerce prosto z dataLayer, więc items, value, currency i transaction_id przechodzą bez osobnej zmiennej na pole, a każdy jawnie podaje Twój identyfikator pomiaru zamiast go dziedziczyć.

W Twoim sklepie nic nie jest instalowane. Reguły nasłuchują; wypchnięcia należą do wtyczki lub piksela. Wybór „brak sklepu internetowego” pomija czternaście encji i nie zmienia nic więcej — odsłony, scroll i pozostałe standardowe zdarzenia i tak przechodzą przez kontener.

Po stronie serwera nie ma nic na zdarzenie. Tag GA4 kontenera serwerowego przekazuje każde otrzymane zdarzenie, jakkolwiek się nazywa, więc nowe zdarzenie na Twojej stronie nie wymaga żadnej zmiany po naszej. Miejsca docelowe Meta Conversions API i TikTok Events API, jeśli je podłączysz, same mapują tych samych siedem nazw; purchase staje się Purchase dla Meta i CompletePayment dla TikToka, z tego samego wypchnięcia.

Sprawdzenie jednym zamówieniem testowym

Złóż prawdziwe zamówienie w trybie testowym albo tanie, które potem zwrócisz, i obserwuj listę zdarzeń na stronie kontenera. Kolejno powinny pojawić się view_item, add_to_cart, begin_checkout, add_payment_info i purchase — każde raz. Brak purchase w Shopify oznacza, że Custom Pixel nie jest zainstalowany lub nie wypycha; brak begin_checkout w WooCommerce zwykle oznacza, że zdarzenie kasy we wtyczce jest wyłączone.

Jeśli przepuszczasz konwersje Google Ads przez kontener, purchase jest zdarzeniem konwersji, a jego wartość, waluta i identyfikator transakcji są odczytywane z tego samego obiektu ecommerce. Wypchnięcie zakupu bez value rejestruje konwersję wartą nic — a to prawdziwa liczba w raporcie, i to zła.

Przestań tracić dane przez blokery

Dziesięć tysięcy żądań miesięcznie, za darmo, tak długo jak chcesz. Cztery minuty, żeby sprawdzić, czy pomaga.