Case studies

System Ofertowania PDF WooCommerce – Case Study Auranet

Generator kalkulacji PDF z koszyka WooCommerce dla produktów na wymiar. Eliminacja barier zakupowych w B2B, edycja cen, automatyzacja ofertowania.

Zapytaj o wycenę Przeczytaj, jak to zrobiliśmy

System Ofertowania PDF WooCommerce – Case Study Auranet

Case Study: System Ofertowania PDF z Koszyka WooCommerce dla Sklepu z Produktami na Wymiar

Wyzwanie biznesowe

Dystrybutor parapetów zewnętrznych, parapetów wewnętrznych, blachy podbitkowej, obróbek blacharskich oraz schodów z kamienia stanął przed problemem typowym dla branży B2B z produktami customizowanymi:

Kluczowe problemy:

  • Bariera psychologiczna klientów – zakup parapetów za 3000–10 000 zł z niestandardowymi wymiarami (długość, szerokość, grubość) bezpośrednio przez sklep internetowy bez wcześniejszej konsultacji budził opór.
  • Brak narzędzia do ofertowania – handlowcy tworzyli oferty ręcznie w Excelu, co zajmowało 20–30 minut na ofertę i generowało błędy (nieaktualne cenniki, literówki, brak spójności wizualnej).
  • Przetargi i zamówienia firmowe – firmy budowlane i deweloperzy wymagali formalnych ofert PDF do dokumentacji przetargowej, czego standardowy koszyk WooCommerce nie obsługiwał.
  • Niemożność identyfikacji klienta podczas rozmowy – gdy klient dzwonił po skompletowaniu koszyka, nie było sposobu na szybkie odnalezienie jego kalkulacji (brak unikalnego numeru referencyjnego).
  • Brak elastyczności cenowej – oferty wymagały często indywidualnych rabatów lub dodatkowych pozycji (koszt transportu, montaż), czego nie dało się zrealizować w standardowym flow zamówienia.

Cel: Wdrożenie systemu pozwalającego klientom i handlowcom na generowanie profesjonalnych ofert PDF bezpośrednio z koszyka WooCommerce, bez konieczności finalizowania zamówienia, z możliwością edycji cennika, dodawania kosztów transportu i zapisywania kalkulacji dla późniejszej weryfikacji.


Rozwiązanie techniczne: Custom Post Type + Dompdf + Edytowalny Backend

Architektura systemu

System składa się z trzech głównych komponentów:

[Frontend: Zapis koszyka] 
    ↓
[Custom Post Type: saved_cart - przechowywanie kalkulacji]
    ↓
[Backend: Edycja cen, transport, uwagi, wysyłka PDF]
    ↓
[Generator PDF: Dompdf + niestandardowy layout]

1. Frontend: Zapisywanie koszyka bez finalizacji zamówienia

Proces po stronie klienta:

  1. Klient kompletuje produkty w koszyku (wybiera wymiary, grubość, kolor, wykończenie).
  2. Na stronie koszyka pojawia się przycisk „Zapisz jako kalkulację PDF”.
  3. Po kliknięciu:
    • System generuje unikalny numer kalkulacji (format: KALK-4324203495 – 10 cyfr losowych, unikalne w bazie).
    • Zapisuje snapshot koszyka jako Custom Post Type saved_cart.
    • Automatycznie generuje PDF i pobiera plik na komputer klienta.
    • Wyświetla komunikat: „Twoja kalkulacja została zapisana. Numer kalkulacji: KALK-XXXXXXXXXX. Możesz podać ten numer podczas kontaktu z nami.”

Kluczowe zalety:

  • Zero friction – klient nie musi zakładać konta, logować się, ani wprowadzać danych płatności.
  • Referencja – unikalny numer kalkulacji pozwala na łatwą identyfikację podczas rozmowy telefonicznej lub emaila.
  • Profesjonalizm – klient otrzymuje branded PDF z logo firmy, danymi kontaktowymi, warunkami płatności.

2. Custom Post Type: Przechowywanie kalkulacji z pełną historią

Każda zapisana kalkulacja tworzy post typu saved_cart z następującymi metadanymi:

Meta keyOpisPrzykład
_cart_numberUnikalny numer kalkulacjiKALK-4324203495
_cart_dataJSON z produktami (nazwa, SKU, cena, ilość, wymiary, zdjęcie)[{...}, {...}]
_cart_subtotalSuma produktów brutto5432.10
_cart_taxVAT wstecz (23/123 × subtotal)1020.72
_cart_totalSuma końcowa produktów5432.10
_transport_costKoszt transportu (edytowalny)150.00 lub null
_cart_notesUwagi do kalkulacji„Dostawa w ciągu 5 dni”
_customer_nameImię i nazwisko klientaJan Kowalski
_customer_emailEmail klientajan@firma.pl
_edited_byID admina, który edytował kalkulację1
_edited_atData ostatniej edycji2025-03-06 14:32:11

Losowa numeracja (10 cyfr):

System generuje 10-cyfrowy losowy numer i sprawdza unikalność w bazie danych. Jeśli numer istnieje, generuje ponownie (rekurencja).

Dlaczego losowa, a nie sekwencyjna?

  • Bezpieczeństwo – niemożliwe odgadnięcie kolejnych numerów przez konkurencję (KALK-0001, KALK-0002 → widać wolumen sprzedaży).
  • Rozproszenie – eliminuje ryzyko kolizji w systemach rozproszonych (multi-server).
  • Profesjonalizm – numer KALK-4324203495 wygląda bardziej jak system korporacyjny niż KALK-0042.

3. Backend (Admin): Edycja kalkulacji i zarządzanie ofertami

Panel administracyjny – lista kalkulacji:

Numer kalkulacjiKlientWartośćData
KALK-4324203495Jan Kowalski (jan@firma.pl)5 582,10 zł2025-03-05
KALK-8293847562Firma ABC Sp. z o.o.12 340,50 zł2025-03-04

Metabox: Szczegóły kalkulacji (edytowalny)

Administrator może:

  • Edytować ceny jednostkowe produktów w tabeli (np. zastosować rabat 10%).
  • Zmienić ilości (jeśli klient chce skorygować wymiary).
  • Dodać/zmienić koszt transportu (3 stany: null = kreska „–”, 0 = „Gratis”, wartość liczbowa = kwota).
  • Dodać uwagi (np. „Uwaga: termin realizacji 14 dni roboczych”).
  • Po zapisaniu zmian:
    • System przelicza automatycznie sumę końcową (JavaScript real-time).
    • Zapisuje metadane _edited_by (ID admina) i _edited_at (timestamp).
    • W PDF pojawia się informacja: „Kalkulacja edytowana przez: Anna Kowalska (2025-03-06 14:32)”.

4. Akcje administratora

Metabox: Akcje (Sidebar)

  1. Pobierz PDF – generuje aktualną wersję PDF z edytowanymi cenami i pobiera plik.
  2. Wyślij PDF emailem:
    • Input: adres email (domyślnie: email klienta z kalkulacji).
    • Po kliknięciu „Wyślij” – system generuje PDF, wysyła jako załącznik przez wp_mail(), usuwa plik tymczasowy.
    • Email zawiera profesjonalną treść z numerem kalkulacji i danymi kontaktowymi.

5. Generator PDF: Dompdf + Custom Layout

Biblioteka: Dompdf – PHP library do generowania PDF z HTML/CSS.

Struktura PDF:

┌─────────────────────────────────────────────┐
│ [LOGO]              Firma Sp. z o.o.        │
│                     ul. Przykładowa 10       │
│                     00-000 Warszawa          │
│                     NIP: 1234567890          │
├─────────────────────────────────────────────┤
│           KALKULACJA                         │
│ Numer: KALK-4324203495                       │
│ Data: 2025-03-05 14:20:15                    │
├─────────────────────────────────────────────┤
│ [Tabela produktów z wymiarami]               │
├─────────────────────────────────────────────┤
│ w tym VAT (23%):              1 020,72 zł    │
│ Suma produktów:               5 432,10 zł    │
│ Koszt transportu:               150,00 zł    │
│ RAZEM BRUTTO:                 5 582,10 zł    │
├─────────────────────────────────────────────┤
│ Uwagi: [opcjonalnie]                         │
├─────────────────────────────────────────────┤
│ [FOOTER + info o edycji]                     │
└─────────────────────────────────────────────┘

Kluczowe elementy layoutu:

  • Logo + dane firmy – konfigurowane przez admina (panel ustawień).
  • Warianty produktów – automatyczne wyświetlanie atrybutów (np. „Kolor: Biały | Wykończenie: Polerowane”).
  • Wymiary customowe – specjalne pola dla produktów na wymiar (długość × szerokość).
  • Koszt transportu – 3 stany wizualne:
    • null → wyświetla „–” (nie określono).
    • 0 → wyświetla „Gratis”.
    • wartość liczbowa → wyświetla kwotę (np. „150,00 zł”).

Rezultaty wdrożenia

MetrykaPrzed wdrożeniemPo wdrożeniu
Czas tworzenia oferty (handlowiec)20–30 minut (Excel)2–3 minuty
Spójność formatowania ofert~60% (różne szablony Excel)100% (jednolity szablon PDF)
Możliwość edycji cennikaNie (wymagało przeróbki Excela)Tak (real-time editing w adminie)
Identyfikacja klienta podczas rozmowyNiemożliwa (brak numeru ref)Natychmiastowa (numer KALK-XXX)
Oferty generowane miesięcznie~50 (ręcznie przez handlowców)150–200 (klienci + handlowcy)
Konwersja zapytanie → zamówienie~25%~35%
Błędy w ofertach~15 błędów/miesiąc0 (dane sync z WooCommerce)

Jakościowe korzyści:

  • Eliminacja bariery psychologicznej – klienci mogą „zobaczyć ofertę” przed zamówieniem, co zwiększa zaufanie do zakupu produktów na wymiar.
  • Profesjonalizm – branded PDF z logo, danymi firmy, warunkami płatności buduje wiarygodność.
  • Skalowalność dla handlowców – możliwość tworzenia 10–15 ofert dziennie bez wypalenia.
  • Przetargi i dokumentacja – firmy budowlane mogą dołączać PDF do dokumentacji przetargowej.
  • Feedback loop – zapisane kalkulacje pozwalają na analizę: które produkty są najczęściej wyceniane, jakie wymiary dominują, ile ofert konwertuje.

Technologia i narzędzia

WarstwaTechnologia
E-commerceWordPress + WooCommerce
Generator PDFDompdf (PHP library)
StorageCustom Post Type (saved_cart) + Post Meta
FrontendPHP hooks + WooCommerce cart actions
Backend UIWordPress Metaboxes + JavaScript (jQuery)
Emailwp_mail() (SMTP przez WooCommerce settings)
FontsDejaVu Sans (Unicode support dla polskich znaków)
NumeracjaPHP random_int() + collision checking

Kluczowe wnioski dla właścicieli sklepów B2B z produktami na wymiar

1. System ofertowania eliminuje główną barierę zakupową w B2B

Klienci nie chcą zamawiać produktów za 5000+ zł bez wcześniejszej konsultacji. Oferowanie możliwości „zapisz jako PDF i porozmawiamy” zwiększa liczbę zapytań o 3×, bo usuwa ryzyko i commitment.

2. Unikalny numer referencyjny to game-changer dla obsługi klienta

Zamiast: „Dzwonię w sprawie parapetów, które oglądałem wczoraj na stronie…”
Teraz: „Dzwonię w sprawie kalkulacji KALK-4324203495” → handlowiec otwiera post w adminie w 5 sekund.

3. Edycja kalkulacji post-factum = elastyczność cenowa bez przebudowy systemu

Handlowcy mogą:

  • Zastosować rabat 10% dla klienta VIP (edycja ceny jednostkowej).
  • Dodać koszt transportu gabarytowego (150 zł vs. standardowe 50 zł).
  • Dopisać uwagi: „Uwaga: realizacja po 15. kwietnia z powodu dostaw surowca”.

Bez konieczności:

  • Tworzenia kuponów rabatowych w WooCommerce.
  • Dodawania nowych produktów „transport specjalny” do katalogu.
  • Ręcznego przerabiania Excela i wysyłania nowej wersji.

4. Custom Post Type to lepsze rozwiązanie niż Orders

Dlaczego NIE zapisywać jako Order (zamówienie WooCommerce)?

  • Orders wymagają payment status, shipping status, order notes → overkill dla oferty.
  • CPT daje pełną kontrolę nad metadanymi, UI, workflow.
  • Separacja ofert od zamówień ułatwia raportowanie (ile ofert → ile zamówień?).

Korzyści CPT:

  • Możliwość dodania custom columns w liście (np. „Status oferty: Wysłana / Zatwierdzona / Odrzucona”).
  • Integracja z CRM przez REST API (export kalkulacji do Pipedrive, HubSpot).
  • Brak zaśmiecania listy zamówień „ofertami, które nie skonwertowały”.

5. Koszt transportu wymaga 3 stanów, nie 2

Błąd w większości systemów:

  • Transport = 0 zł → wyświetla „0,00 zł” (wygląda jak błąd).
  • Transport nie ustawiony → wyświetla „0,00 zł” (mylące).

Prawidłowe rozwiązanie:

  • null (puste pole) → „–” (nie określono, bo zależy od lokalizacji).
  • 0 → „Gratis” (świadoma decyzja sprzedawcy).
  • wartość liczbowa → kwota (np. „150,00 zł”).

To pozwala na elastyczne ofertowanie:

  • „Koszt transportu: – (wycena po podaniu adresu dostawy)”.
  • „Koszt transportu: Gratis (promocja przy zamówieniu powyżej 10 000 zł)”.

6. ROI wdrożenia: 6–12 miesięcy

Przykładowa kalkulacja (sklep 100 zamówień/miesiąc):

  • Koszt wdrożenia: 8 000 – 12 000 zł (custom development + testowanie).
  • Oszczędność czasu handlowców: 20 godzin/miesiąc × 50 zł/h = 1 000 zł/miesiąc.
  • Wzrost konwersji zapytań o 10 p.p. (25% → 35%) = +10 zamówień/miesiąc × średnia wartość 2000 zł = +20 000 zł przychodu/miesiąc.
  • Payback period: 6–8 miesięcy.

Dlaczego to rozwiązanie działa?

Dla biznesu:

  • Usuwa friction w ścieżce zakupowej – klient może „przetestować” zakup bez płacenia.
  • Profesjonalizuje komunikację – branded PDF > chaotyczny email z Excelem.
  • Skaluje obsługę – handlowcy obsługują 3× więcej zapytań w tym samym czasie.

Dla technologii:

  • Zero vendor lock-in – Dompdf to open-source, dane w native WP database.
  • Modułowa architektura – łatwe dodanie integracji (sync kalkulacji do CRM, SMS z linkiem do PDF).
  • Performance – generowanie PDF zajmuje 1–2 sekundy.

Dla UX:

  • Klient kontroluje proces – może zapisać ofertę, porównać z konkurencją, wrócić za tydzień.
  • Handlowiec ma context – widzi historię edycji, może skorygować cenę w czasie rzeczywistym podczas rozmowy telefonicznej.

Następny krok dla Twojego sklepu

Jeśli prowadzisz sklep B2B z:

  • Produktami na wymiar (parapety, schody, meble, konstrukcje stalowe, blacha podbitkowa),
  • Wysokimi wartościami zamówień (3000+ zł),
  • Klientami wymagającymi formalnych ofert (firmy, deweloperzy, przetargi),

Skontaktuj się z nami, żeby omówić wdrożenie systemu ofertowania PDF dostosowanego do Twojego biznesu.


Generator ofert PDF to jeden z przykładów oprogramowania na zamówienie — funkcji, której nie da się kupić jako wtyczki, bo wynika z konkretnego procesu sprzedaży.

Autor: Auranet – automatyzacja e-commerce i dedykowane rozwiązania B2B dla firm wymagających elastyczności bez kompromisów w stabilności.

Podobny problem u Ciebie?

Napisz, z czym się mierzysz. Odpowiemy, jak wyglądałoby to u Ciebie i ile kosztuje. Odpowiadamy w 24 godziny.

Zapytaj o wycenę