Jak dodać własne pole w zamówieniu

dowiedz się

Dodanie własnego pola w zamówieniu to prosty sposób, by zebrać brakujące informacje od klienta, poprawić dopasowanie oferty lub uprościć logistyki. Niezależnie od platformy, kluczowe jest poprawne osadzenie pola w procesie, spójna nazwa i jasne zasady walidacji. Poniżej znajdziesz szczegółową instrukcję od planowania po wdrożenie w popularnych systemach i utrzymanie w produkcji. Dzięki temu zyskasz kompletne dane bez obciążania klienta zbędnymi pytaniami i komplikowaniem ścieżki zakupu.

Planowanie i projekt pola

Cel i wartość biznesowa

Zacznij od określenia, po co pole powstaje. Czy ma pomóc w personalizacji, weryfikacji wieku, doprecyzowaniu wymiarów, czy w wyborze punktu odbioru? Zdefiniuj scenariusze użycia i KPI (np. spadek liczby reklamacji, skrócenie czasu kompletacji, wzrost AOV). Unikaj pytań ciekawskich – każde pytanie musi mieć realną wartość operacyjną lub marketingową.

Lokalizacja w procesie

Wybierz miejsce, w którym klient naturalnie rozumie kontekst pytania: koszyk, Checkout, strona produktu (jeśli dotyczy konkretnego wariantu), krok dostawy lub płatności. Reguła: im bliżej decyzji, tym większa szansa na prawidłową odpowiedź. Dla informacji ogólnych (np. “NIP do faktury”) sprawdzi się sekcja danych klienta, dla personalizacji produktu – moduł przy pozycji koszyka.

Typ pola i walidacja wstępna

Dobierz właściwy typ: text, textarea, number, select, date, checkbox, radio, file. Ogranicz długość, zdefiniuj maskę (np. dla numeru telefonu), ustaw placeholder i etykietę. Zastosuj reguły obowiązkowości zależne od wcześniejszych wyborów (logika warunkowa). Unikaj wielkich pól tekstowych, gdy da się użyć listy wyboru – szybciej i mniej błędów.

Nazewnictwo i tłumaczenia

Nazwa pola na froncie powinna być krótka i zrozumiała. Etykieta w panelu administracyjnym – precyzyjna, z prefiksem (np. Zamówienie – Dodatkowe instrukcje). Zaplanuj klucze językowe, aby uniknąć twardych stringów w kodzie. Pamiętaj o wdrożeniu tłumaczeń w e-mailach transakcyjnych i PDF z zamówieniem.

Widoczność i logika warunkowa

Jeśli pole dotyczy konkretnej metody dostawy lub płatności, pokaż je tylko w odpowiednim kroku. Zaszyj prostą logikę: “pokaż, gdy wybrano Paczkomat”, “ukryj, gdy zamówienie cyfrowe”. Dzięki temu klient nie widzi nieistotnych pytań, a współczynnik konwersji pozostaje stabilny.

Dane, analityka i raportowanie

Zapewnij, aby pole trafiało do raportów i API. Zaplanuj schemat przechowywania: atrybut koszyka, pole w pozycjach, metadane zamówienia lub atrybut rozszerzeń (w systemach enterprise). Zdefiniuj sposób wyszukiwania po tym polu w panelu (filtry), eksport do CSV oraz przesył do systemów ERP/CRM.

WooCommerce: dodanie pola krok po kroku

Najprostsza droga: edytor pól (bez kodu)

W sklepach na WordPressie z wtyczką WooCommerce najszybsze jest użycie dedykowanej wtyczki do edycji pól kasy (np. edytory pól checkout). Wtyczka pozwala:

  • utworzyć nowe pole w sekcjach: Rozliczeniowe, Dostawa, Dodatkowe informacje,
  • ustawić typ, walidację, obowiązkowość i kolejność,
  • zdefiniować widoczność zależną od metody dostawy/płatności,
  • pokazywać pole w e-mailach i w panelu zamówienia.

Uwaga: Sprawdź kompatybilność z motywem i wtyczkami płatności. Wtyczki checkout potrafią modyfikować strukturę formularzy.

Elastycznie i bez wtyczek: użyte hooki

Jeśli wolisz pełną kontrolę:

  • Dodaj własne pole do tablicy pól kasy filtrem woocommerce_checkout_fields (np. w functions.php motywu potomnego lub w małej wtyczce-muście).
  • Wyrenderuj pole w wybranym miejscu kasy akcjami typu woocommerce_after_order_notes lub woocommerce_before_order_notes (gdy potrzebujesz specyficznego umiejscowienia).
  • Zaimplementuj weryfikację w hooku woocommerce_checkout_process – zwróć błąd, gdy pole wymagane jest puste lub ma niewłaściwy format.
  • Zapisz wartość do meta zamówienia w woocommerce_checkout_create_order (preferowane) albo woocommerce_checkout_update_order_meta (starsze podejście).

W nazwach meta używaj prefiksów i formatu czytelnego dla integracji (np. order_custom_pickup_code).

Widok w panelu i w e-mailach

Aby wyświetlić pole w panelu administratora na ekranie edycji zamówienia, wepnij się w woocommerce_admin_order_data_after_billing_address lub analogiczne akcje. Do wiadomości e-mail użyj filtrów/akcji woocommerce_email_order_meta, ewentualnie wstaw wartość w szablonie poprzez funkcję pobierającą meta. Pamiętaj o tłumaczeniach etykiet i porządku sekcji w e-mailu, tak by wartość nie ginęła w gąszczu danych.

Edycja po złożeniu zamówienia i eksport

Gdy zespół obsługi musi korygować wartość pola: zarejestruj pole jako edytowalne w panelu (metabox lub kolumna zamówienia). Dla eksportów (CSV/ERP) zapewnij mapowanie: alias nagłówka, kolejność i format (np. data ISO, boolean jako 0/1). Jeżeli używasz integratora (np. do WMS), uzgodnij klucz meta i moment synchronizacji (po utworzeniu, po opłaceniu, przed wydrukiem etykiet).

Najczęstsze problemy i jak je omijać

Konflikty JS w kasie, brak walidacji po stronie serwera, nadpisywanie zmian przez aktualizacje motywu. Rozwiązanie: kontroluj wersje, przenieś logikę do własnej wtyczki, testuj na stagingu, a walidację replikuj po stronie serwera, nawet jeśli robisz ją w przeglądarce.

Shopify: sprawdzone metody na każdym planie i w Plus

Atrybuty koszyka (cart attributes) – szybkie pole globalne

Jeśli chcesz dodać jedno pole dla całego zamówienia (np. “Instrukcje dla dostawcy”):

  • Otwórz szablon koszyka (sekcja odpowiedzialna za formę koszyka w motywie Online Store 2.0).
  • Dodaj pole formularza o nazwie attributes[Nazwa_pola].
  • Po złożeniu zamówienia atrybuty trafią do sekcji Additional details (Szczegóły dodatkowe) w zamówieniu w panelu, będą też dostępne w liquid jako order.attributes.

Zaletą jest prostota i brak aplikacji. Ograniczenie: pole nie znajduje się w samym checkout (na planach nie-Plus).

Właściwości pozycji (line item properties) – pola dla konkretnych produktów

Dla personalizacji produktu (np. grawer):

  • W formularzu dodawania do koszyka dodaj input o nazwie properties[Nazwa_właściwości].
  • Wartość pojawi się przy pozycji w koszyku i przeniesie się do zamówienia jako szczegół danej linii.
  • Wyświetlaj ją w potwierdzeniach e-mail, w szablonach użyj pętli po line_items i odczytaj item.properties.

To bezpieczna, oficjalna metoda działająca na wszystkich planach.

Zmiany w Checkout (Plus, rozszerzenia lub aplikacje)

Na standardowych planach edycja checkout jest ograniczona. Na Shopify Plus możesz użyć Checkout UI Extensions i funkcji z aplikacji niestandardowej:

  • Zdefiniuj rozszerzenie UI w odpowiednim slocie (np. pod adresami lub w sekcji dostawy).
  • Waliduj dane po stronie klienta i zapisuj je jako order metafields lub cart attributes, w zależności od modelu.
  • Zadbaj o uprawnienia i publikację rozszerzenia w środowisku produkcyjnym.

Alternatywą są aplikacje z App Store, które dodają pola na Thank You Page i przechwytują dane do CRM.

Widok w panelu, e-maile i ograniczenia

Atrybuty koszyka widać jako Additional details; właściwości pozycji – przy liniach zamówienia. W e-mailach (Notifications) możesz wyświetlić je używając liquid (order.attributes, line_item.properties). Ograniczenia: brak natywnej walidacji serwerowej atrybutów koszyka, pola nie wyświetlają się w samym checkout na planach nie-Plus. Planuj UX tak, by klient miał jasny kontekst, i wskazówki przed przejściem do płatności.

Magento 2: pole w checkout, quote i order

Projekt integracji: od quote do order

W Magento dane przechodzą przez warstwę quote (koszyk), a po finalizacji zamówienia trafiają do order. Zaplanuj:

  • gdzie pole ma żyć (quote, address, item, order),
  • jak je przenieść (data persister, plugin lub observer),
  • jak je udostępnić w API (extension attributes),
  • gdzie pokazać w panelu i e-mailach (layout XML, szablony).

To gwarantuje spójny przepływ i stabilność przy aktualizacjach.

Dodanie komponentu UI w checkout

Magento używa konfiguracji checkout_layout i Knockout. Kroki:

  • Utwórz moduł z plikami etc/module.xml i registration.php.
  • W layout (checkout_index_index.xml) wstrzyknij własny komponent do odpowiedniego kroku (shipping/billing/additional).
  • Przygotuj JS (uiComponent) z walidacją i powiązaniem z dataProvider, aby wartość trafiała do payloadu płatności.

Unikaj modyfikacji core – pracuj przez layouty i di.xml.

Zapis i przeniesienie danych do order

Rozszerz quote i order o własne atrybuty (setup/patch data), wystaw je jako extension attributes i zarejestruj kopiowanie z quote do order (observer lub plugin na konwersji). Dzięki temu dane są dostępne w zamówieniu, API i integracjach. Walidację serwerową umieść w validatorze płatności lub obserwerze poprzedzającym utworzenie zamówienia.

Prezentacja w panelu i e-mailach

W panelu administracyjnym dołóż sekcję w sales_order_view przez layout XML i blok phtml prezentujący wartość pola. W e-mailach posłuż się blokiem lub helperem, by wstawić czytelne etykiety i format. Zadbaj o tłumaczenia i brak pustych wierszy, gdy pole nie było wymagane.

Aktualizacje i wydajność

Po aktualizacji Magento sprawdź kompatybilność layoutów i wersji JS. Monitoruj czasy ładowania checkout – dodatkowe bindy KO potrafią spowolnić interfejs. Cache i minifikacja JS/CSS pomagają utrzymać płynność procesu.

Walidacja, bezpieczeństwo, RODO, UX i utrzymanie

Walidacja i sanitizacja danych

Projektuj podwójną kontrolę: front-end (szybki feedback) i back-end (ochrona integralności). Sanitizuj: przytnij długość, usuń tagi HTML, białe znaki, stosuj whitelistę znaków dla krytycznych pól. Błędy komunikuj prosto: wskaż pole, opisz problem, podpowiedz format. Loguj odrzucenia, aby wyłapać realne przypadki użytkowe.

Ochrona przed nadużyciami i bezpieczeństwo

Nie ufaj danym z przeglądarki: weryfikuj tokeny CSRF, autoryzację, zakresy uprawnień w API. Ograniczaj pola wrażliwe (np. PESEL) – jeśli musisz je przechowywać, szyfruj w bazie i ogranicz dostęp w panelu (role). Dla plików stosuj skan antywirusowy i listę dozwolonych typów MIME. Audytuj logi, czy wartość pola nie jest wektorom XSS w mailach lub PDF.

RODO i retencja

Określ podstawę prawną zbierania danych (realizacja umowy, uzasadniony interes, zgoda). W polityce prywatności opisz cel, czas przechowywania, udostępnianie podmiotom trzecim. Ustal retencję: po jakim czasie anonimizujesz lub usuwasz wartości. Zapewnij eksport/usunięcie w ramach żądania klienta (DSAR). Jeśli dane trafiają do zewnętrznych systemów, zadbaj o umowy powierzenia.

UX i dostępność

Minimalizuj liczbę pól. Używaj prostych etykiet, placeholderów informacyjnych i masek wprowadzania, ale nie polegaj wyłącznie na placeholderze – etykieta ma być zawsze widoczna. Dodaj podpowiedzi kontekstowe (tooltip lub mały opis). Zapewnij dostępność: etykiety skojarzone z inputami, odpowiedni kontrast, komunikaty błędów czytane przez screen readery. Testuj na urządzeniach mobilnych oraz przy słabym łączu.

Testy funkcjonalne i monitoring

Przygotuj scenariusze: pole puste, wypełnione poprawnie, błędny format, zmiana metody dostawy/płatności (logika warunkowa), kilka języków i walut. Uruchom testy E2E (np. Cypress/Playwright) i sprawdzaj regresje po aktualizacji wtyczek/motywu. W analityce dodaj zdarzenia: wejście w pole, walidacja OK/ERROR, porzucone koszyki z błędami. W obserwowalności (logi, APM) śledź czas renderu kasy i błędy serwera.

Integracje, eksport i utrzymanie

Uzgodnij ze stroną logistyczną/księgową nazwy i formaty. W ERP/CRM dodaj mapowanie atrybutów. Zaplanuj migracje: co, jeśli zmienisz typ pola (text → select)? Jak obsłużysz archiwalne zamówienia? W repozytorium trzymaj definicje pól jako kod (infrastructure as code), a w changelog opisuj wpływ na procesy. Na koniec ustaw alerty – jeśli wartość pola nagle znika w nowych zamówieniach, zareaguj przed szczytem sprzedaży.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz