Sieć dwunastu salonów prowadziła kampanie Google Ads od ponad dwóch lat i przez cały ten czas nie potrafiła odpowiedzieć na jedno pytanie: ile kosztuje wizyta w salonie pozyskana z reklamy. Konto zliczało telefony i formularze, zarząd rozliczał zespoły z obłożenia foteli. Dwie liczby żyły obok siebie i nikt nie umiał ich połączyć.
Ten projekt nie był więc o optymalizacji stawek, tylko o tym, żeby budżet przestał być dzielony na wyczucie. Opisujemy, co zadziałało i w których miejscach pomiar nadal jest przybliżeniem, a nie faktem.
Kontekst: sieć 12 salonów
Klient prowadzi salony w sześciu miastach, od centrum dużej aglomeracji po dwa punkty w miastach poniżej 60 tysięcy mieszkańców. Usługa jest umawiana z wyprzedzeniem, średni koszyk to 180–340 zł, a klient wraca co 7–9 tygodni. To ważne, bo wartość pierwszej wizyty nie jest wartością klienta.
Przed startem konto wyglądało tak: jedna kampania Performance Max na całą Polskę, jedna kampania w sieci wyszukiwania z markowymi frazami i budżet dzielony równo między oba twory. Lokalizacje salonów nie istniały w strukturze konta w żaden sposób poza listą lokalizacji targetowania. Salon w centrum aglomeracji i salon w 40-tysięcznym mieście dostawały tę samą ekspozycję i tę samą kreację.
Pierwsze dwa tygodnie poszły na inwentaryzację: ile wizyt miesięcznie ma każda lokalizacja i ile wolnych slotów w grafiku faktycznie zostaje do zapełnienia. W trzech salonach odpowiedź brzmiała: prawie żadnych. Te trzy wyłączyliśmy z kampanii akwizycyjnych na starcie, co było najtańszą optymalizacją w całym projekcie.
Jak mierzyliśmy wizyty offline
Rozważaliśmy trzy ścieżki. Pierwsza to automatyczne wizyty w sklepie raportowane przez Google. Odpadła, bo przy tej skali ruchu dane były dostępne tylko dla trzech największych salonów i w formie modelowanej, czyli nie dało się ich użyć jako sygnału do licytacji.
Druga to kod rabatowy do okazania w salonie. Prosta, ale zaniża wyniki nieprzewidywalnie: część klientów nie pamięta o kuponie, a część personelu zapomina go zarejestrować.
Wybraliśmy trzecią: pełne domknięcie pętli przez system rezerwacji. Formularz rezerwacji na stronie zapisuje identyfikator kliknięcia reklamy razem z rezerwacją. Gdy wizyta zostaje odbyta i opłacona, system rezerwacyjny zmienia jej status, a nocny eksport odsyła ten fakt do Google Ads jako konwersję offline. Techniczna strona tego rozwiązania jest opisana w dokumentacji Google jako konfiguracja konwersji offline z użyciem GCLID i to był dokładnie ten wariant, który wdrożyliśmy.
Praca po stronie klienta zajęła więcej czasu niż praca w koncie reklamowym. Trzeba było wymusić, żeby recepcja zamykała wizytę tego samego dnia, a nie zbiorczo w piątek. Bez tego sygnał docierał do algorytmu z tygodniowym opóźnieniem.
Import konwersji i wartość wizyty
Konwersję zdefiniowaliśmy jako wizytę odbytą, nie jako rezerwację. To różnica rzędu kilkunastu procent, bo część terminów jest odwoływana. Rezerwację zostawiliśmy jako konwersję pomocniczą, bez wartości, wyłącznie do diagnostyki.
Wartość przypisaliśmy nie jako średni koszyk, tylko jako rzeczywistą kwotę z paragonu, przekazywaną w tym samym eksporcie. Dzięki temu kampanie zaczęły widzieć różnicę między wizytą za 180 zł a wizytą za 340 zł, co przy strategii opartej na wartości konwersji zmieniło rozkład wydatków w ciągu kilku tygodni.
Jedna rzecz okazała się krytyczna i warto o niej pamiętać przy każdym tego typu wdrożeniu: identyfikator transakcji. Bez niego ponowny eksport tego samego rekordu, a takie zdarzały się po każdej korekcie w systemie, dubluje konwersję w koncie. Google opisuje ten mechanizm w osobnej instrukcji dotyczącej unikania zduplikowanych konwersji. U nas pierwszy tydzień importu zawyżył wyniki o około 9 procent, zanim to wyłapaliśmy.
Podział budżetu między lokalizacje
Zamiast jednej kampanii na kraj zbudowaliśmy strukturę na poziomie lokalizacji: jedna kampania na salon dla dziewięciu aktywnych punktów, z targetowaniem promieniowym dopasowanym do realnego zasięgu dojazdu, a nie do granic administracyjnych miasta. W dwóch przypadkach promień 8 km był sensowniejszy niż całe miasto, bo klienci po prostu nie przejeżdżali rzeki.
Taki podział jest droższy w utrzymaniu i rozdrabnia dane, więc nie robi się go dla porządku. Zrobiliśmy to, bo inaczej nie dało się przesunąć budżetu tam, gdzie wizyta jest tańsza. Logika rozdziału była prosta: budżet idzie do lokalizacji z najniższym kosztem wizyty, ale tylko do momentu, w którym grafik w tej lokalizacji się zapełnia. Salon bez wolnych slotów przestaje być dobrym miejscem na kolejne złotówki, nawet jeśli ma najlepsze wskaźniki w koncie.
Sama mechanika przebudowy struktury była bliska temu, co opisywaliśmy wcześniej w analizie pokazującej, jak spadł koszt konwersji po przebudowie struktury kampanii w sklepie z jedną linią produktową. Różnica polega na tym, że tam ograniczeniem był asortyment, a tutaj fizyczna pojemność dwunastu grafików.
Kreacje i komunikaty lokalne
Nazwa miasta w nagłówku podniosła CTR o około jedną piątą, co było przewidywalne. Ciekawsze było to, że najlepiej działały komunikaty odpowiadające na barierę logistyczną: parking, dojazd i dostępność terminu w tym tygodniu. Komunikaty jakościowe w stylu „doświadczony zespół” przegrywały z informacją „wolne terminy w czwartek”.
Te same pytania wracały w telefonach do recepcji, więc przepisaliśmy je na sekcje pytań i odpowiedzi na podstronach lokalizacji. To nie był cel projektu, ale okazało się, że ta sama praca pracuje w dwóch kanałach naraz. Opisywaliśmy już podobny efekt przy przebudowie sekcji FAQ pod cytowania w Perplexity, gdzie dobrze sformułowane odpowiedzi zaczęły żyć własnym życiem poza stroną.
Warto mieć świadomość, że pytanie o lokalnego usługodawcę coraz częściej nie trafia do wyszukiwarki w klasycznej formie. Jak systemy AI i Mapy Google wybierają lokalną firmę, opisaliśmy osobno, bo to zmienia wagę danych w profilu firmy względem samej kampanii płatnej.
Wyniki i koszt wizyty
Poniżej stan po pięciu miesiącach, porównanie kwartału przed wdrożeniem i kwartału po nim, przy budżecie utrzymanym na zbliżonym poziomie.
| Wskaźnik | Przed | Po 5 miesiącach |
|---|---|---|
| Aktywne lokalizacje w kampaniach | 12 | 9 |
| Wizyty odbyte z reklamy (miesięcznie) | brak pomiaru | 412 |
| Koszt wizyty odbytej | brak pomiaru | 38 zł |
| Udział rezerwacji nieodbytych | brak pomiaru | 17% |
| Koszt zgłoszenia (lead) | 22 zł | 26 zł |
| Przychód przypisany kampaniom | brak pomiaru | +31% kw/kw |
Najważniejsza liczba w tej tabeli to ta, która wygląda na pogorszenie. Koszt zgłoszenia wzrósł z 22 do 26 zł i to jest poprawny wynik, nie błąd. Algorytm przestał gonić tanie zgłoszenia i zaczął szukać zgłoszeń, które kończą się wizytą. Gdyby ktoś rozliczał ten projekt wyłącznie po koszcie leada, zamknąłby go jako nieudany.
Różnice między lokalizacjami okazały się większe, niż zakładaliśmy: najtańsza wizyta kosztowała 24 zł, najdroższa 71 zł. Ta najdroższa i tak została w kampaniach, bo miała najwyższy koszyk i powracalność.
Ograniczenia pomiaru, o których warto wiedzieć
Ten model mierzy wizyty, które zaczęły się od rezerwacji online po kliknięciu w reklamę. Nie mierzy klienta, który zobaczył reklamę, nie kliknął, a tydzień później zadzwonił. Nie mierzy też wejścia z ulicy. Szacowaliśmy ten margines na podstawie ankiety na recepcji i wyszło, że około jedna czwarta wizyt przypisywanych kanałom innym niż płatne miała wcześniej kontakt z reklamą. To nie jest liczba, którą można wstawić do konta, ale jest to liczba, o której trzeba pamiętać przy decyzji o cięciu budżetu.
Drugie ograniczenie to okno konwersji. Przy cyklu decyzyjnym liczonym w dniach standardowe okno wystarcza, ale część klientów rezerwuje termin z sześciotygodniowym wyprzedzeniem, bo wtedy jest wolny slot. Te wizyty wypadają poza okno i w raportach po prostu ich nie ma. Sposób, w jaki przypisuje się udział poszczególnych punktów styku, pozostaje modelem, a nie pomiarem, co dobrze tłumaczy opracowanie o atrybucji w marketingu.
Trzecie i najbardziej praktyczne: jakość danych zależy od recepcji. W miesiącu, w którym jeden salon miał rotację personelu, eksport wizyt spadł o 40 procent, a kampania w tej lokalizacji natychmiast ograniczyła wydatki, bo algorytm zobaczył spadek konwersji. Pomiar offline jest tak dobry jak proces, który go karmi. Dlatego warto spisać ten proces i trzymać go w jednym miejscu, podobnie jak w projekcie, w którym baza wiedzy stała się źródłem odpowiedzi dla systemów AI, a przy okazji dokumentacją dla samego zespołu.
Gdybyśmy zaczynali jeszcze raz, najpierw zrobilibyśmy audyt dyscypliny zamykania wizyt w systemie rezerwacyjnym, a dopiero potem przebudowę kampanii. Pierwsze sześć tygodni danych było z tego powodu niepełne.
FAQ
Czy da się rozliczyć wizyty offline bez systemu rezerwacji online?
Da się, ale z gorszą dokładnością. Najczęstsze obejście to unikalny numer telefonu na stronie lokalizacji i import rozmów jako konwersji albo kod rabatowy okazywany w salonie. Oba warianty zaniżają wynik, bo nie obejmują klientów, którzy zapisali numer wcześniej lub zapomnieli o kuponie.
Ile trwa wdrożenie importu konwersji offline?
Strona techniczna to zwykle 2–3 tygodnie, licząc od zgody na zapis identyfikatora kliknięcia po pierwszy poprawny eksport. Dłużej trwa ułożenie procesu na recepcji, czyli codzienne zamykanie wizyt. U nas stabilne dane pojawiły się dopiero w siódmym tygodniu.
Czy warto robić osobną kampanię na każdy salon?
Tylko wtedy, gdy każda lokalizacja generuje wystarczająco dużo konwersji, żeby algorytm miał się czego uczyć. Przy kilkunastu wizytach miesięcznie z jednego punktu lepiej połączyć kilka bliskich lokalizacji w jedną kampanię i różnicować je grupami reklam oraz kreacją.
Dlaczego koszt leada wzrósł po wdrożeniu?
Bo zmienił się cel optymalizacji. Algorytm przestał szukać najtańszego zgłoszenia, a zaczął szukać zgłoszenia, które kończy się odbytą wizytą. Wzrost kosztu leada przy spadku kosztu wizyty jest w tym modelu oczekiwany i sam w sobie nie jest sygnałem problemu.
Co zrobić z lokalizacjami, które mają pełny grafik?
Ograniczyć wydatki akwizycyjne i przenieść budżet tam, gdzie są wolne sloty. Kampania w salonie bez dostępnych terminów generuje koszt i frustrację klienta, który nie znajduje wolnego terminu. Sensowniejsze jest wtedy testowanie wyższej ceny lub wydłużenie godzin pracy niż dokładanie budżetu.
Jak często weryfikować poprawność importu konwersji?
Raz w tygodniu w pierwszym kwartale, potem raz w miesiącu. Sprawdza się trzy rzeczy: liczbę zaimportowanych rekordów względem wizyt w systemie, brak duplikatów oraz rekordy odrzucone z powodu wygasłego identyfikatora kliknięcia.
