Poradnik

Jak uzyskać Shopify Access Token w 2026 — gdy Develop Apps już nie działa

Od 1 stycznia 2026 Shopify zablokował tworzenie Access Tokenów bezpośrednio w panelu sklepu. Pokazujemy nowy proces krok po kroku — z webhook.site jako adresem callback, bez stawiania własnego serwera.

Co się zmieniło 1 stycznia 2026

Przez lata standardową ścieżką uzyskania Admin API access tokenu dla integracji z Shopify była opcja Develop apps, dostępna w panelu administratora sklepu pod ścieżką Settings → Apps and sales channels → Develop apps. Wystarczyło utworzyć aplikację, zaznaczyć wymagane scopes, kliknąć Install app i skopiować gotowy token. Cały proces zajmował dwie minuty i nie wymagał konta deweloperskiego ani zewnętrznego adresu callback.

Zmiana od 1 stycznia 2026: Shopify zablokował generowanie nowych Admin API access tokenów przez Develop apps. Sekcja jest nadal widoczna w panelu, ale tworzenie nowych tokenów dla nowo zainstalowanych aplikacji nie jest już dostępne. Istniejące tokeny działają, jednak rotacja oraz każde nowe wdrożenie wymaga już nowej ścieżki opartej o OAuth.

W praktyce oznacza to, że każda integracja z systemem zewnętrznym — ERP, PIM, własny skrypt, hurtownia danych — wymaga utworzenia pełnoprawnej aplikacji w dev.shopify.com i przejścia przez standardowy flow autoryzacyjny OAuth 2.0.

Zastrzeżenie: proces opisany w tym przewodniku z wykorzystaniem webhook.site to workaround przeznaczony do jednorazowego uzyskania tokenu — nie jest to docelowe, produkcyjne rozwiązanie. Poprawna implementacja zakłada własną aplikację na publicznym serwerze, która samodzielnie obsługuje OAuth, odbiera kod autoryzacyjny, wymienia go na token i w razie potrzeby odświeża uprawnienia. Szerzej omawiamy to w sekcji końcowej.

Dlaczego Shopify wprowadził tę zmianę

Shopify nie podał szczegółowego uzasadnienia, ale z naszej perspektywy decyzja jest spójna z kierunkiem, który platforma utrzymuje od kilku lat — ujednolicenie modelu autoryzacji wokół OAuth i eliminacja długo żyjących statycznych tokenów tworzonych ad hoc przez właścicieli sklepów.

Naszym zdaniem zmiana ma trzy główne powody:

  • Audytowalność — aplikacja w dev.shopify.com ma identyfikator, właściciela i historię instalacji. Token z Develop apps był przypisany do sklepu, a często powstawał poza wiedzą zespołu IT.
  • Kontrola scope'ów — w modelu OAuth każda zmiana zakresu uprawnień wymaga ponownej zgody właściciela sklepu. Token z Develop apps można było rozszerzać po cichu.
  • Spójność z ekosystemem partnerskim — wszystkie publiczne aplikacje już działały na OAuth. Utrzymywanie drugiej, uproszczonej ścieżki dla aplikacji prywatnych komplikowało dokumentację i zwiększało powierzchnię ataku.

Czego potrzebujesz zanim zaczniesz

Zanim przejdziemy do procesu, upewnij się, że masz wszystkie wymagane elementy:

  • Konto deweloperskie Shopify — darmowe, do założenia na https://dev.shopify.com
  • Sklep Shopify, na którym aplikacja zostanie zainstalowana — produkcyjny lub development store
  • Klient HTTP do wysłania jednego requesta — curl, Postman lub Insomnia
  • Adres URL callbacku — w tym przewodniku użyjemy bezpłatnego serwisu webhook.site, dzięki czemu nie trzeba stawiać własnego serwera
Dlaczego webhook.site: Shopify po autoryzacji aplikacji przekierowuje przeglądarkę na zarejestrowany adres callback z parametrem code w query stringu. Nie wymaga, aby ten adres zwracał konkretną odpowiedź — wystarczy, żeby odebrał request GET. Webhook.site generuje unikalny URL, który pokazuje wszystkie przychodzące zapytania w czasie rzeczywistym, dzięki czemu można odczytać kod autoryzacyjny bez pisania choćby jednej linii kodu serwera.

Krok 1: Utworzenie aplikacji w dev.shopify.com

Aplikacja w dev.shopify.com jest właścicielem klucza klienta (Client ID) i sekretu (Client secret) — dwóch wartości, których będziemy potrzebować w dalszej części procesu.

1

Zaloguj się na dev.shopify.com

Jeżeli nie masz konta, załóż je — rejestracja jest darmowa i zajmuje kilka minut. Konto deweloperskie jest oddzielone od konta sklepu.

2

Przejdź do sekcji Apps

W menu bocznym wybierz Apps, a następnie kliknij przycisk Create app w prawym górnym rogu.

3

Nadaj aplikacji nazwę

Nazwa jest dowolna i widoczna tylko dla administratora sklepu w trakcie instalacji — np. Internal ERP Sync lub Custom Integration.

4

Skopiuj Client ID i Client secret

Po utworzeniu aplikacji Shopify wyświetla zakładkę Overview z sekcją Client credentials. Skopiuj obie wartości — będą potrzebne w kroku szóstym.

Krok 2: Konfiguracja webhook.site jako adresu callback

Adres callback to URL, na który Shopify przekieruje przeglądarkę po wyrażeniu zgody na instalację aplikacji. Zamiast stawiać tymczasowy serwer, użyjemy bezpłatnego serwisu, który generuje publiczny URL i pokazuje wszystkie przychodzące requesty.

Krok 2.1

Otwórz webhook.site w przeglądarce

Na stronie https://webhook.site automatycznie zostanie wygenerowany unikalny URL w formacie https://webhook.site/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Krok 2.2

Skopiuj Your unique URL

Wartość pola Your unique URL to adres, którego użyjemy jako Allowed redirection URL w aplikacji Shopify. Skopiuj go do schowka.

Krok 2.3

Pozostaw zakładkę otwartą

W panelu po lewej stronie webhook.site pokazuje listę przychodzących requestów w czasie rzeczywistym. To właśnie tu odczytamy kod autoryzacyjny po instalacji aplikacji w kroku piątym.

Z naszego doświadczenia: webhook.site sprawdza się idealnie do jednorazowego procesu uzyskania długo żyjącego tokenu. Po zakończeniu procesu URL można odrzucić — token nie jest powiązany z adresem callback w żaden sposób, działa niezależnie od tego, czy webhook.site jest dostępny.

Krok 3: Konfiguracja API scopes i URL-i aplikacji

Wracamy do panelu dev.shopify.com, do utworzonej w kroku pierwszym aplikacji. Należy uzupełnić dwie sekcje konfiguracji.

Configuration → URLs

W zakładce Configuration znajdź sekcję URLs i wypełnij pola:

  • App URL — adres URL z webhook.site (Shopify wymaga, żeby pole było wypełnione, ale dla integracji wewnętrznej nie ma znaczenia funkcjonalnego)
  • Allowed redirection URL(s) — ten sam adres URL z webhook.site. To pole jest kluczowe — Shopify odmówi przekierowania na adres, którego nie ma na białej liście

Configuration → API access scopes

W tej samej zakładce znajdź sekcję API access scopes i zaznacz uprawnienia, których będzie wymagała Twoja integracja. Po zaznaczeniu zatwierdź zmiany przyciskiem Save. Pełna lista scopes dostępna jest w dokumentacji Shopify pod hasłem Admin API access scopes.

Zasada minimalnych uprawnień: zaznacz wyłącznie te scopes, które realnie są potrzebne. Każdy dodatkowy zakres zwiększa potencjalne skutki wycieku tokenu. Jeśli integracja czyta wyłącznie produkty — nie zaznaczaj write_orders.

Krok 4: Custom distribution w partners.shopify.com

Domyślnie aplikacja utworzona w dev.shopify.com nie da się zainstalować na żadnym sklepie produkcyjnym — instalacja działa wyłącznie w development stores należących do Twojego konta deweloperskiego. Dla integracji wewnętrznej, która ma działać na konkretnym sklepie klienta, trzeba dodatkowo skonfigurować kanał dystrybucji.

Konfiguracja dystrybucji odbywa się w partners.shopify.com — oddzielnym panelu dla partnerów Shopify, do którego logujemy się tym samym kontem co do dev.shopify.com.

1

Zaloguj się na partners.shopify.com

W menu bocznym wybierz Apps i kliknij utworzoną wcześniej aplikację. W jej widoku przejdź do zakładki Distribution.

2

Wybierz Custom distribution

Spośród dostępnych opcji (Public distribution, Custom distribution) wybierz Custom distribution. Tryb publiczny wymaga przejścia przez proces weryfikacji aplikacji w Shopify App Store — dla integracji wewnętrznej jest niepotrzebny.

3

Podaj domenę sklepu

Wpisz pełny adres sklepu produkcyjnego w formacie {nazwa-sklepu}.myshopify.com. Jest to jedyny sklep produkcyjny, na którym aplikacja będzie mogła zostać zainstalowana.

4

Wygeneruj link instalacyjny

Shopify wygeneruje dedykowany link instalacyjny powiązany z wybranym sklepem. Można go skopiować i wkleić do przeglądarki w kroku piątym — alternatywnie zadziała też ręcznie zbudowany URL autoryzacyjny opisany w kroku piątym.

Co to oznacza dla integracji wewnętrznej: jeśli nie chcesz publikować aplikacji w Shopify App Store, masz dwie ścieżki instalacji. Po pierwsze — jeden, ręcznie wskazany sklep produkcyjny (skonfigurowany przez custom distribution). Po drugie — dowolna liczba development stores należących do Twojego konta deweloperskiego, gdzie aplikacja działa bez dodatkowej konfiguracji dystrybucji. Każdy kolejny sklep produkcyjny wymaga zmiany domeny w custom distribution albo utworzenia osobnej aplikacji.

Krok 5: Instalacja aplikacji i przechwycenie kodu

W standardowej publicznej aplikacji Shopify w tym miejscu pojawiałby się formularz instalacji oferowany przez App Store. Dla aplikacji prywatnej zbudujemy URL instalacji ręcznie i wkleimy go do przeglądarki zalogowanej jako właściciel sklepu.

Format URL-a autoryzacji:

https://{nazwa-sklepu}.myshopify.com/admin/oauth/authorize
  ?client_id={CLIENT_ID}
  &scope=read_products,write_products,read_orders
  &redirect_uri={URL_Z_WEBHOOK_SITE}
  &state={DOWOLNY_RANDOM_STRING}

Podstaw wartości:

  • {nazwa-sklepu} — pełna nazwa sklepu z poddomeną .myshopify.com (nie własna domena marki)
  • {CLIENT_ID} — wartość z sekcji Client credentials z kroku pierwszego
  • scope — lista scopes rozdzielonych przecinkiem, bez spacji
  • redirect_uri — URL z webhook.site, identyczny z tym wpisanym w Allowed redirection URL
  • state — dowolny ciąg znaków, służy do ochrony przed CSRF; w procesie ręcznym wystarczy losowa wartość
Krok 5.1

Wklej URL do przeglądarki

Upewnij się, że jesteś zalogowany jako właściciel sklepu lub użytkownik z uprawnieniami do instalacji aplikacji. Shopify wyświetli ekran zgody z listą żądanych scopes.

Krok 5.2

Kliknij Install app

Po zatwierdzeniu zgody Shopify wykona przekierowanie na adres callback z parametrami code, hmac, shop, statetimestamp. Webhook.site zarejestruje request natychmiast.

Krok 5.3

Skopiuj wartość parametru code

W panelu webhook.site otwórz najnowszy request. W sekcji Query strings znajdziesz parametr code — to jednorazowy kod autoryzacyjny, który w następnym kroku wymienimy na Access Token.

Krok 6: Wymiana kodu na Access Token

Kod autoryzacyjny ma krótki czas ważności i można go wymienić tylko raz. Wymiana odbywa się przez request POST na endpoint /admin/oauth/access_token Twojego sklepu, z trzema parametrami: client_id, client_secretcode.

Komenda curl:

curl -X POST https://{nazwa-sklepu}.myshopify.com/admin/oauth/access_token \
  -d "client_id={CLIENT_ID}" \
  -d "client_secret={CLIENT_SECRET}" \
  -d "code={CODE_Z_WEBHOOK_SITE}"

Odpowiedź serwera:

{
  "access_token": "shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "scope": "read_products,write_products,read_orders"
}
Token gotowy. Wartość pola access_token z prefiksem shpat_ to długo żyjący Admin API access token. Można go używać w nagłówku X-Shopify-Access-Token przy wywołaniach REST API i GraphQL Admin API.

Przykład pierwszego wywołania — pobranie listy produktów:

curl https://{nazwa-sklepu}.myshopify.com/admin/api/2025-10/products.json \
  -H "X-Shopify-Access-Token: shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Dlaczego to tylko workaround, a nie docelowe rozwiązanie

Proces opisany powyżej pozwala uzyskać działający Access Token bez stawiania własnej infrastruktury, ale ma sens wyłącznie w dwóch scenariuszach: jednorazowego skryptu migracyjnego albo szybkiego prototypu integracji. Nie jest to rozwiązanie, na którym można oprzeć produkcyjną integrację z Shopify.

Ograniczenia workaroundu: webhook.site jest serwisem publicznym — każdy z linkiem do Twojego URL-u widzi kod autoryzacyjny, parametr shop oraz hmac. Cały proces jest też ręczny: wklejanie URL-a, kopiowanie kodu, wywołanie curl. Dla pojedynczego sklepu jest akceptowalny, dla integracji obsługującej wiele sklepów lub zmieniających się wymagań — nie skaluje się.

Jak wygląda poprawne, docelowe rozwiązanie

Naszym zdaniem produkcyjna integracja z Shopify wymaga aplikacji uruchomionej na publicznym serwerze HTTPS, która samodzielnie obsługuje cały flow OAuth. Klucze elementy takiej architektury:

  • Endpoint instalacji — własny URL pod kontrolą zespołu, do którego Shopify przekierowuje przeglądarkę po wyrażeniu zgody. Aplikacja odczytuje parametry code, shop, hmac, state i weryfikuje ich autentyczność.
  • Weryfikacja HMAC — każdy request z Shopify zawiera podpis HMAC-SHA256 wyliczony z client secret. Aplikacja musi zweryfikować ten podpis, zanim zaufa zawartości requesta — w workaroundzie ten krok jest pomijany.
  • Automatyczna wymiana kodu na token — aplikacja po stronie serwera wykonuje request POST na /admin/oauth/access_token bez udziału użytkownika. Token nigdy nie pojawia się w przeglądarce ani w logach pośrednika.
  • Trwałe przechowywanie tokenu — token zapisywany jest w bazie danych aplikacji, powiązany z identyfikatorem sklepu, zaszyfrowany lub umieszczony w secret managerze.
  • Obsługa zmian scope'ów — gdy integracja wymaga nowych uprawnień, aplikacja sama inicjuje ponowną autoryzację i odświeża token, bez ingerencji administratora sklepu w ustawienia aplikacji.
  • Webhook na app/uninstalled — aplikacja nasłuchuje, kiedy właściciel sklepu odinstalowuje integrację, i czyści lokalnie zapisany token, zamiast trzymać martwy klucz w bazie.

Z naszego doświadczenia minimalna stack-owa implementacja takiej aplikacji to publiczny serwer (np. VPS lub PaaS), certyfikat HTTPS, jeden endpoint /auth/callback, weryfikacja HMAC oraz baza danych do przechowywania tokenów per sklep. Shopify dostarcza gotowe biblioteki OAuth dla Node, Ruby, PHP i Pythona, które obsługują ten flow w kilkunastu liniach kodu — problem jest infrastrukturalny, nie programistyczny.

Kiedy wybrać workaround, a kiedy budować aplikację: jeśli potrzebujesz tokenu raz, dla jednego sklepu, do skryptu, który uruchomisz kilka razy — webhook.site jest pragmatycznym wyborem. Jeśli integracja ma żyć dłużej niż kwartał, obsługiwać wiele sklepów albo być częścią produktu — postaw aplikację na własnym serwerze. Workaround zaoszczędzi godzinę dziś, własna aplikacja zaoszczędzi tydzień przy każdej kolejnej zmianie scope'ów.

Podsumowanie

Blokada Develop apps wydłużyła proces uzyskania Access Tokenu z dwóch minut do około piętnastu, ale w zamian ujednoliciła model autoryzacji i wymusiła kontrolę nad tym, kto i w jakim zakresie integruje się ze sklepem. Kluczowe wnioski z tego przewodnika:

  • Każda integracja wymaga aplikacji w dev.shopify.com — nawet jednorazowy skrypt
  • webhook.site eliminuje konieczność stawiania własnego serwera tylko po to, żeby odebrać kod autoryzacyjny
  • redirect_uri w URL-u autoryzacji musi być identyczny z wpisanym w Allowed redirection URL
  • Kod autoryzacyjny można wymienić tylko raz i wygasa po kilku minutach
  • Token shpat_ to długo żyjący klucz — przechowuj go jak hasło produkcyjne
Specjalizujemy się w integracjach Shopify — od jednorazowych skryptów po pełne integracje z ERP, PIM i hurtowniami danych. Sprawdź naszą ofertę sklepów internetowych →

Potrzebujesz integracji ze sklepem Shopify?

Wdrażamy integracje Shopify z systemami ERP, PIM i custom skryptami. Umów darmową konsultację — przeanalizujemy zakres i zaproponujemy architekturę.

Umów darmową konsultację