Marka D2C z wyposażeniem wnętrz
Nowy frontend w Next.js, feed produktowy zbudowany od zera i jedna kampania Performance Max zamiast siedmiu — 312% wzrostu przychodu rok do roku.
Punkt wyjścia
Klient sprzedaje meble tapicerowane, oświetlenie i tekstylia bezpośrednio do klienta końcowego, wyłącznie przez własny sklep. Instalacja WooCommerce miała pięć lat, 38 aktywnych wtyczek i motyw premium, w którym każda podstrona renderowała się przez ten sam wizualny builder. Na telefonie LCP karty produktu wynosiło 5,8–6,4 s, a przy ruchu powyżej mniej więcej 300 równoczesnych sesji serwer zaczynał zwracać 502. W drugim tygodniu listopada sklep położył się na 40 minut w środku kampanii mailingowej i to był moment, w którym zgłosili się do nas.
Druga część problemu siedziała w Google Ads. Konto prowadziły kolejno trzy agencje, każda dołożyła własną strukturę i nikt nie posprzątał po poprzedniku: siedem równoległych kampanii Performance Max, cztery stare kampanie produktowe i dwie brandowe licytujące się wzajemnie o tę samą frazę. Konwersje raportowały jednocześnie wtyczka i tag na stronie podziękowania, więc każde zamówienie liczyło się dwa razy — raportowany ROAS 6,2 w rzeczywistości wynosił około 3,1. Budżet dzienny 4 800 zł rozkładał się między kampanie bez żadnego związku z marżą sprzedawanych kategorii.
Feed produktowy generowała wtyczka, która wysyłała do Merchant Center 4 100 pozycji, z czego 1 350 miało status odrzucony lub ograniczony. Przyczyn było kilka naraz: brak GTIN przy produktach szytych na wymiar, opisy skopiowane od producentów, wymiary wpisane w tytuł zamiast w atrybuty i warianty kolorystyczne zgłaszane jako osobne produkty bez item_group_id. W praktyce reklamowała się mniej niż połowa asortymentu, a dwie najlepiej marżowe kategorie — sofy modułowe i lampy wiszące — nie wchodziły do aukcji w ogóle.
Co zrobiliśmy
- 01
Najpierw pomiar, dopiero potem kod
Przez trzy tygodnie zbieraliśmy dane równolegle z logów serwera, GA4 i surowego eksportu zamówień z bazy WooCommerce. Wyszło, że 22% zamówień przypisanych w GA4 do ruchu organicznego pochodziło z mailingu bez tagowania UTM, a podwójny pomiar zawyżał ROAS dokładnie dwukrotnie w kampaniach z remarketingiem. Zanim ruszyliśmy cokolwiek innego, przepięliśmy pomiar na server-side GTM i jedno źródło prawdy: zdarzenie purchase wysyłane z backendu po potwierdzeniu płatności. Kolejne 21 dni poszło wyłącznie na zbieranie czystych danych i była to najtrudniejsza rozmowa w projekcie, bo klient oczekiwał ruchu w kampaniach od pierwszego tygodnia.
- 02
Headless: Next.js na froncie, WooCommerce jako zaplecze
Nie migrowaliśmy bazy produktów ani zamówień — WooCommerce został jako panel dla zespołu obsługi, który znał go od lat. Zbudowaliśmy nowy frontend w Next.js na App Routerze, pobierający dane przez Store API i renderujący listingi oraz karty produktów statycznie z rewalidacją co 15 minut. Koszyk i checkout działają po stronie nowego frontu, z sesją synchronizowaną przez cookie HttpOnly, dzięki czemu nie trzeba było odtwarzać integracji z bramką płatniczą. Najdroższym elementem okazało się odwzorowanie logiki wysyłki gabarytowej: 14 progów cenowych zależnych od objętości paczki i regionu, rozrzuconych po trzech wtyczkach, które trzeba było wyciągnąć i opisać na nowo w jednym module.
- 03
Feed produktowy napisany od zera
Wyrzuciliśmy generator z wtyczki i zbudowaliśmy własny endpoint składający feed bezpośrednio z bazy. Warianty kolorystyczne spięliśmy przez item_group_id, wymiary przeszły do atrybutów product_detail, a tytuły dostały sztywny szablon: marka, typ, materiał, wymiar. Dla 2 600 pozycji bez kodów producenta wygenerowaliśmy własne MPN i ustawiliśmy identifier_exists na false, co odblokowało je w aukcjach w ciągu 48 godzin. Opisy przepisaliśmy tylko dla 340 najlepiej rotujących SKU — przy sprzedaży poniżej ośmiu sztuk miesięcznie koszt copywritingu się nie zwracał, więc reszta poczekała do kolejnego kwartału.
- 04
Restart konta Google Ads zamiast optymalizacji
Wyłączyliśmy wszystkie stare kampanie, zamiast je poprawiać: przy zafałszowanym pomiarze historia uczenia się algorytmu była bezwartościowa. Zostały trzy struktury — jedna Performance Max z grupami zasobów podzielonymi według marży brutto, jedna kampania brandowa w wyszukiwarce z wykluczeniami i jedna kampania nastawiona wyłącznie na nowych klientów. Przez pierwsze 18 dni docelowy ROAS trzymaliśmy na 2,5, żeby algorytm w ogóle zebrał konwersje, i dopiero potem podnosiliśmy go etapami do 4,0. Świadomie oddaliśmy w tym okresie około 60 tys. zł przychodu, żeby nie utrwalać starych sygnałów konwersji.
- 05
Wydajność rozliczana budżetem, nie punktami w Lighthouse
Zamiast gonić wynik w Lighthouse ustawiliśmy jeden warunek: LCP poniżej 1,5 s na 75. percentylu ruchu mobilnego z danych CrUX. Zdjęcia produktowe przeszły na next/image z AVIF i sztywnymi wymiarami, a galeria na karcie produktu ładuje priorytetowo tylko pierwszy kadr i dociąga resztę po interakcji. Pięć skryptów marketingowych przenieśliśmy do Partytown, jeden usunęliśmy całkowicie po pokazaniu, że kosztuje 340 ms TBT i przynosi 11 leadów miesięcznie. Do 1,1 s zeszliśmy dopiero za trzecim podejściem — pierwsze wdrożenie zatrzymało się na 2,3 s przez blokujący fetch kursów walut, którego nikt nie przewidział w audycie.
Efekty po 11 miesiącach
Porównujemy pełne 11 miesięcy od uruchomienia nowego frontendu do tego samego okresu rok wcześniej, na tym samym asortymencie i bez zmiany polityki rabatowej. Przychód wzrósł o 312%, przy czym mniej więcej jedna trzecia tego wzrostu przypada na kategorie, które wcześniej nie były reklamowane w ogóle, bo ich pozycje odpadały w Merchant Center. ROAS ustabilizował się na 4,1 przy budżecie podniesionym z 4 800 zł do 11 200 zł dziennie, więc skala rosła szybciej niż koszt pozyskania.
Nie wszystko wyszło. Konwersja na desktopie wzrosła tylko o 6% — praktycznie cały efekt pochodzi z urządzeń mobilnych, gdzie z 0,9% doszliśmy do 2,4%. Zwroty utrzymały się na poziomie 14%, mimo że po dopisaniu wymiarów i składu materiałów liczyliśmy na spadek; w ankiecie posprzedażowej dominującym powodem okazał się kolor odbiegający od zdjęcia, a nie brak danych technicznych. Ten wniosek przesunął kolejny etap prac z interfejsu na fotografię produktową i profile kolorystyczne.
- +312% przychodu rok do roku przy niezmienionym asortymencie
- ROAS 4,1 wobec realnych 3,1 przed restartem konta
- LCP 1,1 s na mobile (75. percentyl, dane z pola) zamiast 5,8–6,4 s
- Konwersja mobilna z 0,9% do 2,4%
- 3 940 z 4 100 pozycji zaakceptowanych w Merchant Center wobec 2 750
- Koszt pozyskania zamówienia niższy o 41% przy budżecie wyższym o 133%
Najbardziej zaskoczyło mnie to, że przez pierwszy miesiąc kazali nam czekać i nie ruszać kampanii. Trudno się na to zgodzić, kiedy codziennie patrzy się na koszty. Po fakcie to jedyna część projektu, którą zrobiłabym dokładnie tak samo.
Realizacje
Zobacz wszystkie →Platforma SaaS do planowania pracy zespołów
Czteroletni produkt B2B rósł wyłącznie z outboundu i płatnych kampanii, a domena miała 900 sesji organicznych miesięcznie. Zbudowaliśmy architekturę informacji, klastry tematyczne i poprawną wielojęzyczność na trzy rynki.
Zobacz realizacjęMotoryzacja · UsługiSieć serwisów samochodowych, 40 oddziałów
Sieć czterdziestu warsztatów przyjmowała zapisy telefonicznie, a centrala nie wiedziała, ile stanowisk stoi pusto. Zbudowaliśmy aplikację rezerwacyjną, aplikację mobilną dla kierowców i uporządkowaliśmy lokalne SEO dla każdego oddziału.
Zobacz realizacjęZaczynamy od audytu
Napisz w dwóch zdaniach, co chcesz osiągnąć. Odpowiadamy w ciągu jednego dnia roboczego.