Witly Logo
FunkcjonalnościCennikKontakt
Zaloguj się Umów konsultację
Case study

Case study yrke.pl: z szablonu na headless storefront

Yrke — polski producent mebli na wymiar — przeniósł sklep z szablonu na headless storefront Witly. Porównaliśmy obie wersje strona po stronie i zmierzyliśmy różnice. Wszystko poniżej to fakty z pomiarów i zrzuty ekranu — bez marketingowej waty.

Bartosz Jagielski
Bartosz Jagielski11 czerwca 2026
34 → 85wynik wydajności Google PageSpeed Insights (mobile)
15×szybsze pełne załadowanie strony produktu
16wariantów kolorów na jednej karcie produktu (było: osobne produkty)
1spójna ocena produktu (było: trzy różne liczby z trzech źródeł)

Jak porównywaliśmy: ta sama strona główna, ta sama kategoria (Biurka, 418 produktów) i ta sama karta produktu (Biurko komputerowe Iron — Czarne) w obu wersjach sklepu. Czasy z Performance API w Chrome — ta sama sieć, ta sama sesja. Desktop i mobile.

Wydajność

PrzedRaport Google PageSpeed Insights starej strony produktu — wydajność 34/100
PoRaport Google PageSpeed Insights nowej strony produktu — wydajność 85/100
Google PageSpeed Insights (mobile), ta sama karta produktu. Wynik wydajności: 34 → 85 (mediana z 5 przebiegów; lab PSI waha się o kilka punktów między przebiegami). Przy okazji „Ułatwienia dostępu": 77 → 97. Z przykładowego przebiegu: LCP 15,3 s → 3,2 s, FCP 11,1 s → 1,8 s, Total Blocking Time 2270 ms → 40 ms, Speed Index 16,4 s → 2,3 s.

Do tego nasze własne pomiary tej samej karty (Performance API, desktop, ta sama sieć):

Pełne załadowanie
przed
5124 ms
po
330 ms
DOMContentLoaded
przed
4493 ms
po
240 ms
TTFB (czas pierwszego bajtu)
przed
1076 ms
po
201 ms
Liczba requestów
przed
193
po
85

Strona w poprzedniej wersji domykała ładowanie po ~5 sekundach — według danych Google/SOASTA przy 5 s prawdopodobieństwo odbicia rośnie o 90% względem 1 s. Deloitte („Milliseconds Make Millions") wyliczył, że samo 0,1 s poprawy daje w retailu średnio +8,4% konwersji. Headless schodzi poniżej pół sekundy, a nawigacja między podstronami działa bez przeładowań (prefetch).

Strona produktu: warianty przy cenie

PrzedStara karta produktu yrke.pl — jedno zdjęcie, brak wariantów przy cenie
PoNowa karta produktu — miniatury 16 wariantów pod ceną i konfigurator obok galerii
Ta sama karta produktu. Po lewej: wariant koloru to osobny produkt — przełączenie wymagało zjechania na dół strony do sekcji „Ten sam mebel w innych kolorach". Po prawej: 16 wariantów jako miniatury bezpośrednio pod ceną.

Badania kart produktu Baymard Institute pokazują, że użytkownicy oczekują wyboru koloru na karcie — warianty rozbite na osobne produkty powodują skakanie tam-i-z-powrotem do listingu, a część kupujących nigdy nie odkrywa pozostałych kolorów.

Konfigurator pod lupą

Yrke sprzedaje meble na wymiar, więc konfigurator to serce tej karty produktu. W starej wersji był to gotowy moduł osadzony w szablonie — technicznie i stylistycznie obcy reszcie sklepu (własne kontrolki, własna typografia).

PrzedStary konfigurator yrke.pl — czerwony błąd walidacji widoczny zanim użytkownik cokolwiek wybrał
Stary konfigurator zaraz po kliknięciu „Skonfiguruj i kup": czerwony błąd „Najpierw wybierz wymagane pola produktu" — zanim użytkownik zdążył cokolwiek zrobić. Inna typografia, inne kontrolki niż reszta sklepu.

Co było nie tak (sprawdziliśmy każdy punkt):

  • Trzy rozłączne punkty uwagi — przycisk „Skonfiguruj i kup" w buy-boxie, właściwy konfigurator w zakładce niżej i sticky pasek „0/4 wybrane" na dole ekranu. Konfiguracja wymagała skakania między nimi.
  • Walidacja przed akcją — sekcja otwierała się z czerwonym komunikatem błędu, mimo że użytkownik nie popełnił żadnego błędu (heurystyka Nielsena #9: komunikat błędu ma odpowiadać na realny błąd).
  • Dopłaty widoczne dopiero po wyborze — opcja „120 cm" pokazywała „(+80,00 zł)" dopiero gdy została wybrana, a cena w pasku aktualizowała się z wyczuwalnym opóźnieniem.
  • Mobile: konfigurator głęboko w bardzo długiej stronie — strona produktu na telefonie miała ~13 250 px wysokości; do opcji trzeba było dotrzeć przez kilkanaście ekranów scrolla, a fragmenty tekstu wystawały poza ekran („Poszczególne warianty mogą różnić się cen…").
  • Niedostępny z klawiatury — rozwijane listy nie były fokusowalne, a po wybraniu wartości fokus lądował w kolejnych opcjach strony zamiast przy przycisku dodania do koszyka — dojście do niego wymagało kilkudziesięciu wciśnięć Tab (szczegóły w sekcji „Dostępność").

Co było OK: sam pomysł paska postępu „0/4 wybrane" — informacja, ile zostało do skompletowania, jest wartościowa i w nowej wersji została zachowana (licznik „0 z 4" w nagłówku konfiguratora).

Przed (mobile)Stary konfigurator na telefonie — tekst wystaje poza ekran, kontrolki obce stylistycznie
Po (mobile)Nowy konfigurator na telefonie — akordeon pod wariantami, dopłaty przy każdej opcji
Mobile przed/po. Po lewej: moduł z uciętym tekstem i kontrolkami z innego świata. Po prawej: akordeon „Skonfiguruj produkt" zaraz pod wariantami — każda opcja z dopłatą widoczną przed wyborem (81 cm +2 zł, 82 cm +4 zł…).

W nowej wersji konfigurator stoi w kolumnie zakupowej obok galerii, każda opcja ma dopłatę przy sobie zanim ją wybierzesz, pole „Cena za szt." przelicza się natychmiast, a długie listy mają wyszukiwarkę. Według badań Baymard ~48% porzucających koszyk wskazuje „koszty ujawnione zbyt późno" jako powód — tu żadna dopłata nie jest niespodzianką.

Sam flow konfiguracji też nie jest przypadkowy. Pierwsza wymagana sekcja (szerokość) jest domyślnie otwarta — klient od razu widzi konkretne wartości i jawne dopłaty, bez klikania w czarną skrzynkę „Wybierz", a otwarta lista naturalnie zaprasza do rozpoczęcia konfiguracji (zaczęte zadanie chętniej się kończy). Po dokonaniu wyboru automatycznie otwiera się kolejna wymagana sekcja — akordeon prowadzi przez obowiązkowe kroki jak kreator, aż licznik w nagłówku dojdzie do „4 z 4". Listy są przy tym wewnętrznie przewijane, więc otwarta sekcja nie rozpycha strony. To wzorzec „default to the next action": każdy kupujący i tak musi przejść te cztery kroki — konfigurator po prostu wykonuje pierwszy ruch za niego.

Jeden kolor akcji

Na zrzutach wyżej widać jeszcze jedną zmianę: w starej wersji przycisk akcji był czarny — ten sam kolor co nagłówki, pasek menu, ceny i dziesiątki innych elementów. Przycisk „Skonfiguruj i kup" nie wyróżniał się niczym poza rozmiarem. W nowej wersji kolor akcji to firmowy żółty — zarezerwowany dla głównego CTA, z jedną akcją primary na widoku („Wybierz wszystkie opcje" w buy-boxie, „Pokaż 418 produktów" w filtrach, „Sprawdź ofertę" w hero).

Skąd ta zasada? Hierarchia przycisków (primary / secondary / tertiary) z jedną akcją o najwyższym priorytecie wizualnym na ekranie to standard dojrzałych design systemów — Material Design opisuje to wprost jako poziomy „emphasis", a NN/g jako hierarchię wizualną: wzrok ma trafiać najpierw tam, gdzie jest najważniejsza akcja. Uczciwie: to wytyczna projektowa potwierdzona praktyką, nie wynik badania laboratoryjnego. Ale praktyka jest jednoznaczna — najwięksi gracze e-commerce robią dokładnie to samo: Amazon ma żółte „Dodaj do koszyka", Allegro pomarańczowe „Kupuję", Media Expert żółte CTA na granacie, MediaMarkt czerwone na czerni. Każdy z nich trzyma jeden wyrazisty kolor wyłącznie dla akcji zakupowej.

Wyszukiwarka: z nakładki do natywnej integracji

PrzedStara wyszukiwarka — pełnoekranowa nakładka przykrywająca sklep, z surowymi nazwami atrybutów
PoNowa wyszukiwarka — podpowiedzi w nagłówku sklepu i wyniki jako zwykła strona z filtrami
To samo zapytanie. Po lewej: wyszukiwarka jako pełnoekranowa nakładka z własnym interfejsem i osobnym zestawem filtrów. Po prawej: podpowiedzi w nagłówku i wyniki jako zwykła strona sklepu.

Yrke korzystało z silników wyszukiwania Witly (tekst, AI, szukanie zdjęciem, głosowe) już przed migracją — ale jako widget na szablonie. Tak działa każde zewnętrzne rozwiązanie wyszukiwania dodawane do gotowego sklepu, również nasze: otwiera własną warstwę nad stroną, z osobnym interfejsem, własnymi filtrami i osobnym „światem". Po przejściu na headless te same silniki są wpięte natywnie: podpowiedzi w polu w nagłówku, wyniki jako normalna strona sklepu z tymi samymi filtrami, sortowaniem i kartami produktów co reszta storefrontu. Jeden spójny interfejs zamiast dwóch.

Opinie: jedna liczba zamiast trzech

PrzedStara sekcja opinii — widget z oceną 5.0 z 5 opinii, w tym opinie z podobnych produktów
PoNowa sekcja opinii — 5,0 na podstawie 2 opinii tego produktu, moduł Witly Potwierdzone Opinie
Po lewej: zewnętrzny widget opinii. Po prawej: moduł Witly Potwierdzone Opinie — ocena dotyczy dokładnie tego produktu.

Na starej karcie produktu klient widział trzy różne liczby: u góry „4.89 (Oceny: 703, Recenzje: 3)", a na dole widget z „5.0 / 5 opinii" — w tym opinie oznaczone „dotyczy podobnego produktu". To celowe zachowanie tego typu widgetów (przy małej liczbie opinii dopełniają sekcję recenzjami pokrewnych produktów i zbiorczą oceną), ale z perspektywy klienta trudno powiedzieć, co właściwie ocenia te 703 czy 5 osób. Heurystyka spójności (Nielsen #4) jest tu bezlitosna — sprzeczne liczby przy jednym produkcie osłabiają zaufanie do wszystkich.

W nowej wersji ocena dotyczy dokładnie tego produktu i wszędzie jest taka sama. Do tego: badge „Zakup potwierdzony", filtr „tylko od kupujących", sortowanie po pomocności i głosowanie 👍/👎 — standardowe rekomendacje Baymard dla sekcji opinii. Według Spiegel Research Center oznaczenie „zweryfikowany zakup" istotnie zwiększa zaufanie do recenzji. Pod opiniami doszła też sekcja pytań i odpowiedzi (Q&A), której wcześniej nie było.

Kategoria: filtry, które filtrują

PrzedStare filtry kategorii — sekcje techniczne typu Panel LED z jedną opcją
PoNowy panel filtrów — histogram cen, suwak, pola i przycisk Pokaż 418 produktów
Po lewej: sidebar z filtrami-atrapami — „Panel LED — więcej opcji (1)", „Rynna na przewody — więcej opcji (1)"… Filtr z jedną wartością niczego nie filtruje. Po prawej: histogram rozkładu cen, suwak z polami i licznik wyników na przycisku.

Trzy wytyczne z badań filtrowania Baymard w jednym panelu: liczba wyników widoczna przed zastosowaniem filtra („Pokaż 418 produktów"), suwak cen zawsze w parze z polami do wpisania kwoty i wizualizacja rozkładu cen. A filtry bez mocy rozróżniającej po prostu zniknęły — każda zbędna opcja wydłuża decyzję (prawo Hicka).

Strona główna

PrzedStary hero — karuzela bannerów JPG z tekstem wypalonym w grafice, w wąskim boxie
PoNowy hero — pełnoekranowy banner z prawdziwym tekstem HTML i przyciskiem CTA
Po lewej: bannery jako pliki JPG z tekstem wypalonym w grafice, w boxie z widocznymi przyciętymi sąsiednimi slajdami. Po prawej: full-width banner, w którym nagłówek, lista korzyści i przycisk to prawdziwy HTML.

Tekst w grafice to pusty obrazek dla czytnika ekranu i dla Google, a na telefonie zmniejsza się do nieczytelności — WCAG 2.1 mówi o tym wprost (kryterium 1.4.5 „Images of Text"). Tekst HTML renderuje się z pierwszym paintem (lepsze LCP), łamie się responsywnie i jest indeksowalny. Efekt operacyjny: zmiana promocji to edycja tekstu, nie zlecenie dla grafika.

PrzedStara sekcja Nowości — karty z surowymi nazwami z hurtowni pisane wielkimi literami
PoNowa sekcja Nowości — jednolite karty produktów ze spójnymi nazwami i cenami
Sekcja „Nowości". Po lewej: surowe karty z feedu dostawcy — „3 x DRZWI MALAX 3D FRONTY DO REGAŁU KOMOROWEGO…", wielkie litery, część kart bez ceny lub przycisku. Po prawej: jednolita siatka. Tekst wersalikami czyta się istotnie wolniej (badania czytelności od Tinkera, 1963), a listingi się skanuje, nie czyta (NN/g).

Dostępność: co konkretnie zmierzyliśmy

Nie twierdzimy, że sklep jest „w pełni dostępny" — to wymaga pełnego audytu. Ale kilka rzeczy sprawdziliśmy automatycznie na tej samej karcie produktu, przed i po:

SprawdzeniePrzed (szablon)Po (headless)
Konfigurator z klawiaturyNie — kontrolki niefokusowalne (element niestandardowy, rola „textbox", brak tabindex i aria-expanded)Tak — natywne <button> z aria-expanded, fokusowalne
Przyciski bez dostępnej nazwy3 z 140 z 428
Pola formularzy bez etykiety2 z 140
Tekst w bannerachWypalony w grafice (niezgodne z WCAG 1.4.5)Prawdziwy tekst HTML
Obrazy bez tekstu alternatywnego13 z 540

Najważniejsza zmiana: klient korzystający z klawiatury lub czytnika ekranu w starej wersji nie był w stanie skonfigurować i kupić mebla — kontrolki konfiguratora nie przyjmowały fokusu, a po dokonaniu wyboru fokus wędrował przez kolejne opcje strony zamiast do przycisku zakupu. Teraz cała ścieżka działa z klawiatury. Kierunek potwierdza też zewnętrzny pomiar: wynik „Ułatwienia dostępu" w Google PageSpeed Insights wzrósł z 77 do 97.

Gotowość na agentów AI

Coraz większa część ruchu w e-commerce to nie ludzie, tylko agenci AI — asystenci, którzy w imieniu klienta wyszukują, porównują i niedługo będą kupować produkty. Cloudflare udostępnia narzędzie isitagentready.com, które sprawdza, na ile sklep jest na to gotowy: od robots.txt i sitemap, przez treść czytelną dla maszyn (Markdown), po nowe standardy — MCP, Agent Skills i agentic commerce.

PrzedWynik isitagentready.com dla starej wersji sklepu — 21/100, poziom 1: Basic Web Presence
PoWynik isitagentready.com dla wersji headless — 64/100, poziom 4: Agent-Integrated
Wynik skanu Cloudflare: 21/100 („Basic Web Presence") → 64/100 (poziom 4, „Agent-Integrated"). Treść czytelna dla maszyn: 0/1 → 1/1, kontrola dostępu botów: 1/2 → 2/2, discoverability: 2/4 → 3/4, API/MCP/Agent Skills: 0/7 → 3/7.

Headless daje tu pełną kontrolę: własny robots.txt, sitemap, treść serwowana agentom w Markdown i endpointy MCP — w szablonie żaden z tych elementów nie był w naszych rękach. Niski wynik starej wersji to nie zaniedbanie — te standardy są na tyle świeże, że gotowe szablony sklepowe jeszcze ich nie wspierają.

Uczciwie o pozostałych punktach skanera: wdrożyliśmy wszystko, co ma dziś sens dla sklepu internetowego. Reszta rekomendacji to standardy na etapie draftów IETF lub rozwiązania bez zastosowania w polskim e-commerce — DNS-AID (szkic specyfikacji), OAuth/OIDC discovery (dotyczy chronionych API, których sklep nie wystawia publicznie) czy protokoły płatności agentowych x402/MPP/UCP (eksperymentalne płatności HTTP, częściowo kryptowalutowe — płatności w sklepie obsługuje checkout Shopera). Wdrażanie ich dziś byłoby sztucznym pompowaniem wyniku, nie wartością dla klientów.

Co było dobre i zostało bez zmian

Żeby ta lista była wiarygodna, musi działać w obie strony — nie wszystko w starym sklepie było złe:

  • Cała obsługa zamówień zostaje w Shoper — headless podmienia wyłącznie warstwę sklepu, którą widzi klient. Zamówienia, płatności, magazyn i panel administracyjny działają dalej w Shoper (checkout by Shoper) — migracja nie zmienia codziennej pracy obsługi sklepu.
  • Buy-box z kompletem informacji — gwarancja 10 lat, darmowa dostawa z wniesieniem, „Produkcja od 3 dni roboczych", wzorniki płyt, zakup dla instytucji. To było dobre na yrke.pl i zostało przeniesione 1:1.
  • Newsletter z rabatem na start — działał wcześniej, działa teraz. Bez zmian.
  • Silniki wyszukiwania — te same co przed migracją (Witly). Zmieniła się integracja, nie technologia.
  • Pasek postępu konfiguracji — pomysł „0/4 wybrane" ze starego konfiguratora przetrwał w nowym jako licznik „0 z 4".

Podsumowanie

Headless to nie „ładniejszy szablon". To możliwość zaprojektowania sklepu pod konkretny biznes: producent mebli na wymiar dostał konfigurator z dopłatami widocznymi przed wyborem i obsługą klawiatury, warianty wróciły na kartę produktu, wyszukiwarka przestała być nakładką, a całość ładuje się 15× szybciej. I co ważne dla każdego, kto rozważa taką migrację: silnik sklepu zostaje nietknięty — zamówienia, płatności i panel dalej działają w Shoper, wymienia się tylko front. Wszystko powyżej można obejrzeć na żywo na yrke.pl.

Prowadzisz sklep na Shoper, WooCommerce albo PrestaShop? Napisz do nas — pokażemy Ci, jak wyglądałby na headless storefront na Twoim własnym katalogu.

Źródła

  • Google PageSpeed Insights — narzędzie pomiaru (raporty z 11.06.2026)
    pagespeed.web.dev
  • Cloudflare — Is Your Site Agent-Ready? (skan z 11.06.2026)
    isitagentready.com
  • Think with Google / SOASTA — Mobile page speed: new industry benchmarks (2017)
    thinkwithgoogle.com/marketing-strategies/app-and-mobile/mobile-page-speed-new-industry-benchmarks/
  • Deloitte — Milliseconds Make Millions (2020)
    deloitte.com/ie/en/services/consulting/research/milliseconds-make-millions.html
  • web.dev — Core Web Vitals
    web.dev/vitals
  • Baymard Institute — E-commerce UX Research (karty produktu, filtrowanie, opinie)
    baymard.com/research
  • Baymard Institute — Cart Abandonment Rate Statistics
    baymard.com/lists/cart-abandonment-rate
  • Nielsen Norman Group — 10 Usability Heuristics for User Interface Design
    nngroup.com/articles/ten-usability-heuristics/
  • Nielsen Norman Group — Visual Hierarchy in UX
    nngroup.com/articles/visual-hierarchy-ux-definition/
  • Material Design 3 — Buttons: hierarchy and emphasis
    m3.material.io/components/buttons/guidelines
  • WCAG 2.1 — Success Criterion 1.4.5: Images of Text
    w3.org/WAI/WCAG21/Understanding/images-of-text.html
  • Spiegel Research Center (Northwestern) — How Online Reviews Influence Sales (2017)
    spiegel.medill.northwestern.edu/how-online-reviews-influence-sales/

Automatyzacja obsługi sklepu

Gotowy na rewolucję w obsłudze klienta?

Dołącz do firm, które już usprawniły działanie swojego sklepu

Umów konsultację →
FunkcjonalnościCennikShoper AIWooCommerce AIPrestaShop AIRegulaminPolityka prywatności

🇵🇱 Tworzone w Polsce • Polskie rozwiązania AI

© 2026 Witly. Wszystkie prawa zastrzeżone.