Przejdź do treści
cutty.dev
Wszystkie posty

Jak zmierzyć ROI kampanii za pomocą krótkich linków i UTM

Dowiedz się, jak zmierzyć ROI kampanii dzięki krótkim linkom i UTM: spójny schemat tagów, atrybucja per kanał i statystyki bez profilowania.

800 zł na LinkedIn Ads. Do tego newsletter, który nic nie kosztował poza Twoim czasem. I jeszcze trzy posty na Mastodonie, bo czemu nie.

Mija tydzień. Szef pyta (albo ten głos w głowie, który pilnuje budżetu): i co z tego wyszło? Wchodzisz w analitykę. 2400 wejść. Ładnie. Tylko z którego kanału? Ile z tych wejść skończyło się sprzedażą za 199 zł, a ile odbiło się od strony w trzy sekundy?

Nie wiesz. A skoro nie wiesz, to nie masz pojęcia, czy zarobiłeś, czy właśnie dopłaciłeś do imprezy.

Da się to policzyć tak, żeby obronić liczbą, nie przeczuciem. Pokażę jak.

Najpierw wzór, bo bez niego to tylko gadanie

ROI (%) = (przychód z kampanii − koszt kampanii) / koszt kampanii × 100

Matematyka tu jest banalna. Cały problem siedzi w liczniku, w tym „przychodzie z kampanii". Żeby go policzyć, musisz wiedzieć, które kliknięcie doprowadziło do której złotówki. To się nazywa atrybucja i to jest właściwa robota.

Dobra wiadomość: nie potrzebujesz do tego drogiego CRM-a ani działu od danych. Krótki link z parametrami UTM to najtańszy mechanizm przypisania, jaki znam. Trzeba go tylko stosować konsekwentnie. I tu większość ludzi się wykłada.

Jeden schemat tagów. Spisany. Bez wyjątków

Klasyk: jeden link ma utm_source=fb, drugi utm_source=Facebook, trzeci utm_source=FB_ADS. W raporcie? Trzy osobne kanały. ROI rozsypany na drobne, których nikt nie poskłada.

Ustal słownik raz i pilnuj go jak oka w głowie:

  • utm_source — skąd: linkedin, newsletter, mastodon
  • utm_medium — typ: cpc, email, social, organic
  • utm_campaign — nazwa akcji: promo-q2-2026
  • utm_content — wariant: naglowek-a vs naglowek-b

Problem w tym, że pełny adres robi się potworny:

https://twojadomena.pl/oferta?utm_source=newsletter&utm_medium=email&utm_campaign=promo-q2-2026&utm_content=naglowek-a

Nikt tego nie wklei do posta. Nikt nie przeczyta na slajdzie. Dlatego owijasz to w krótki link. UTM-y zostają w środku, robią swoje w analityce, a na zewnątrz widać czyste cutty.dev/promo-q2. W cutty.dev nadasz każdemu kanałowi własny markowy alias (/promo-newsletter, /promo-li) i od pierwszego kliknięcia widzisz na panelu, który z nich naprawdę zarabia.

Rozbij to per kanał, bo średnia kłamie

ROI policzony na całej kampanii jest prawie bezużyteczny. Uśrednia świetne źródła ze słabymi i wychodzi mdła papka. Rozkładaj na czynniki:

Kanał Koszt Kliknięcia Konwersje Przychód ROI
LinkedIn Ads 500 zł 900 12 2388 zł +378%
Newsletter 0 zł 600 18 3582 zł ∞
Mastodon 0 zł 320 2 398 zł dodatni, mało

I dopiero teraz widać prawdę. Newsletter, który kosztował Cię wyłącznie czas, rozkłada płatne reklamy na łopatki. Osiemnaście konwersji za zero złotych. Następnym razem wiesz, gdzie przesunąć budżet, i nie zgadujesz.

Żeby taka tabelka w ogóle powstała, sklejasz dwie rzeczy po nazwie kampanii:

  1. Wejścia z UTM-ów (analityka pokazuje źródło i medium).
  2. Pieniądze z systemu sprzedaży (zamówienie, faktura, podpis pod umową).

Im czystsze UTM-y na wejściu, tym mniej godzin spędzisz potem dłubiąc w arkuszu. To naprawdę cała filozofia.

Statystyki, które nie handlują Twoimi odbiorcami

Jest pewien haczyk, o którym branża niechętnie gada. Większość skracarek i pikseli mierzy ROI, profilując przy okazji ludzi, którzy klikają. Zapisuje surowe IP. Buduje cienie profili. Czasem odsprzedaje te sygnały dalej, gdzieś, komuś.

Przy kampanii kierowanej do klientów z UE to nie jest błaha sprawa. To Twoja odpowiedzialność, z RODO wiszącym nad głową.

cutty hashuje IP. Dostajesz dokładnie to, czego ROI wymaga (ile kliknięć, z jakiego kanału, kiedy, mniej więcej jaki sprzęt) i nic ponadto. Żadnej bazy do śledzenia konkretnych osób. Serwery stoją w UE, a tłumaczenia stron docelowych liczę lokalnie na własnym sprzęcie, więc dane Twojej kampanii nie lecą do przypadkowego SaaS-a za oceanem.

Jeden link, który przeżyje całą akcję

Wyobraź sobie: drukujesz ulotkę z kodem QR prowadzącym na promocję. W połowie kampanii landing pada. Albo zmieniasz ofertę. Przy zwykłym linku to przedruk i wyrzucony budżet.

W cutty po prostu podmieniasz cel istniejącego linku. QR działa dalej, wszystkie wcześniejsze udostępnienia też, a statystyki ROI lecą nieprzerwanie na tym samym aliasie. Bez resetu, bez dziury w danych.

Zanim odpalisz, sprawdź cztery rzeczy

  • słownik UTM spisany w notatce, do której faktycznie zaglądasz (nie „w głowie")
  • osobny krótki link na każdy kanał, najlepiej markowy
  • konwersja zdefiniowana jako coś wartego pieniędzy: zakup albo lead, nie samo „wejście"
  • przegląd po 7 i po 30 dniach, bo wczesny ROI lubi kłamać

I ostatnia myśl. Najgorszy moment to nie ten, w którym kampania nie zarabia. Najgorszy jest ten, w którym zarabia, a Ty nie wiesz dlaczego, więc nie umiesz tego powtórzyć. Jeden markowy link z UTM na kanał załatwia ten problem raz na zawsze. Reszta to już tylko czytanie liczb.