Wszystkie artykuły
ga42026-07-20

GA4 ecommerce events — purchase, add_to_cart i co między nimi

Spis treści

GA4 ma gotowy zestaw eventów e-commerce (recommended events), ale samo ich wdrożenie nie wystarczy — trzeba rozumieć, co dokładnie mierzą i gdzie w ścieżce zakupowej się znajdują, żeby raporty (Purchase journey, Monetization) miały sens.

Pełna ścieżka eventów e-commerce w GA4

GA4 przewiduje standardowy zestaw eventów pokrywający całą ścieżkę zakupową:

  1. view_item_list — lista produktów (kategoria, wyniki wyszukiwania)
  2. select_item — kliknięcie produktu z listy
  3. view_item — wejście na stronę produktu
  4. add_to_cart — dodanie do koszyka
  5. view_cart — otwarcie koszyka
  6. begin_checkout — start checkoutu
  7. add_shipping_info / add_payment_info — wypełnienie danych dostawy/płatności
  8. purchase — finalizacja zakupu

Każdy event powinien nieść parametr items (array produktów) oraz currency i value tam, gdzie ma to sens finansowy.

purchase vs add_to_cart — różne wymagania danych

add_to_cart to sygnał intencji — wystarczy items z podstawowymi danymi produktu (id, nazwa, cena, ilość). Błędy tutaj są kosmetyczne — źle policzone value zaniży metryki, ale nie zepsuje transakcji.

purchase to transakcja finansowa — GA4 wymaga dodatkowo unikalnego transaction_id (inaczej ryzykujesz zduplikowane transakcje przy odświeżeniu strony potwierdzenia) oraz spójnej sumy value z sumą items[].price * items[].quantity plus shipping/tax. Rozjazd tutaj = błędne dane przychodowe w każdym raporcie e-commerce.

gtag('event', 'purchase', {
  transaction_id: 'ORDER-12345', // unikalny, inaczej duplikaty
  value: 129.98,
  currency: 'PLN',
  shipping: 9.99,
  items: [
    { item_id: 'DRESS-RED-M', item_name: 'Sukienka czerwona M', price: 119.99, quantity: 1 }
  ]
});

Najczęstszy błąd: dataLayer wypełniany za późno

Klasyczny problem z purchase przez GTM: dataLayer.push() dzieje się po tym, jak tag GA4 już próbował odczytać zmienne. Efekt: event leci, ale bez value albo bez items — transakcja "widoczna", ale bezwartościowa w raportach przychodowych.

Rozwiązanie: dataLayer.push() musi poprzedzać (lub być w tym samym evencie co) trigger tagu GA4 purchase — sprawdź w GTM Preview kolejność w zakładce "Data Layer".

Co jest MIĘDZY add_to_cart a purchase — i dlaczego to ważne

To właśnie w tej przestrzeni tracisz najwięcej konwersji. Eventy pośrednie (view_cart, begin_checkout, add_shipping_info, add_payment_info) pozwalają zbudować precyzyjny funnel i zobaczyć DOKŁADNIE, na którym kroku formularza ludzie rezygnują — bez nich widzisz tylko "coś się dzieje między koszykiem a zakupem", bez diagnozy.

Jeśli wdrażasz tylko add_to_cart i purchase, pomijając kroki pośrednie — masz czarną skrzynkę zamiast lejka.

TL;DR

  • Pełna ścieżka: view_item_list → select_item → view_item → add_to_cart → view_cart → begin_checkout → add_shipping/payment_info → purchase
  • purchase wymaga unikalnego transaction_id — bez niego ryzykujesz duplikaty przy odświeżeniu strony
  • value w purchase musi zgadzać się z sumą items — rozjazd psuje dane przychodowe
  • Najczęstszy błąd: dataLayer.push() wykonywany po tym, jak tag GA4 już odczytał zmienne
  • Eventy pośrednie (view_cart, begin_checkout, add_shipping/payment_info) są kluczowe do diagnozy, gdzie tracisz konwersje

Masz podobny problem w swoim GA4?

Sprawdzę Twoją konfigurację w ramach audytu GA4. Pierwsza rozmowa jest bezpłatna.

Umów konsultację

Więcej artykułów o data analytics:

Wróć do bloga