Technical wholesale
Your customer is a trades business, and their day starts before yours. At 06:30 the painter is loading the van and needs 30 kg of filler, two rolls of tape and four brushes, on a phone, standing outside, with one hand. At 07:30 someone else is at your trade counter because the job is on hold until they have the part. On Saturday morning a plumber discovers the fitting is the wrong size and orders the right one for Monday. If your storefront is a desktop experience that expects a considered browse, none of these people use it. They drive to whichever branch is closest, yours or a competitor's.
The second thing that shapes everything: your prices are not entirely your own. A large share of your customers buy through a purchasing cooperative (E/D/E, hagebau, Sanitärunion and the rest), and each member business has its own agreed conditions, renegotiated annually. Those conditions must be right on the screen without anyone asking. A trade customer who sees a price that is not theirs does not query it. They assume the whole shop is unreliable, and they go back to phoning the branch manager they have known for fifteen years.
What is different about your business
Your customer orders outside office hours, on a phone, with dirty hands. Weekend and early-morning traffic is the normal case in technical wholesale; for some assortments it is the majority. That sets the design constraint: a seven-line order has to be possible in about ninety seconds, from a small screen, on a bad connection.
Availability at the nearest branch beats price. A part in stock twenty minutes away wins against a cheaper one arriving tomorrow, every time, because the crew is standing idle either way. That makes branch-level stock and a pickup option a commercial feature. One national stock figure is worse than none, because it promises something your branch cannot honour.
Conditions come from a buying group and must not need a phone call. Membership determines the discount, product group by product group, and it changes with the annual round. Maintaining that by hand across a growing assortment stops being possible somewhere around the third range extension.
Your customer is buying on behalf of their own customer. The order line belongs to a site, a job, a commission number, and it has to come back on the delivery note and the invoice in a form they can pass on. A shop that cannot carry that reference forces them to re-sort every delivery by hand, and they will not do it twice.
Units are not pieces. Wallpaper in running metres, flooring in square metres, cable on drums of 50 m, screws in packs of 100, filler in 30 kg sacks. A unit that is wrong on the page is a delivery of the wrong quantity, a return, a credit note and a lost afternoon on site.
Your industry has its own data formats. Datanorm and BMEcat are how catalogs move between manufacturers, cooperatives and wholesalers, and your customers' own trade software often expects to be fed the same way.
Your path
Phase 1: Mobile reorder for the customers you already have
Start with the regulars and the assortment they order weekly. It is the shortest route to real usage, and their behaviour will tell you what to build next.
- Move existing customers online: the goal page for this phase.
- Contract prices for a customer → Scale and volume prices → Check which price a buyer sees before anyone gets a login.
- Order lists and recurring carts and Quick order and cart import: the two screens this industry lives in.
- Measurements and units: do this before launch, not after the first wrong delivery.
- What buyers see before they log in and Checkout configuration: keep the logged-in path to as few steps as it can hold.
- Contacts and roles: the owner, the foreman and the apprentice are not the same buyer.
Phase 2: Make the branch network visible
This is the phase that separates a technical wholesaler's shop from a generic one.
- Stock, locations and availability: per branch, with a pickup option.
- Launch a B2B shop: the broader build, now that the core path works.
- When stock numbers drift: in a counter business, drift is constant and has to be managed, not fixed once.
- Addresses: site deliveries are not the registered office.
- Shipping methods and carriers and Partial deliveries and backorders: split deliveries are normal here.
- How B2B buyers actually search → Facets and filters → Autocomplete and suggestions, tuned for someone typing with a thumb.
Phase 3: The cooperative, the repeat business and the project business
- Design your price lists and Segments: model the cooperative properly, so the annual round is one maintained structure rather than a spreadsheet migration.
- Import prices in bulk and Price list hygiene
- Catalog exchange formats → Catalog export profiles → Export a catalog for a customer: Datanorm and BMEcat, in both directions.
- Build recurring revenue → Standing orders for consumables that repeat.
- Promotion types that work in B2B and Bundles and kits: cross-sell by trade, not by algorithm. Filler, then sandpaper, then masking tape.
- For project and site business: Run quote-to-order and Call-offs against a framework agreement.
The mistakes we see most in your industry
- Designing and testing on a desktop. The people who build the shop sit at 27-inch monitors; the people who use it stand in a van. Test every release on a phone, outdoors, one-handed, or you will ship a shop nobody in the trade can use.
- Publishing one national stock figure. It reads as a lie the first time a customer drives to the branch. Either show branch-level availability or show none and promise a delivery date you can keep.
- Maintaining cooperative conditions per member by hand. It works for the first two dozen members. Then a range extension or an annual round arrives and the shop shows prices that nobody in your company can explain.
- Assuming the trade customer will browse. They know the article, often by your number and the manufacturer's. Category navigation is for the exceptions; quick order and last order are the main road.
- Launching without the quantity logic. Drums, packs, square metres and running metres have to be right on the page, in the cart and on the confirmation. This is the most expensive small mistake in the industry, and it lands on a building site.
What to measure
- Share of orders from mobile devices, and separately the share placed before 07:00, after 17:00 and at weekends. If those are not growing, the shop has not reached the people it was built for.
- Time from login to submitted order for a repeat basket. Target the ninety-second reality, and measure it on a phone rather than in a lab.
- Click-and-collect share, per branch. It is also the honest test of your branch stock data.
- Deviation between the availability shown and what was picked, per branch. Every gap here converts a customer back to the telephone.
- Returns and credit notes caused by the wrong unit or quantity. Categorise them; a cluster points at one product family's unit configuration, not at careless customers.
- Price queries and condition complaints per month, per cooperative. After go-live this should fall to near zero. Any persistent trickle means the condition model is wrong somewhere.
- Online share per member business. The rollout is account by account, so the number has to be too.
Where to start reading
- Order lists and recurring carts: the screen your customers will use most.
- Stock, locations and availability: branch-level availability is the feature you are selling.
- Contract prices for a customer: cooperative conditions, done once and maintained.
What you're building
A storefront that a painter can reorder from in ninety seconds on a phone, showing the price their cooperative negotiated and the stock at the branch down the road. Behind it: one inventory location per branch fed from the ERP or warehouse system, one price list per buying group with member exceptions, and units that are right from the product page to the delivery note. Orders leave for the ERP with the customer's job reference on every line, and the catalog goes out to customers' trade software as Datanorm or BMEcat.
flowchart LR
ERP["Your ERP / branch WMS"]
COOP["Buying group: annual conditions"]
TRADE["Customer's trade software"]
subgraph IS["Integration Studio"]
WF["Workflows"]
EXP["Export profiles: Datanorm, BMEcat"]
end
subgraph CS["Commerce Studio"]
P["Products with sales units"]
INV["Inventories: one location per branch"]
PR["Price lists per cooperative, member exceptions"]
OL["Order lists and quick order"]
O["Orders with job reference"]
SH["Shipping and pickup"]
end
subgraph XS["Experience Studio"]
SF["Mobile storefront"]
end
ERP -- "stock per branch, by the minute" --> WF
WF --> INV
COOP -- "conditions, once a year" --> PR
SF --> OL
OL --> O
O --> SH
O -- "order" --> WF
WF --> ERP
P -- "catalog" --> EXP
EXP --> TRADE
PROMO["Bundles and promotions (planned)"]:::planned
PROMO -.-> SF
classDef planned stroke-dasharray: 5 5
What you need
- Sales units and packaging units modelled for every family: drum, pack, square metre, running metre — Measurements and units
- Each branch as an inventory location, with stock fed at a cadence the counter can honour — Stock, locations and availability
- The cooperative condition structure as price lists per group, with member exceptions as contract entries — Design your price lists
- Regular customers as organizations with the owner, the foreman and the apprentice as separate contacts — Contacts and roles
- Site delivery addresses per customer, separate from the registered office — Addresses
- A checkout that captures the job or commission reference on the line and offers pickup — Checkout configuration
- An ERP connection for orders out and branch stock in — Connect a system
- A phone in the test plan: every release tried outdoors, one-handed — Pre-launch checks
Build it
- Model units and packaging per family, and check the conversion on ten articles by hand — Measurements and units
- Load contract prices for the members of one cooperative and verify what three of them see — Check which price a buyer sees
- Set up order lists and quick order, then time a seven-line reorder on a phone — Order lists and recurring carts
- Give eight regulars a login each and let the branch manager walk them through it — Move existing customers online
- Create one inventory location per branch and feed stock from the ERP by the minute — Stock, locations and availability
- Add pickup as a shipping method and site addresses per customer — Shipping methods and carriers
- Connect the ERP for orders out, with the job reference mapped to the line — Connect your ERP
- Open the full shop with facets and autocomplete tuned for article numbers — Launch a B2B shop
- Move the cooperative conditions off the spreadsheet: one price list per group, loaded from the ERP — Import prices in bulk
- Build the Datanorm and BMEcat export profiles for the customers whose software wants your catalog — Catalog export profiles
- Turn the weekly consumables of your steadiest customers into order lists, standing orders once the planned surface ships — Build recurring revenue
- Route project business through quotes and call-offs against framework agreements — Automate quote-to-order
Decisions you'll need to make
| Decision | The trade-off | Where most customers land |
|---|---|---|
| Show branch stock, or none? Availability per branch with pickup, one national figure, or no stock at all with a delivery promise. | Branch stock is the feature the trade wants, and it exposes every counting error in every branch. A national figure is simple to build and wrong the first time a customer drives over. No stock is honest and loses the pickup order. | Per-branch availability for the branches whose stock data you trust, fed by the minute, with pickup. Branches that cannot keep the figure accurate show a delivery date instead until they can. |
| How do you model cooperative conditions? One price list per buying group with member exceptions, or one contract price list per member business. | Group lists mean the annual round is a handful of list updates. Per-member lists are exact and turn the annual round into thousands of entries that drift. | One price list per cooperative and product-group percentage, exceptions as contract price entries, loaded from the ERP. Member-level lists only where a member has a genuinely separate agreement. |
| Which unit is orderable? The sales unit (drum, pack, sack) or the base unit with a conversion at checkout. | Sales-unit ordering matches how the trade thinks and needs the packaging modelled per article. Base-unit ordering is simpler to load and produces the 50 m order that arrives as 50 drums. | The sales unit is what the buyer orders; the base unit is stored on the product for the ERP. The conversion lives in the measurement family, never in the customer's head. |
| Is the job reference mandatory? Required on every line, optional but prominent, or captured once per order. | Mandatory annoys the one-line counter order. Optional gets forgotten and the delivery note arrives without it. Per-order fails the crew ordering for two sites at once. | Optional per line, prominent, pre-filled from the customer's last order. The line reference is free text that travels with the order to the ERP; make sure your mapping carries it onto the delivery note. |
| A responsive storefront or a native app? The storefront on a phone, or an app in the store. | The storefront is one build and works the day it launches. An app is a second codebase, a second release calendar and a login the apprentice does not have. | The responsive storefront, tested outdoors. An app comes up only where a customer's trade software already integrates one. |
| Partial deliveries by default? Ship what is in stock and backorder the rest, or hold the order until complete. | Partial by default gets the filler to site today and produces two delivery notes. Complete-only is tidy and leaves the crew waiting for the one missing item. | Partial by default for stocked articles, with the backordered lines shown at checkout. The customer can switch to complete delivery per order. |
Related product areas
- Commerce Studio — Measurements · Locations · Stock levels · Price lists · Segments · Contacts · Order Lists · Cart import/export · Shipping methods · Shipments
- Experience Studio — Sites · Messaging
- Integration Studio — Workflows · Schedules · Import export · Field mapping