Wszystkie artykuły

KajoData / Praca i rozwój

KPI w e-commerce: CAC, AOV, retencja, LTV i payback

Jeden sklep, sześć zamówień i spójne definicje. Pokazuję, jak liczyć KPI e-commerce oraz oddzielić sprzedaż, wkład po kosztach i prognozę wartości klienta.

Kajo RudzińskiOpublikowano Aktualizacja 11 min czytania

Paczki przechodzą przez sklep i taśmociąg z lupą oraz osobną pętlą zwrotów, w granatowo-żółtej ilustracji pixel art.

Sklep może sprzedawać więcej i jednocześnie mieć coraz mniej pieniędzy na pokrycie kosztów. Może też pokazywać lepszą konwersję tylko dlatego, że zmieniła się definicja wizyty. Dlatego przy KPI zaczynam od pytania, co dokładnie liczymy, z jakich danych i jaką decyzję chcemy podjąć na podstawie wyniku.

Przejdziemy przez koszt pozyskania klienta, wartość zamówienia, powroty klientów, wartość klienta i czas odzyskania kosztu pozyskania. Dołożę konwersję, bo bez niej łatwo pomylić zamówienia z kupującymi. Wszystkie rachunki oprę na jednym małym, fikcyjnym sklepie. Dzięki temu zobaczysz zależności między wskaźnikami i samodzielnie sprawdzisz liczby.

Zanim policzysz: zapisz definicję

KPI potrzebuje nazwy, wzoru, jednostki, okresu, źródła i osoby odpowiedzialnej za interpretację. Przy sprzedaży dopisz walutę, traktowanie podatków, rabatów, dostawy oraz zwrotów. Przy klientach określ, czy identyfikatorem jest konto, adres e-mail czy inny uzgodniony klucz. Sam nagłówek „wartość klienta” nie wystarczy do odtworzenia wyniku.

Sprawdź też poziom szczegółowości danych. Jedno zamówienie może zawierać kilka produktów, jeden klient może złożyć kilka zamówień, a w jednej sesji mogą wystąpić dwa zakupy. Łączenie tych tabel bez kontroli potrafi zwielokrotnić kwoty. Zanim zbudujesz dashboard, policz liczbę unikalnych zamówień przed połączeniem i po nim oraz porównaj sumy.

Ustal datę odcięcia informacji. Sprzedaż styczniowa oglądana pod koniec marca może zawierać późniejsze korekty. To inny widok niż raport znany ostatniego dnia stycznia. Oba mogą być potrzebne, ale muszą mieć własne etykiety. W przeciwnym razie odbiorca uzna aktualizację danych za błąd albo rzeczywistą zmianę zachowania klientów.

Jeden przykład dla wszystkich wskaźników

W naszym fikcyjnym sklepie obserwujemy trzech klientów: C1, C2 i C3. Każdy kupił pierwszy raz w styczniu 2026 roku. Mamy pełną historię ich zakupów do końca marca. Kwoty są w PLN, po rabatach, bez podatków i bez opłat za dostawę pobieranych od klienta. Koszty zmienne obejmują uzgodniony w ćwiczeniu koszt towaru i obsługi zamówienia.

Poniżej sześć zaakceptowanych, zrealizowanych zamówień. Żadne nie zostało anulowane. Każdy wiersz opisuje całe zamówienie, a nie pojedynczy produkt. Wartości przed zwrotem zapisujemy osobno od późniejszej korekty.

Zamówienie i klient Data, sesja, kwota i koszt
O1, C1 2026-01-05; S1; 100 PLN; koszt 70 PLN
O2, C1 2026-01-05; S1; 50 PLN; koszt 30 PLN
O3, C2 2026-01-10; S2; 200 PLN; koszt 120 PLN
O4, C3 2026-01-25; S3; 150 PLN; koszt 80 PLN
O5, C1 2026-02-12; S4; 80 PLN; koszt 30 PLN
O6, C1 2026-03-15; S5; 120 PLN; koszt 40 PLN

Do O4 mamy częściowy zwrot: 10 lutego oddano klientowi 50 PLN i odzyskano koszt towaru 20 PLN. W analizie według daty zamówienia przypisujemy tę korektę do stycznia. Pokazujemy więc stan wiedzy na 31 marca, z przeliczoną historią. Nie jest to kalendarz przepływów pieniężnych ani odtworzenie informacji dostępnej 31 stycznia.

W styczniu zarejestrowano 30 sesji od 20 różnych użytkowników. Trzy sesje zakończyły się co najmniej jednym zakupem; sesja S1 zawiera dwa zamówienia. Koszt pozyskania całej styczniowej grupy wyniósł 300 PLN, w tym 120 PLN wydatków reklamowych. Pozostałe 180 PLN to przypisane koszty pracy i narzędzi pozyskania. To dane ćwiczeniowe, bez deklarowania wyniku rzeczywistej firmy.

Konwersja: wybierz właściwy mianownik

Współczynnik konwersji sesji na zakup zdefiniujemy jako liczbę sesji z zakupem podzieloną przez wszystkie objęte pomiarem sesje. W styczniu mamy 3 / 30, czyli 10%. Gdy pytamy o udział kupujących użytkowników, otrzymujemy 3 / 20, czyli 15%. Różnica wynika z innego pytania i innego mianownika.

Cztery zamówienia podzielone przez 30 sesji dają około 13,33 zamówienia na 100 sesji. Tego wyniku nie nazwę odsetkiem sesji zakończonych zakupem. Jedna sesja miała dwa zamówienia i nie może zostać dwukrotnie zaliczona jako osobna sesja. Taki błąd łatwo przeoczyć, gdy raport korzysta z liczby zdarzeń zamiast liczby sesji.

Dokumentacja Google Analytics Data API rozróżnia współczynnik sesji z dowolnym kluczowym zdarzeniem od współczynnika dla konkretnego zdarzenia. Sprawdź więc, czy karta dotyczy zakupu, czy także innych celów. Nasz rachunek jest własną definicją na syntetycznych danych, bez deklaracji zgodności z domyślnym raportem konkretnej usługi.

Przy porównaniu miesięcy sprawdź zakres śledzenia i identyfikację użytkowników. Nowy pomiar, brak części zdarzeń albo zmiana źródeł ruchu mogą zmienić wynik bez poprawy procesu zakupu. Najpierw rozdziel te możliwości, dopiero potem wybieraj eksperyment dotyczący koszyka lub strony produktu. Sam wzrost wskaźnika nie wskazuje jeszcze przyczyny.

AOV: ile przypada na jedno zamówienie

Average Order Value to średnia wartość zamówienia. W tym ćwiczeniu dzielę wartość sprzedaży po rabatach i przypisanych zwrotach przez liczbę zrealizowanych zamówień. Styczniowe kwoty przed zwrotem sumują się do 500 PLN, a po korekcie do 450 PLN. Cztery zamówienia dają AOV równe 112,50 PLN.

Bez uwzględnienia zwrotu wyszłoby 125 PLN. Obie wartości można pokazać, jeśli wyraźnie nazwiesz zakres. Częściowy zwrot zmniejsza u nas licznik, ale nie usuwa pierwotnego zamówienia z mianownika. Wynik 450 / 3 = 150 PLN opisuje natomiast sprzedaż na kupującego klienta. To przydatna miara, lecz odpowiada na inne pytanie niż AOV.

Nie usuwaj tanich produktów ani promocyjnych zamówień tylko dlatego, że obniżają średnią. Zamiast poprawiać liczbę przez wybór wygodnych danych, pokaż osobno segmenty. Sprawdź wartość koszyka, koszty zmienne i późniejsze zakupy klientów pozyskanych promocją. Większe zamówienie może wymagać większego rabatu i pozostawiać mniej środków na pozostałe wydatki.

Zwróć uwagę na rozkład. Pojedyncze duże zamówienie może mocno przesunąć średnią w małym sklepie. Obok AOV przydadzą się liczba zamówień, mediana i zakres wartości, jeśli masz dane pozwalające je policzyć. W naszym przykładzie skupiamy się na średniej i nie udajemy, że sześć zakupów opisuje typowy rynek.

CAC: koszt pozyskania nowego kupującego

Customer Acquisition Cost porównuje uzgodnione koszty pozyskania z liczbą nowych klientów. Shopify opisuje CAC przez koszty sprzedaży i marketingu oraz nowych klientów. W naszym modelu nowy klient to osoba z pierwszym zakupem, a nie z nowym kontem lub zapisem do newslettera. Te zdarzenia mogą mieć osobne wskaźniki.

Dzielimy 300 PLN przez trzech nowych kupujących i otrzymujemy CAC równy 100 PLN. Gdybyśmy użyli wyłącznie 120 PLN wydatków reklamowych, wyszłoby 40 PLN. Taką liczbę nazwij kosztem reklamy na nowego kupującego. Nie porównuj jej bez wyjaśnienia z pełniejszym CAC obejmującym dodatkowe koszty. Zmiana zakresu licznika może wyglądać jak poprawa skuteczności.

W rzeczywistym raporcie uzgodnij przypisanie kosztów wspólnych, kampanii trwających kilka okresów i pracy służącej także obecnym klientom. Nie ma sensu dzielić wszystkich wydatków firmy przez nowych kupujących i nazywać wyniku kosztem pozyskania. Potrzebujesz zasad, które można konsekwentnie zastosować i wyjaśnić właścicielowi budżetu.

Nasz przykład pokazuje koszt całej grupy. Nie udowadnia, że konkretna reklama spowodowała wszystkie trzy zakupy. Przypisanie zamówienia do kanału i pomiar przyrostowego wpływu kampanii to osobne zadania. Jeśli raportujesz kanały, pokaż również nieprzypisane zakupy i regułę atrybucji. Nie rozdzielaj ich arbitralnie tylko po to, żeby każda kolumna się wypełniła.

Tace z paczkami łączy ścieżka; obok leżą klepsydra i lupa, symbolizujące obserwację zakupów w czasie.

Retencja: śledź tę samą grupę klientów

Kohorta to grupa połączona wspólnym punktem startu. Tutaj są nim pierwsze zakupy w styczniu. Podobną zasadę grupowania według pierwszego zamówienia opisuje raport kohort klientów Shopify. Wybór konkretnej miary aktywności nadal trzeba dopasować do pytania.

W lutym kupił ponownie C1, więc udział aktywnych kupujących ze styczniowej kohorty wynosi 1 / 3, czyli około 33,33%. W marcu ponownie kupił C1, zatem wynik jest taki sam. Nie dodajemy tych procentów, aby policzyć różnych powracających klientów. W obu miesiącach była to ta sama osoba. W całym późniejszym oknie wrócił jeden z trzech klientów.

Brak zakupu C2 i C3 w lutym nie dowodzi ich trwałej utraty. Sklep z rzadko kupowanymi produktami ma inny rytm niż codzienna usługa abonamentowa. Ustal horyzont i definicję powrotu. Nie nazywaj automatycznie pozostałej części kohorty churnem, jeśli nie określiłeś, co oznacza odejście w danym modelu działalności.

Porównuj kohorty w takim samym wieku. Grupa styczniowa miała do końca marca dwa późniejsze miesiące na powrót, a marcowa jeszcze ich nie miała. Nieobserwowany przyszły miesiąc powinien pozostać pusty, nie dostać zera. Uważaj również na sezon, promocje i skład klientów. Różnica między kohortami może podsunąć hipotezę, ale sama nie dowodzi działania nowej funkcji.

LTV: oddziel obserwację od prognozy

Lifetime Value dotyczy wartości klienta w całej relacji. Trzy miesiące zakupów dają nam jedynie wartość za zaobserwowane okno. W naszym zbiorze sprzedaż po zwrocie wynosi 450 + 80 + 120 = 650 PLN. Na trzech klientów przypada średnio około 216,67 PLN przychodu z zamówień do końca marca. Nie nazwałbym tego prognozowanym LTV bez dodatkowego modelu.

Policzmy też wkład po kosztach zmiennych. Styczeń daje 450 PLN sprzedaży i 280 PLN kosztów po korekcie, czyli 170 PLN. Luty daje 50 PLN, a marzec 80 PLN. Razem zostaje 300 PLN, czyli 100 PLN na klienta, przed kosztem pozyskania. Ten zakres jest znacznie bliższy pytaniu o pokrycie CAC niż sam przychód.

Po odjęciu 300 PLN kosztu pozyskania wynik kohorty w tym uproszczeniu wynosi zero. Nadal nie uwzględniliśmy wszystkich kosztów stałych, podatków i innych elementów wyniku firmy. Nie jest to więc stwierdzenie rentowności całego sklepu. Wysoka relacja przychodu do CAC nie wystarcza, żeby wyciągnąć taki wniosek.

Prognoza przyszłej wartości potrzebuje założeń o kolejnych zakupach, zwrotach, kosztach i długości obserwacji. Zapisz warianty oraz sposób późniejszego porównania prognozy z realizacją. Nie rozciągaj automatycznie zachowania jednego aktywnego klienta na całą grupę. Przy tak małej próbie rozsądniej pokazać ograniczenie niż tworzyć pozornie dokładną wieloletnią liczbę.

Payback: kiedy wkład pokrywa koszt pozyskania

Payback opisuje czas odzyskania kosztu pozyskania. Stripe przedstawia tę ideę oraz uproszczony wzór oparty na miesięcznym wyniku klienta. U nas miesięczne wartości są różne, dlatego sumujemy rzeczywisty wkład kohorty po uzgodnionych kosztach zmiennych. Nie dzielimy CAC przez przychód z przypadkowego miesiąca.

Koniec okresu Skumulowany wkład przed CAC
Styczeń 170 PLN
Luty 220 PLN
Marzec 300 PLN

Próg 300 PLN osiągamy po raz pierwszy w marcowym przedziale, czyli trzecim obserwowanym miesiącu. W tabeli kohort, która oznacza pierwszy miesiąc jako zero, będzie to indeks dwa. Napisz tę konwencję obok wyniku, żeby odbiorca nie interpretował dwóch etykiet jako sprzecznych obliczeń.

To retrospektywny payback według naszej definicji wkładu, z korektą zwrotu przypisaną do zamówienia. Nie określa dnia odzyskania gotówki: do tego potrzebne byłyby terminy płatności, wypłat i kosztów. Jeżeli próg nie został osiągnięty do daty odcięcia, napisz „nieosiągnięty w obserwowanym okresie”. Nie zamieniaj braku wyniku w zero miesięcy ani w obietnicę przyszłego zwrotu.

Kontrole, które wykonuję przed interpretacją

Najpierw sprawdzam unikalność identyfikatora zamówienia. Powtórnie przesłane zdarzenie O1 nie może tworzyć kolejnej sprzedaży. Dwa różne zamówienia o tej samej kwocie nadal są dwoma zamówieniami. Gdy ten sam identyfikator ma sprzeczne wartości, potrzebna jest reguła wersjonowania lub wyjaśnienie konfliktu, a nie dowolne zachowanie pierwszego wiersza.

Potem sprawdzam zwroty i braki. Korekta musi wskazywać istniejące zamówienie, właściwą walutę i zakres kosztu, który rzeczywiście odzyskano. Brak kwoty nie oznacza darmowego zamówienia. Brak nowych klientów oznacza niezdefiniowany CAC dla takiego dzielenia, a brak zamówień niezdefiniowane AOV. Raport powinien pokazać powód braku wyniku, zamiast udawać poprawne zero.

Na koniec uzgadniam sumy z danymi zamówień i zakresem kosztów. Rozbieżność między analityką internetową a systemem sprzedaży wymaga wyjaśnienia pokrycia i definicji. Nie naprawiaj jej ukrytym mnożnikiem. Przygotowanie danych opisuję szerzej w poradniku o czyszczeniu danych, a kontrolę poziomu szczegółowości w tekście o SQL dla analityka.

Zamień wynik w konkretne pytanie

Porównuj segmenty bez zmiany reguł

Jeżeli rozbijesz sklep na kanały, urządzenia lub grupy produktów, zachowaj te same definicje w każdym segmencie. Łączne AOV oblicz z sumy wartości i sumy zamówień. Zwykła średnia średnich nadaje taką samą wagę małej i dużej grupie, więc może dać inny wynik. Podobnie łączną konwersję odtworzysz z odpowiednich liczników i mianowników, a nie z dowolnie uśrednionych procentów.

Przy produktach ustal dodatkowo, co znaczy zamówienie należące do kategorii. Koszyk zawierający produkty z kilku kategorii może pojawić się w kilku grupach. Ich liczby zamówień nie muszą wtedy sumować się do liczby całego sklepu. Zapisz tę własność raportu albo zastosuj inną, jednoznaczną regułę przypisania. Ukrywanie takiego nakładania utrudnia późniejsze uzgodnienie kart.

Przy całkowicie zwróconym zamówieniu zdecyduj, czy zachowujesz je w mianowniku AOV. Nasz przykład zawiera tylko zwrot częściowy i nie rozstrzyga każdej możliwej polityki sklepu. Wybrana reguła musi być widoczna, zwłaszcza gdy porównujesz raport operacyjny z raportem finansowym. Korekta definicji wymaga opisania daty zmiany lub przeliczenia porównywanej historii.

Ustal też strefę czasową granicy miesiąca. Zamówienie złożone blisko północy może należeć do innego dnia w źródle technicznym i raporcie biznesowym. Najpierw wybierz wspólną podstawę, a potem przypisuj zakupy do kohort. Pozornie drobna różnica potrafi przesunąć pierwszy zakup klienta i wszystkie jego późniejsze kolumny retencji.

Z naszego przykładu wynika, że jeden klient odpowiada za wszystkie późniejsze zakupy, a skumulowany wkład pokrywa koszt pozyskania dopiero w marcu. To dobry punkt wyjścia do sprawdzenia powrotów, kosztów i większej próby. Nie jest to jeszcze rekomendacja zwiększenia budżetu ani wyłączenia kampanii. Najpierw potrzebujemy wiedzieć, czy obserwacja powtarza się w innych grupach.

Ja na pierwszym dashboardzie pokazałbym kilka wskaźników wraz z liczebnością, okresem, datą odcięcia i krótką definicją. Obok zapisałbym pytanie do wyjaśnienia oraz osobę odpowiedzialną za kolejny krok. Taki raport pomaga prowadzić rozmowę o decyzji. Sama długa lista skrótów nie mówi jeszcze, co warto sprawdzić jutro.

Materiał wideo

W filmie omawiam najważniejsze KPI w e-commerce. Powyższy przykład rozwija temat przez wspólne definicje, koszty, zwroty i porównywalne okresy obserwacji.

Najważniejsze w pigułce

Czy AOV i przychód na klienta oznaczają to samo?

Nie. AOV dzieli wartość zamówień przez liczbę zamówień, a przychód na klienta przez liczbę klientów. Jeden klient może złożyć kilka zamówień.

Czy przychód z trzech miesięcy jest LTV?

To zaobserwowana wartość w konkretnym oknie. Prognoza całej relacji wymaga dodatkowych założeń, a porównanie z CAC powinno jasno określać także koszty.

Czy payback oznacza zysk całej firmy?

Nie. W przykładzie oznacza pokrycie kosztu pozyskania przez skumulowany wkład po uzgodnionych kosztach zmiennych. Nie obejmuje wszystkich kosztów firmy ani terminów przepływów gotówki.

Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.