A B2B system case study for a wholesaler of glass, candles and decor with warehouses in Canada and the USA: WooCommerce, two warehouses in one shop, hidden wholesale prices, minimum order quantities, an AI chatbot and three languages on canpolltd.com.
A wholesale shop follows different rules than a retail one. Prices are not on display, a company account decides who can buy, and the same product may be available in one warehouse and unavailable in another. For Canpol Manufacturing Ltd, a wholesaler of glass, candles, artificial flowers and decor with an office in Mississauga (Ontario) and a distribution centre in Suwanee (Georgia), we designed the Canpol Warehouse system in Bydgoszcz. It is a WordPress and WooCommerce plugin that powers the wholesale shop canpolltd.com. In this case study we describe how we built a B2B shop with two warehouses on WooCommerce and what the system looks like in the wholesaler’s daily work.
In short: a B2B system with two warehouses (USA and Canada)
- Client: Canpol Manufacturing Ltd, Mississauga (Canada) and Suwanee (USA)
- Industry: wholesale distribution of glass, candles, artificial flowers, decor and packaging materials for florists, gift shops and event designers
- Scope: WordPress theme, a plugin with two-warehouse logic, company accounts with approval, prices and stock levels per warehouse, MOQ and quantity tiers, EN, FR (Canadian) and ES versions, AI chatbot, SEO, newsletter, data import and export, migration from the old website
- Technologies: WordPress, WooCommerce, a custom theme and plugin, OpenAI, the Qdrant vector database, n8n
- Contractor: Kreatywna Agencja, Bydgoszcz
- Website: canpolltd.com
The challenge: a wholesaler where every customer sees a different shop
Canpol’s previous website was written in custom PHP, outside WordPress, and the shop led to an external platform. The new system had to keep the business rules the client had developed over the years and add tools the old website did not have. The list of requirements was specific:
- a company account assigned to one of two warehouses, Canada or the USA,
- separate stock levels, availability and prices in each warehouse, including products for Canada only,
- wholesale prices hidden on catalogue pages and visible only in the cart,
- a minimum order quantity and tier prices that depend on the warehouse,
- a catalogue in three languages and product colours as variants,
- registration of new customers with manual approval,
- migration of existing customers and order history without forcing password resets.
The hardest part was two warehouses in two currencies (CAD and USD) with a single catalogue. That is why we decided on a custom solution built on WooCommerce instead of putting it together from several off-the-shelf plugins.
How we worked on the project
- Business rules analysis: we wrote down how the old website worked: who sees which prices, how MOQ is calculated, what “Canada only” means.
- Data model: stock, availability and price are stored separately for each warehouse, not in the standard WooCommerce fields, which know only one warehouse.
- Theme and catalogue: the home page layout, category navigation and product cards with colours as variants.
- Migration: import of customers, addresses and order history from the old website, plus product data from the supplier’s CSV files.
- Testing and stages: we worked remotely from Bydgoszcz, showing weekly progress on a staging environment, just as with every project for clients in Poland.
The solution: one plugin, two warehouses, hidden prices
The home page says right away what the shop is: slogans about Polish coloured glass and candles, the “View specials” and “Request a quote” buttons, login, registration and cart in the header, and an EN, FR and ES language switcher.

An account assigned to a warehouse
At registration the customer provides company details, a tax number and a country, and the country assigns the account to a warehouse. From then on everything the customer sees comes from their warehouse: stock level, availability, currency and price. The same product code can cost a different amount in USD and in CAD, and part of the range is marked as available in Canada only. New accounts go into an approval queue, so the wholesaler itself decides who gets access to prices.
Prices visible only in the cart
Product cards show no prices, even for logged-in customers. The wholesale price appears in the cart and at checkout. A guest sees the catalogue but is invited to log in at the product. The minimum order quantity is enforced when adding to the cart, and tier pricing works per warehouse. Orders are placed “on account”, with no online payment in the shop.

Colour variants and catalogue management
With several hundred products and over a thousand colour variants, maintaining the catalogue by hand would be tedious. Products are therefore WooCommerce variable products with a colour attribute, and each variant has its own stock data. Product data can be imported and exported in CSV and JSON, and stock levels can be updated through a dedicated REST interface. A missing-items report shows which variants are sold out in both warehouses and lets you download a list for ordering from the supplier. We also prepared a connection to QuickBooks Online, with a separate accounting company for each warehouse.
Migration from the old website
The wholesaler’s customers should not have to start from scratch. We prepared a migration bridge that only reads data from the old website and saves it in WordPress: customer accounts, addresses and order history. Existing passwords work without a forced reset, so a regular customer logs in as before. On test data around fifteen hundred orders were transferred, so purchase history is visible from day one, and customer segments and reports have data to work on.
Three languages without duplicating the shop
The shop runs in English, Canadian French and Spanish. Each version has its own address with a language parameter, a hreflang attribute and correct metadata, so search engines can tell the versions apart. Product descriptions are translated by artificial intelligence, but every translation can be corrected by hand, and a corrected text is not overwritten automatically.
An AI chatbot that knows the catalogue but guards the prices
In the bottom right corner runs “Canpol Ai Help desk”. It answers questions about products, dimensions and colours in the customer’s language. It uses product descriptions and documents from a vector knowledge base, and reads prices, minimum quantities and availability live from the shop. The visibility rules are enforced in code, not left to the model: the chatbot will not show a price to a guest, only invite them to log in, and it does not reveal exact stock levels to anyone, because it answers descriptively (“low stock”, “available”, “on the way”).

Tools for the owner: SEO, newsletter and notifications
The system includes modules that take the load off the wholesaler’s team after launch:
- SEO and visibility in AI search engines: titles, descriptions and image alt texts in two languages, a sitemap, structured data and product specification tables (dimensions, origin, pack quantity).
- Newsletter: a sign-up in the footer, customer segments (for example active buyers, or customers who have not ordered for a long time), open and click statistics and “back in stock” notifications.
- Notifications and summaries: new orders, low stock, abandoned carts and a daily or weekly sales summary.
- Backups: daily or weekly, with the option of sending copies off the server.
- Accessibility: an accessibility panel on the website. It does not replace a WCAG audit, and we tell the client so plainly.
We describe the SEO principles for such a shop in more detail in the article on an SEO campaign for a local business, and when it is worth commissioning your own plugin in the text on custom WordPress plugins.
Compliance and security
- Cookie consent: the banner lets users reject non-essential cookies, and analytics and the advertising pixel wait for consent.
- Bot protection: the registration and contact forms have safeguards against automated submissions.
- Data access: prices and “customers only” documents do not reach logged-out visitors, including through the chatbot.
- Marketing consent: we send the newsletter only to people who signed up for it.
We do not promise Google rankings. A wholesale shop has a narrow audience, and visibility depends on the competition, the quality of product data and the regularity of content.
Technologies used in the project
- WordPress and WooCommerce as the base for the catalogue, accounts and orders,
- a custom theme and the Canpol Warehouse plugin with the two-warehouse logic,
- OpenAI for descriptions, translations and chatbot answers,
- Qdrant and n8n as the vector knowledge base and the chatbot’s intermediate layer,
- CSV and JSON import and export and a REST interface for updating the catalogue and stock levels.
The result: one system instead of a shop you have to work around
The client got a website where a customer from Canada and a customer from the USA each see their own warehouse, and the team manages the catalogue, translations, newsletter and summaries from a single panel. We do not have access to the client’s sales statistics, so we do not give conversion or revenue figures. The value lies in the order it brings: rules that used to be written in the old code are now settings, and new features can be added as modules without rewriting the whole.
This project also shows that an agency from Bydgoszcz can run an implementation for a client on the other side of the Atlantic: we write down agreements, show progress every week on a staging environment, and introduce changes in stages, without stopping the wholesaler’s work. For a company from Bydgoszcz, Toruń or Inowrocław that sells abroad, it is the same model of cooperation.
Who this solution is for
The system suits companies that sell wholesale and have more than one warehouse or market: distributors, manufacturers and importers, including those from Bydgoszcz and the Kuyavian-Pomeranian region, who serve customers abroad. Our other WooCommerce projects include the online shop of the Rynkowa Bistro pastry shop and the AutCode software house website with WooCommerce. A broader approach to shops is described in the article on using WooCommerce in online shops. You can check the state of an existing shop in our free WooCommerce shop health check.
Frequently asked questions about a B2B wholesale shop on WooCommerce
Is WooCommerce suitable for a B2B wholesale shop?
Yes, but it needs adapting. WooCommerce has a cart, accounts, variants and orders, while wholesale rules such as hidden prices, minimum quantities or manually approved accounts are added with a plugin or code. In the Canpol project we did it with our own plugin, because the client needed two warehouses in two currencies.
How do you handle two warehouses in one WooCommerce shop?
Standard WooCommerce fields know one stock level and one price, so warehouse data has to be stored separately for each warehouse. We assign the customer account to a warehouse, and the shop shows the stock level, availability and price from that warehouse. This also lets you mark products available in only one country.
How do you hide prices from logged-out customers?
The price can be removed from product cards and shown only in the cart after login. You also have to remember it in other places, such as structured data for search engines, product feeds or chatbot answers. At Canpol the price reaches a guest through none of these routes.
Can an AI chatbot work in a B2B shop without revealing prices?
Yes, if the visibility rules are enforced in code and not written only in the instructions for the model. The chatbot fetches the price and availability from the shop at the moment of the question and shows them to a logged-in customer from the right warehouse. A guest is invited to log in.
How do you move customers and orders from an old website?
It depends on the old system. In this project we prepared a migration bridge that imports customers, addresses and orders and lets people log in with their existing password, without a forced reset. We define the scope of the migration after reviewing the old data.
How much does such a system cost?
The price depends on the scope: the number of warehouses, markets, languages, integrations and the migration. After a first, free conversation we prepare a fixed-price quote, and you can work out an approximate budget in the quote calculator.
Planning a wholesale shop or a B2B system?
We build WooCommerce shops and custom plugins for companies that sell wholesale. See our services, check other projects or get in touch with us right away. The first conversation is free.
Kreatywna Agencja (Canpol Bis Sp. z o.o.)
ul. Gimnazjalna 2/M501, 85-007 Bydgoszcz
tel. +48 502 811 949 · biuro@kreatywnaagencja.com.pl
Zgodność i bezpieczeństwo
- Zgody na cookies: baner pozwala odrzucić pliki inne niż niezbędne, a analityka i piksel reklamowy czekają na zgodę.
- Ochrona przed botami: formularze rejestracji i kontaktu mają zabezpieczenia przed automatami.
- Dostęp do danych: ceny i dokumenty „tylko dla klientów” nie trafiają do osób niezalogowanych, także przez chatbota.
- Zgody marketingowe: newsletter wysyłamy tylko osobom, które się na niego zapisały.
Pozycji w Google nie obiecujemy. Sklep hurtowy ma wąską grupę odbiorców, a widoczność zależy od konkurencji, jakości danych produktów i regularności treści.
Technologie użyte w projekcie
- WordPress i WooCommerce jako baza katalogu, kont i zamówień,
- własny motyw i wtyczka Canpol Warehouse z logiką dwóch magazynów,
- OpenAI do opisów, tłumaczeń i odpowiedzi chatbota,
- Qdrant i n8n jako wektorowa baza wiedzy i warstwa pośrednia chatbota,
- import i eksport CSV i JSON oraz interfejs REST do aktualizacji katalogu i stanów.
Efekt: jeden system zamiast sklepu, który trzeba obchodzić
Klient dostał serwis, w którym klient z Kanady i klient z USA widzą swoje magazyny, a zespół zarządza katalogiem, tłumaczeniami, newsletterem i podsumowaniami z jednego panelu. Nie mamy dostępu do statystyk sprzedaży klienta, więc nie podajemy liczb konwersji ani przychodów. Wartość widać w uporządkowaniu: reguły, które wcześniej były zapisane w starym kodzie, są teraz ustawieniami, a nowe funkcje można dokładać modułami, bez przepisywania całości.
Ten projekt pokazuje też, że agencja z Bydgoszczy może prowadzić wdrożenie dla klienta po drugiej stronie Atlantyku: ustalenia zapisujemy, postępy pokazujemy co tydzień na środowisku testowym, a zmiany wprowadzamy etapami, bez zatrzymywania pracy hurtowni. Dla firmy z Bydgoszczy, Torunia czy Inowrocławia, która sprzedaje za granicę, to ten sam model współpracy.
Dla kogo takie rozwiązanie
System sprawdzi się w firmach, które sprzedają hurtowo i mają więcej niż jeden magazyn lub rynek: dystrybutorów, producentów i importerów, także z Bydgoszczy i regionu kujawsko-pomorskiego, którzy obsługują klientów za granicą. Inne nasze wdrożenia WooCommerce to sklep internetowy cukierni Rynkowa Bistro i strona software house AutCode z WooCommerce. Szersze podejście do sklepów opisuje artykuł o wykorzystaniu WooCommerce w sklepach internetowych. Stan istniejącego sklepu sprawdzisz w darmowym teście kondycji sklepu WooCommerce.
Najczęstsze pytania o sklep hurtowy B2B na WooCommerce
Czy WooCommerce nadaje się do sklepu hurtowego B2B?
Tak, ale wymaga dopasowania. WooCommerce ma koszyk, konta, warianty i zamówienia, a reguły hurtowe, takie jak ukryte ceny, minimalne ilości czy konta zatwierdzane ręcznie, dodaje się wtyczką lub kodem. W projekcie Canpol zrobiliśmy to własną wtyczką, bo klient potrzebował dwóch magazynów w dwóch walutach.
Jak obsłużyć dwa magazyny w jednym sklepie WooCommerce?
Standardowe pola WooCommerce znają jeden stan i jedną cenę, więc dane magazynowe trzeba zapisać osobno dla każdego magazynu. Konto klienta przypisujemy do magazynu, a sklep pokazuje stan, dostępność i cenę z tego magazynu. Pozwala to też oznaczać produkty dostępne tylko w jednym kraju.
Jak ukryć ceny przed niezalogowanymi klientami?
Cenę można usunąć z kart produktów i pokazywać ją dopiero w koszyku po zalogowaniu. Trzeba o niej pamiętać także w innych miejscach, takich jak dane strukturalne dla wyszukiwarek, kanały produktowe czy odpowiedzi chatbota. W Canpol cena nie trafia do gościa żadną z tych dróg.
Czy chatbot AI może działać w sklepie B2B bez ujawniania cen?
Tak, jeśli zasady widoczności są wymuszone w kodzie, a nie zapisane tylko w poleceniu dla modelu. Chatbot pobiera cenę i dostępność ze sklepu w chwili pytania i pokazuje je zalogowanemu klientowi z odpowiedniego magazynu. Gościowi proponuje logowanie.
Jak przenieść klientów i zamówienia ze starego serwisu?
Zależy od starego systemu. W tym projekcie przygotowaliśmy most migracyjny, który importuje klientów, adresy i zamówienia oraz pozwala zalogować się dotychczasowym hasłem, bez wymuszania resetu. Zakres migracji ustalamy po przeglądzie starych danych.
Ile kosztuje taki system?
Cena zależy od zakresu: liczby magazynów, rynków, języków, integracji i migracji. Po pierwszej, darmowej rozmowie przygotowujemy wycenę ryczałtową, a orientacyjny budżet policzysz w kalkulatorze wyceny.
Planujesz sklep hurtowy lub system B2B?
Budujemy sklepy WooCommerce i dedykowane wtyczki dla firm, które sprzedają hurtowo. Zobacz nasze usługi, sprawdź inne realizacje albo od razu skontaktuj się z nami. Pierwsza rozmowa jest darmowa.
Kreatywna Agencja (Canpol Bis Sp. z o.o.)
ul. Gimnazjalna 2/M501, 85-007 Bydgoszcz
tel. +48 502 811 949 · biuro@kreatywnaagencja.com.pl



