Payload vs Wordpress

"WordPress jest darmowy i tani w utrzymaniu." To zdanie słyszysz non-stop. Przez pierwszy rok jest w nim sporo prawdy.

Potem zaczyna się właściwy rachunek.

Headless CMS i Sanity jako naturalna droga odejścia od WordPressa — to temat, który wraca regularnie w rozmowach o nowoczesnych stackach webowych. Sanity to dobry wybór dla większości projektów, szczególnie przy integracji z Next.js. Jest jednak jedna rzecz, której Sanity nie daje: pełna własność danych. Treści i pliki przechowywane są na serwerach Sanity — infrastruktura AWS i Vercel. Dla większości klientów to nie problem. Dla niektórych — jest.

O tym jest ten artykuł.

Ile naprawdę kosztuje WordPress

Temat ten poruszyłem już w poście “WordPress nie jest tani. Jest drogi — tylko w inny sposób”.
SiteGround — jeden z najczęściej polecanych hostingów WordPress. Plan Startup: $2.99/mies. przez pierwszy rok. Cena odnowienia? $17.99/mies. — wzrost o 501%. Plan GrowBig, potrzebny gdy w grę wchodzi środowisko stagingowe i kilka stron naraz, kosztuje przy odnowieniu $29.99/mies., czyli ok. $360/rok.

Kinsta nie stosuje takich promocji — zaczyna od $35/mies. bez rabatów. Ale Kinsta nie zawiera hostingu poczty e-mail. Google Workspace doliczyć osobno.

Realny koszt hostingu dla strony firmowej od drugiego roku: $15–35/mies. Nie $3.

Wtyczki: koszt, który nie pojawia się w wycenie

WordPress core jest darmowy. Każda nietrywalna funkcja — już nie.

WtyczkaKoszt roczny (1 strona)
Advanced Custom Fields PRO$49/rok
Yoast SEO Premium~$129/rok
WP Rocket (cache)$59/rok
Wordfence Premium (security)$149/rok
Polylang Pro (PL + EN)~$99/rok
Suma$485/rok

Każda z tych pozycji ma konkretne uzasadnienie. WP Rocket istnieje dlatego, że WordPress bez cache jest wolny architektonicznie — każde zapytanie przechodzi przez PHP do bazy danych. To nie kwestia słabego serwera, lecz wbudowany koszt tej platformy. WP Rocket jest obejściem problemu, który WordPress ma z założenia.

Wordfence Premium — darmowa wersja aktualizuje sygnatury zagrożeń z 30-dniowym opóźnieniem względem płatnej. Przez miesiąc od wykrycia exploita w popularnej wtyczce witryna pozostaje bez aktualnej ochrony. Przy stronie firmowej przetwarzającej dane klientów to nieakceptowalne.

Realny koszt utrzymania strony firmowej od drugiego roku:

PozycjaRoczny koszt
Hosting — SiteGround GrowBig (cena odnowienia)~$360
Wtyczki podstawowe~$485
Łącznie~$845/rok (ok. 3 400 zł)

To bez kosztu developera poświęcającego 1–2 godziny miesięcznie na aktualizacje i gaszenie pożarów po konfliktach między wtyczkami. Przy stawce 150 zł/h doliczyć 1 800–3 600 zł rocznie.

Przy WooCommerce do zestawu dochodzą oficjalne rozszerzenia Automattic: subskrypcje $279/rok, porzucone koszyki $79, opcje produktów $79. Przy trzech, czterech rozszerzeniach przekraczasz $500–600/rok zanim policzysz hosting.

Sanity — świetny, ale nie dla każdego projektu

Sanity to solidne narzędzie dla projektów Next.js — edytor, język zapytań GROQ, płynna integracja z Server Components. Dla projektów z zespołem redakcyjnym zarządzającym treścią samodzielnie Sanity sprawdza się bez konkurencji.

Jest jednak scenariusz, w którym odpada już na początku.

Klient korporacyjny stawia warunek: dane muszą zostać na własnej infrastrukturze albo przynajmniej w UE, pod pełną kontrolą organizacji. Sektor medyczny, prawny, finansowy — gdzie kontrakt z klientem explicite określa lokalizację przechowywania danych. Sanity trzyma treści na serwerach w USA. Rozmowa skończona.

Stąd pytanie: czy istnieje coś, co daje headless CMS z TypeScriptem, równie płynnie zintegrowany z Next.js — ale z danymi na własnym serwerze?
Payload CMS to odpowiedź.

SanityPayload CMS
Gdzie przechowywane są daneSanity CloudWłasny serwer
Pricing przy skaliRośnie (per seat, per dokument)Stały (tylko koszt infrastruktury)
Edytor dla klientaBardzo dobryDobry, wymaga konfiguracji
Integracja z Next.jsOsobne wywołania APIBezpośrednio w Server Components
SetupSzybki startWięcej konfiguracji
Dla kogoZespoły content-firstDev szukający pełnej kontroli

Payload CMS — jak to działa w Next.js

Payload v3 nie jest osobną aplikacją wymagającą osobnego wdrożenia. Funkcjonuje bezpośrednio w projekcie Next.js — jedno repozytorium, jeden deploy, jeden serwer:

/app

/(frontend) ← strona właściwa

/(payload) ← panel admina, generowany z konfiguracji

/collections ← definicje struktury danych w TypeScript

/payload.config.ts

Panel administracyjny generuje się automatycznie z konfiguracji TypeScript. Nowe pole w kolekcji pojawia się natychmiast w edytorze i jest otypowane po stronie frontendu. Dane pobierane są w Server Components bez żadnego wywołania HTTP:

typescript
const payload = await getPayload({ config })

const posts = await payload.find({ collection: 'posts' })

W Sanity każde zapytanie o dane to wywołanie przez sieć. W Payload to lokalna funkcja — zero opóźnień, zero konfiguracji CORS, zero osobnego projektu do utrzymania. Uwierzytelnianie, role i uprawnienia, wersjonowanie treści oraz edytor tekstu sformatowanego (Lexical) dostępne są bez dodatkowych wtyczek.

Infrastruktura — lista decyzji

WordPress nie wymagał żadnych decyzji infrastrukturalnych. cPanel, jeden klik, WordPress gotowy. Payload wymaga czterech świadomych wyborów przed pierwszą linią kodu.

Baza danych — Payload obsługuje PostgreSQL i MongoDB. Dla nowych projektów sprawdza się PostgreSQL przez Neon (serverless Postgres, bezpłatny tier wystarczy na start, płatne plany od $5/mies.) albo Supabase (od $25/mies. ze stałym compute, bez cold startów).

Storage na pliki — Payload nie przechowuje plików lokalnie na produkcji. Cloudflare R2: 10 GB za darmo, zero opłat za egress — w odróżnieniu od AWS S3, który nalicza opłaty za każde pobranie pliku. Payload ma oficjalny adapter R2. Dla większości stron firmowych koszt sprowadza się do $0.

Poczta e-mail — Payload potrzebuje SMTP do resetowania haseł i powiadomień. Resend: 3 000 wiadomości miesięcznie za darmo, szablony jako komponenty React. Plan Pro od $20/mies.

Hosting — trzy podejścia: Vercel Pro ($20/mies.) przy oczekiwaniu zerowej konfiguracji. Railway ($20/mies. za workspace, nie per użytkownik) przy pracy zespołowej — taniej niż Vercel dla dwóch, trzech osób. Hetzner CX22 + Coolify (€4.49/mies.) przy pełnej autonomii i samodzielnym zarządzaniu.

Roczny koszt infrastruktury przy bezpłatnych tierach:

SkładnikRoczny koszt
Vercel Pro$240
Neon / Cloudflare R2 / Resend (bezpłatne tiery)$0
Łącznie~$240/rok

WordPress od drugiego roku: ~$845/rok. Różnica to ok. $600 rocznie. Pierwsza implementacja jest jednorazowo droższa w czasie pracy developera — próg opłacalności wypada zazwyczaj po 12–18 miesiącach.

Kiedy ta decyzja ma sens — trzy scenariusze

Scenariusz 1 — strona firmowa z narastającym długiem technicznym

Kilkadziesiąt wtyczek, brak stagingu, dwa języki obsługiwane przez Polylang, Core Web Vitals na czerwono, hosting współdzielony który "zawsze działał". Klient pyta o odświeżenie projektu i lepszy interfejs do zarządzania treścią.

W tym wariancie są trzy drogi: porządny remont WordPressa i pozostanie na platformie, migracja na Sanity albo wdrożenie Payload. Zastrzeżenie istotne: gdy po stronie klienta nie ma nikogo technicznego na co dzień — Payload nie pasuje. To Sanity albo dopracowany WordPress.

Scenariusz 2 — sklep WooCommerce z niestandardową logiką

Konfigurator produktów, ceny B2B per klient, integracja z ERP, subskrypcje. WooCommerce obsługuje to przez pięć, sześć płatnych rozszerzeń, każde z własnym cyklem aktualizacji i ryzykiem konfliktu przy każdym upgrade. Koszt rozszerzeń przekracza $600/rok, a modyfikacja procesu zakupowego bez rozwiązań obejściowych jest praktycznie niemożliwa.

To jest przypadek, gdzie Medusa.js + Next.js albo Payload jako backend dedykowanej aplikacji ma realne uzasadnienie — nie tylko techniczne, ale ekonomiczne.

Scenariusz 3 — wymogi dotyczące lokalizacji danych

Sektor medyczny lub prawny, kontrakt z klauzulą o miejscu przechowywania danych. Sanity odpada — serwery w USA. WordPress odpada — bezpieczeństwo przy kilkudziesięciu wtyczkach to gra w ruletkę. Payload na VPS w Niemczech (Hetzner) z bazą Postgres i regularnym kopią zapasową to jedyna opcja spełniająca wymogi przy rozsądnym koszcie.

Kiedy Payload CMS to zły wybór

Mały blog firmowy lub landing page z kilkunastoma podstronami. Konfiguracja bazy danych, storage i hostingu dla prostej wizytówki to przerost formy nad treścią. WordPress albo Next.js z Sanity na bezpłatnym tierze rozwiążą to szybciej i taniej.

Klient zarządza stroną samodzielnie, bez zaplecza technicznego. WordPress ma dwie dekady tutoriali, rozległą społeczność i dziesiątki polskich agencji, do których klient może się w każdej chwili zwrócić. Payload wymaga technicznego wsparcia przy zmianach struktury — bez tego klient traci autonomię, którą WordPress mu dawał.

Budżet poniżej 8–10 tys. zł. Zaprojektowanie kolekcji w TypeScript, konfiguracja infrastruktury, budowa frontendu od podstaw — to kilkanaście roboczogodzin zanim powstanie pierwsza strona. Przy niskim budżecie czas konfiguracji zjada marżę i sens projektu.

Brak planów na długoterminowe utrzymanie techniczne. Ktoś musi aktualizować zależności, reagować gdy baza danych ma problem, przeglądać logi gdy coś przestaje działać. Bez takiego zasobu — własnego lub w ramach planowanego wsparcia agencji — WordPress z zarządzanym hostingiem jest bezpieczniejszą decyzją dla obu stron.

Napięty harmonogram bez buforu. Przy WordPress działający prototyp jest gotowy w kilka godzin. Przy Payload pierwsze sensowne środowisko deweloperskie to dzień lub dwa. Przy harmonogramie bez rezerwy ma to znaczenie.

Payload nie jest domyślną odpowiedzią na pytanie "co zamiast WordPressa". To rozwiązanie dla konkretnej grupy projektów.
Zasady wyceny projektu opisałem w “Ile kosztuje nowoczesna strona internetowa w 2026 roku?”

Migracja: czego się spodziewać

Temat na osobny artykuł — ale kilka kwestii wartych przemyślenia przed podjęciem decyzji.

Audyt treści — co migrować (wpisy, strony, własne typy treści, pliki multimedialne, formularze), co zostawić. W typowym WordPressie 30–40% wpisów to treści bez ruchu od lat. Przenoszenie wszystkiego to strata czasu bez żadnych korzyści.

Projektowanie kolekcji w TypeScript — mapowanie struktury WordPressa na kolekcje Payload. Własne typy treści gromadzą często pola z kilku różnych wtyczek — migracja jest przy okazji okazją do zaprojektowania struktury od podstaw, bez nagromadzonego bałaganu.

Skrypt migracyjny — eksport z WordPressa przez XML lub MySQL, import przez Payload Local API. Najtrudniejszy element to pliki. Zasoby z katalogu /wp-content/uploads/ trzeba przenieść do R2 lub S3 i zaktualizować wszystkie odwołania w treści — to zazwyczaj 30–50% całego czasu migracji.

Przekierowania 301 — WordPress generuje adresy URL w formacie /2024/03/tytul-posta/, Next.js będzie miał inną strukturę. Każdy nieprzekierowany stary adres to utracona pozycja w wynikach wyszukiwania. Tablica przekierowań w next.config.js to obowiązkowy element projektu, nie opcja.

Zmiana DNS — TTL na 300 sekund dzień wcześniej, przełączenie, stary WordPress offline dopiero po tygodniu. Na wszelki wypadek.

Podsumowanie

Payload CMS to nie jest lepszy WordPress. To inna filozofia — więcej odpowiedzialności po stronie developera, ale pełna kontrola nad danymi, infrastrukturą i kosztami. Od drugiego roku różnica w kosztach względem WordPressa to ok. $600 rocznie. Pierwsza implementacja jest jednorazowo droższa w czasie.

Dla sporej części projektów Payload po prostu nie pasuje — i warto to powiedzieć wprost, zanim zacznie się projektować kolekcje.

FAQ

Najczęściej zadawane pytania

Od drugiego roku typowa strona firmowa na WordPressie kosztuje ok. $845/rok — ok. $360 za hosting (odnowienie SiteGround GrowBig) i $485 za niezbędne wtyczki: ACF PRO, Yoast SEO Premium, WP Rocket, Wordfence Premium i Polylang Pro. To bez kosztu developera poświęcającego 1–2 godziny miesięcznie na aktualizacje i gaszenie pożarów po konfliktach wtyczek, co przy stawce 150 zł/h dolicza kolejne 1 800–3 600 zł rocznie.

Sanity to doskonały wybór dla większości projektów Next.js, szczególnie dla zespołów content-first. Jednak treści i pliki przechowywane są na serwerach w USA (infrastruktura AWS i Vercel). Dla klientów z sektora medycznego, prawnego lub finansowego z wymogami dotyczącymi lokalizacji danych — lub dla każdego, kto potrzebuje pełnej własności danych na własnej infrastrukturze — Sanity nie wchodzi w grę.

Payload CMS to natywny TypeScriptowy headless CMS działający bezpośrednio w projekcie Next.js — jedno repozytorium, jeden deploy, jeden serwer. W odróżnieniu od Sanity dane przechowywane są na własnym serwerze. Zapytania to lokalne wywołania funkcji — zero opóźnień, zero konfiguracji CORS. Uwierzytelnianie, role, wersjonowanie treści i edytor tekstu sformatowanego (Lexical) dostępne są bez dodatkowych wtyczek. Kompromisem jest więcej konfiguracji na starcie i konieczność długoterminowego utrzymania technicznego.

Typowy stack Payload + Next.js na Vercel Pro kosztuje ok. $240/rok (Vercel Pro $20/mies., Neon, Cloudflare R2 i Resend na bezpłatnych tierach). W porównaniu do WordPressa (~$845/rok od drugiego roku) oszczędność wynosi ok. $600 rocznie. Pierwsza implementacja jest jednorazowo droższa w czasie pracy developera — próg opłacalności wypada zazwyczaj po 12–18 miesiącach.

Trzy scenariusze uzasadniają tę decyzję: (1) Strona firmowa z narastającym długiem technicznym — kilkadziesiąt wtyczek, brak stagingu, Core Web Vitals na czerwono. (2) Sklep WooCommerce z niestandardową logiką, gdzie koszt rozszerzeń przekracza $600/rok, a modyfikacja procesu zakupowego jest praktycznie niemożliwa. (3) Projekty z wymogami dotyczącymi lokalizacji danych (sektor medyczny, prawny, finansowy), gdzie dane muszą pozostać na infrastrukturze w UE lub pod własną kontrolą.

Payload nie pasuje do: małych wizytówek i landing page'y, gdzie konfiguracja infrastruktury to przerost formy nad treścią; klientów zarządzających stroną samodzielnie bez zaplecza technicznego; projektów z budżetem poniżej 8–10 tys. zł, gdzie czas konfiguracji zjada marżę; sytuacji bez planu na długoterminowe utrzymanie techniczne; napiętych harmonogramów bez buforu — pierwsze środowisko deweloperskie Payload to dzień lub dwa, a nie kilka godzin jak przy WordPress.

Przed pierwszą linią kodu trzeba podjąć cztery decyzje: (1) Baza danych — PostgreSQL przez Neon (bezpłatny tier, płatne od $5/mies.) lub Supabase (od $25/mies.). (2) Storage na pliki — Cloudflare R2 (10 GB za darmo, zero opłat za egress). (3) Poczta e-mail — Resend (3 000 wiadomości/mies. za darmo, Pro od $20/mies.). (4) Hosting — Vercel Pro ($20/mies.), Railway ($20/mies. za workspace) lub Hetzner CX22 + Coolify (€4.49/mies.) przy pełnej autonomii.

Migracja obejmuje cztery główne etapy: audyt treści (zazwyczaj 30–40% wpisów w WordPressie nie ma ruchu od lat i można je pominąć); zaprojektowanie kolekcji Payload w TypeScript; uruchomienie skryptu migracyjnego przez eksport XML/MySQL i Payload Local API (sama migracja plików to 30–50% całego czasu); oraz skonfigurowanie przekierowań 301 w next.config.js, aby zachować pozycje w wynikach wyszukiwania ze starych adresów URL WordPressa.