LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Digital Analytics/Tutorials / Tutorial: Migracja analityki e-commerce z Client-Side na...
Ten artykuł w innych językach:

Tutorial: Migracja analityki e-commerce z Client-Side na Server-Side GTM

Tutorial: Migracja analityki e-commerce z Client-Side na Server-Side GTM

Management Summary

Pomiar serwerowy umieszcza usługę kontrolowaną przez sklep między przeglądarką a dostawcami analityki. Daje większy wpływ na przetwarzanie i udostępnianie informacji o zakupach. Przekazywanie wiadomości z przeglądarki różni się od wysyłania potwierdzonych zakupów bezpośrednio z systemu zamówień, dlatego oba podejścia mają własne wymagania. Artykuł wyjaśnia tę różnicę i stopniowe przejście. Celem są wiarygodniejsze raporty, z mniejszą liczbą brakujących lub wielokrotnie liczonych zamówień.

Spis treści
  1. 1. Ustalenie zasad porównania
  2. 2. Pełne środowisko serwerowe
  3. 3. Klient odbierający i tag wyjściowy
  4. 4. Przekierowanie istniejącej instalacji webowej
  5. 5. Zakupy z backendu jako osobna integracja
  6. 6. Uzgodnienie i przełączenie
  7. Pytania i odpowiedzi
  8. Źródła
  9. Kontrola w praktyce: uzgodnienie zamówień z eksportem sklepu
  10. Przygotowanie pliku CSV Analytics w BigQuery

Server-side GTM zapewnia kontrolę nad przetwarzaniem i celami żądań pomiarowych. Kierowanie zdarzeń przeglądarkowych przez serwer tagujący oraz wysyłanie potwierdzonych zakupów z backendu sklepu to dwie odrębne zmiany. Żadna nie gwarantuje kompletnej analityki: nadal znaczenie mają zgody, brakujące identyfikatory, duplikaty, błędy dostarczania i definicje raportów.

Aktualizacja z 19.10.2026: Przykłady endpointów rozróżniają teraz samodzielne gtag.js, GTM i zoptymalizowane tagi celów. Optymalizacja kontenera sama nie przenosi pomiarów na serwer tagujący; rozstrzyga rzeczywisty adres żądania. Październikowe zmiany w Google Tag i GTM.

Migracja zaczyna się od osobnego celu testowego, zachowuje możliwość powrotu do poprzedniej konfiguracji i wymaga uzgodnienia pojedynczych zamówień przed przełączeniem produkcji.

Kontrolowana migracja rozdziela routing, dostarczanie z backendu i uzgodnienie zamówień. Żadna trasa nie gwarantuje pełnej analityki.
Kontrolowana migracja rozdziela routing, dostarczanie z backendu i uzgodnienie zamówień. Żadna trasa nie gwarantuje pełnej analityki.

1. Ustalenie zasad porównania

Dotychczasowa ścieżka produkcyjna pozostaje aktywna, a nowa początkowo wysyła do osobnej usługi testowej. Obie kopie w tej samej usłudze produkcyjnej mogą zawyżać zdarzenia i przychody. Zgodny identyfikator transakcji nie stanowi uniwersalnej deduplikacji wszystkich zdarzeń i celów.

Usługi wymagają porównywalnych stref czasowych, walut, definicji zdarzeń, filtrów i istotnych połączeń. Dwa do czterech tygodni może być początkowym okresem obserwacji; właściwa długość zależy od cyklu zakupowego, ruchu i opóźnionych płatności. Kryteria odbioru obejmują brakujące i powtórzone zamówienia, kwoty, obsługę zgód oraz nieudane żądania, a nie tylko większą liczbę zakupów.

2. Pełne środowisko serwerowe

GTM oferuje automatyczne wdrożenie w Cloud Run. Konfiguracja ręczna wymaga serwera podglądu i produkcyjnej usługi tagującej. Oba używają tej samej konfiguracji kontenera. Serwer podglądu otrzymuje RUN_AS_PREVIEW_SERVER=true, a usługa tagująca jego adres HTTPS przez PREVIEW_SERVER_URL. Instrukcja Google opisuje pełną kolejność. Pojedyncze polecenie wdrażające usługę tagującą pomijałoby infrastrukturę podglądu.

Możliwe są inne zgodne środowiska Docker, lecz sieć, dane dostępowe, skalowanie, kontrola stanu i aktualizacje obrazu pozostają zadaniami operacyjnymi. Wydajność wymaga sprawdzenia przy rzeczywistym obciążeniu. Publikacja obszaru roboczego GTM aktualizuje konfigurację kontenera, nie obraz wykonawczy.

Subdomena same-site lub ścieżka same-origin może zapewnić kontekst first-party. Wygenerowany adres chmurowy również może odbierać zdarzenia, ale nie należy do witryny sklepu. Kontrola obejmuje DNS, TLS, CSP i rzeczywistą trasę żądania. Własny host nie usuwa blokad przeglądarki ani ograniczeń ciasteczek.

3. Klient odbierający i tag wyjściowy

Klient musi przejąć żądanie i zamienić obsługiwany format na dane zdarzenia. Zainstalowany domyślnie klient Google Analytics obsługuje wspierany format tagu Google. Inne protokoły wymagają odpowiedniego klienta. Sam odbiór nie dostarcza danych do GA4: potrzebny jest również serwerowy tag celu z odpowiednią regułą uruchomienia.

Aktywacja klienta, udostępnianie skryptów Google i cel przeglądarki to różne ustawienia. Przeglądarka musi jawnie kierować żądania pomiarowe na serwer. Sygnały zgody i transformacje wymagają kontroli na całej trasie; zmienne dostępne tylko w przeglądarce nie pojawiają się automatycznie w kontenerze serwerowym.

4. Przekierowanie istniejącej instalacji webowej

W GTM server_container_url należy do tagu Google lub tagu celu Google Analytics, zależnie od instalacji. W samodzielnym gtag.js parametr trafia do istniejącego wywołania konfiguracji:

JavaScript
gtag('config', 'G-XXXXXXXXXX', {
  server_container_url: 'https://sgtm.shop.example.com'
});

Identyfikator pomiaru i endpoint są miejscami na rzeczywiste wartości. Fragment nie instaluje gtag.js ani konfiguracji GTM. Dodatkowe wywołanie konfiguracji może zmienić zachowanie odsłon; istniejące ustawienia i zasady pomiaru odsłon wymagają świadomej aktualizacji.

Widok sieciowy przeglądarki potwierdza rzeczywisty endpoint. Podgląd serwera sprawdza następnie klienta, dane zdarzenia, stan zgody, transformacje i tag wyjściowy. Na końcu cel testowy potwierdza odbiór. Poprawna odpowiedź serwera tagującego nie dowodzi przetworzenia zdarzenia przez GA4.

5. Zakupy z backendu jako osobna integracja

Zdarzenie backendowe może powstać po potwierdzeniu zamówienia bez oczekiwania na stronę potwierdzenia. Integracja analityczna nadal wymaga dozwolonego zbierania, poprawnych danych i niezawodnego dostarczania. Dłuższe życie identyfikatora samo nie wydłuża sesji GA4.

Nadawca backendowy powinien korzystać z udokumentowanego interfejsu. Bezpośredni GA4 Measurement Protocol używa HTTPS POST do /mp/collect, identyfikatora pomiaru strumienia webowego i prywatnego API secret w adresie oraz treści JSON z client_id i zdarzeniami. Ta droga omija kontener tagujący. Przekazanie danych backendowych przez sGTM wymaga osobno skonfigurowanego klienta, obsługiwanego formatu, sposobu uwierzytelniania i mapowania celu. Sama zamiana hosta w żądaniu JSON Measurement Protocol nie potwierdza zgodności z wbudowanym klientem.

Przypisanie do wizyty online wymaga dozwolonych identyfikatorów klienta i sesji z rzeczywistego kontekstu pomiarowego, a nie z założonego formatu ciągu ciasteczka. Brak identyfikatorów wymaga osobnej reguły; wymyślona sesja zafałszowałaby atrybucję. Atrybucja sesji w bezpośrednim Measurement Protocol ma dodatkowe warunki czasowe, między innymi żądanie w ciągu 24 godzin od początku sesji oraz czas zdarzenia mieszczący się w tej sesji.

  1. Określenie czynności uznawanej za zakup, na przykład potwierdzonego opłacenia zamówienia zamiast każdej zmiany statusu.
  2. Trwały zapis dostarczenia z unikalnym kluczem zamówienia/zdarzenia, czasem wystąpienia, walutą, produktami i właściwym kontekstem zgody.
  3. Walidacja danych zakupu; wartość i kwoty produktów muszą odpowiadać uzgodnionym zasadom podatku, dostawy i rabatów.
  4. Kontrola aktualnego uprawnienia przed wysyłką, także późniejszego wycofania zgody, gdy ma zastosowanie. Backend nie zastępuje obsługi zgód.
  5. Rejestrowanie wyniku i obsługa błędów przez ograniczoną kolejkę z jawnymi zasadami ponawiania. Timeout oznacza brak odpowiedzi w wyznaczonym czasie. Zdarzenie mogło jednak dotrzeć do odbiorcy, dlatego ponowna wysyłka wymaga ochrony przed podwójnym zliczeniem.

Każde zamówienie potrzebuje stabilnego, niepustego transaction_id. GA4 dokumentuje deduplikację zakupów dla strumieni webowych. Nie jest to uniwersalna gwarancja dokładnie jednego zdarzenia w aplikacjach, celach reklamowych i własnych eksportach. Po przełączeniu jeden komponent powinien odpowiadać za produkcyjne zdarzenie zakupu. Równoległa wysyłka z przeglądarki i backendu należy do odizolowanego testu.

W bezpośrednim Measurement Protocol endpoint /debug/mp/collect sprawdza strukturę bez dodawania zdarzeń do raportów. Produkcyjna odpowiedź 2xx potwierdza odbiór HTTP, nie poprawne przetworzenie analityczne. Sekrety pozostają na serwerze, poza logami i kodem przeglądarki.

6. Uzgodnienie i przełączenie

Porównanie wymaga tego samego kwalifikującego się zbioru zamówień, granic dni, walut i definicji przychodu. Wykluczone stany zgody, opóźnione płatności i zwroty wymagają osobnych wyjaśnień. Wyższe liczby nie dowodzą lepszej jakości danych. Poniższe narzędzia pomagają sprawdzać pojedyncze zamówienia.

Przełączenie zmienia jedną ścieżkę produkcyjną naraz, wyłącza zbędnego nadawcę zakupów i monitoruje błędy dostarczania, duplikaty, atrybucję oraz koszty. Poprzednia konfiguracja pozostaje dostępna na potrzeby powrotu, z planem zapobiegającym ponownej wysyłce już dostarczonych zakupów.

Pytania i odpowiedzi

Czy własna subdomena wystarczy, żeby Safari nie skracało ciasteczka ustawianego przez kontener serwerowy?

Nie. Własna subdomena sama nie gwarantuje pełnego czasu życia ciasteczka ani wyłączenia ochrony przed śledzeniem. WebKit ogranicza ważność ciasteczek z odpowiedzi przy wykrytym maskowaniu zewnętrznej usługi przez CNAME lub adres IP. Ścieżka przez infrastrukturę witryny może zmienić właściwe warunki, ale nie daje bezwarunkowej gwarancji ważności. Kontrola obejmuje rzeczywisty DNS i trasę żądania, atrybuty Set-Cookie oraz zasady przeglądarki; optymalizacja kontenera GTM nie zmienia ich automatycznie.

Kontrola w praktyce: uzgodnienie zamówień z eksportem sklepu

Narzędzie Porównanie przychodów sklepu i GA4 porównuje dwa pliki CSV lokalnie. Wspólnym kluczem jest identyfikator zamówienia. Nazwiska, adresy e-mail i dane kontaktowe nie są potrzebne do tego porównania: wystarczą ID zamówienia, kwota i waluta.

  1. Przygotowanie eksportów dla tego samego okresu i strefy czasowej, z identycznym traktowaniem podatków, dostawy i zwrotów. Pozycje towarów i zwroty wymagają wcześniejszego zsumowania do uzgodnionej kwoty na zamówienie.
  2. Wybór separatora i znaku dziesiętnego dla każdego pliku, wczytanie i przypisanie kolumn ID, kwoty i waluty. Zera na początku identyfikatora pozostają zachowane.
  3. Wybór liczby miejsc dziesiętnych i jawnej tolerancji na zamówienie. Bez przeliczania walut.
  4. Kontrola osobnych grup: brak po jednej stronie, powtórzone ID, inna waluta i kwota poza tolerancją.
  5. Eksport wyniku i sprawdzenie konkretnych zamówień w systemach źródłowych.

Powtórzone ID są oznaczane zamiast sumowania: ponowne wysłanie zakupu, eksport pozycji i wiersz zwrotu wymagają odmiennej interpretacji. Ujemne kwoty są akceptowane jako liczby, lecz definicja biznesowa nadal musi się zgadzać. Brak zamówienia w Analytics może wynikać ze zgody, momentu pomiaru, filtrów lub błędów zbierania; sam w sobie nie dowodzi wadliwego tagu. Zerowa różnica nie potwierdza eksportu wszystkich zamówień. Narzędzie nie sumuje kwot w różnych walutach.

Definicje wynikają z wybranego eksportu i dokumentacji ecommerce GA4. Schemat Data API rozróżnia ID transakcji i metryki przychodu; ogólny przychód całkowity nie musi odpowiadać kwocie zamówienia sklepu.

Przygotowanie pliku CSV Analytics w BigQuery

Pomocnik eksportu w porównywarce przychodów tworzy zapytanie o zakupy dla istniejącego dziennego eksportu GA4. Projekt, zbiór danych, daty i precyzja zaokrąglania są wprowadzane lokalnie. Strona nie wykonuje SQL ani nie żąda dostępu do BigQuery.

Kolumny wyniku transaction_id, amount i currency odpowiadają polom porównania. Każdy zarejestrowany zakup pozostaje wierszem. Dodatkowa liczba zdarzeń zakupu pomaga znaleźć powtarzające się identyfikatory transakcji; nie są one automatycznie sumowane ani usuwane. Brak kwoty nie jest zastępowany zerem.

  1. Przed eksportem sklepu uzgodnienie definicji kwoty zakupu i granic dni. Zapytanie pomija zwroty oraz nie dodaje osobno podatków i dostawy.
  2. Wygenerowanie SQL, walidacja w BigQuery i sprawdzenie szacowanych kosztów. Przed wykonaniem ustawienie maksymalnej liczby rozliczanych bajtów.
  3. Zapis całego wyniku jako lokalnego CSV. W porównaniu wybór przecinka jako separatora, kropki dziesiętnej i tej samej precyzji co w zapytaniu.
  4. Kontrola powtarzających się identyfikatorów i brakujących pól przed interpretacją różnic kwot. Porównanie obsługuje do 20 000 wierszy danych na plik. Identyfikatory w arkuszach powinny pozostać tekstem.

Dwa fikcyjne pliki CSV do pobrania zapewniają powtarzalny pierwszy test, po jednym przypadku w każdej z sześciu grup wyników. Są niezależne od SQL i używają dwóch miejsc dziesiętnych oraz zerowej tolerancji.

Źródła: schemat eksportu GA4, walidacja zapytań i kontrola kosztów oraz zapisywanie wyników jako CSV.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA do ochrony przed spamem.

Napisanie komentarza

Odmienne wyniki z innych kont i pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.