Nimad BV

One system.
The sites are the channels.

For the Nimad group I am building the system everything runs on: products, prices, suppliers, quotes and orders in one place. The sites are its channels. Promotiemiddelen.com is the first channel live on it. What you see on a product page there is the visible tip of an order system.

Product page on Promotiemiddelen.com with the price breakdown block: item times quantity, printing with number of colours, setup costs, total and price per piece
30,000+
Products in the system
260,000+
Variants, from 52 suppliers
17,643
Items live on the site
13,667
Of which with a print preview
The challenge

Separate sites, a rented
back office, scattered product data.

The group had about ten separate sites, each with its own hosting and its own management. Promotiemiddelen.com was one of them: a lead generator on an outdated theme, with a dead link to an order system from 2018.

The back office ran entirely on an external package rented per environment — customers, products, stock, purchasing, the chain from quote to invoice, plus the customer environments. In August 2026 the decision was made to phase that package out and to run the order system and the customer environment ourselves.

The product data was scattered. The catalogue source provides the structure; the prices come from separate supplier lists and have to be matched per variant. Every supplier uses its own classification. All product attributes were in one heap: the same colour appeared in thousands of spellings and five languages. You cannot filter on that.

The model is not new. I drew it back in 2018: one central order, product and supplier system for all the group's sites. I deliberately left the old system in place and started again — with a backbone behind the sites, so each site keeps its own front end and can move over site by site.

The system

Five layers.
One place where the truth lives.

Blueprint-style illustration: one central vault with connecting lines to smaller shop shapes around it
Layer 1

The system of record

Mercuris holds the truth about product, price, supplier, quote, order and invoice. Who can see and do what is set in six roles: admin, price manager, sales, field sales, purchasing and finance. From the first phase it is ready for a second brand, so that adding one later is not a rebuild.

Layer 2

One variant, several sources

The canonical unit is the variant, identified by its EAN. One variant can carry several supplier offers, so no single supplier is the master catalogue. The import contract is four rules: match or create on EAN, keep the raw source record, normalise to canonical fields, attach the offer. Record everything and only then map — never throw anything away.

Layer 3

Price, with the origin of every price

A price here is the item plus the printing. There are 21 printing techniques on the site, from pad printing and laser engraving to embroidery, doming and sublimation. Each technique has its own matrix: size, quantity tier, price per piece and setup costs per colour. For every price, where it comes from is recorded. The selling prices themselves go to Coen and Erwin for approval — that decision does not belong in software.

Layer 4

The site as a channel

Promotiemiddelen.com is a renderer on one feed from the system. The site has no truth of its own: it shows what the system supplies and sends requests back. That is why a second channel does not mean a second administration.

Layer 5

Quote, approval and the customer file

A request lands as a draft quote, with real items and the chosen printing attached. Then the chain does the work: quote, release, approval link, order. Alongside it there is one customer system for three operating companies, with the brand as a dimension instead of a separate environment.

The boundary

Every fact has one home

The order system is the truth about product, price, quote, order and invoice. The customer system is the truth about the customer relationship. That boundary is on paper before it is in code — otherwise you grow two half administrations.

The first channel

The price breakdown
is open on the page.

Every product page shows “Uw prijsopbouw” (your price breakdown): a line for the item times the quantity, a line per printing with the number of colours, the setup costs, the total and the price per piece. All excluding VAT. And below it, what does not happen: you are not committing to anything yet, a quote follows within one working day of the request, and nothing is printed until the proof is approved.

The price breakdown block on a product page: 250 times item, 250 times pad printing in one colour, setup costs, total and price per piece, excluding VAT
As it currently appears on promotiemiddelen.com.

The same lines will appear in that quote. That is not a promise but a consequence of layer 3: it is the same calculation, from the same source.

Print preview

The logo on the item,
without a photo shoot.

You choose a print area — with its maximum size shown — upload your design and see it inside the frame on the product image. Dragging and scaling happen entirely in the browser, without a single call to the server. Without JavaScript, choosing the position and uploading still work.

Not a single photo was taken for it. The print area is data: a model reads the frame the supplier marks on its own image, and a colour reading is the free second opinion. Right now 46,438 print areas are recorded, and 13,667 of the 17,643 items on the site have a preview that can be shown.

Two thresholds were adjusted after a trial sent well over half to manual review without reason. The lesson is worth keeping: a second opinion that is often wrong does more harm than no second opinion.

Finding

Filters that count what they return.

Brand, colour, price per piece, material, printing, number of colours in the logo, desired quantity, country of origin and price type. Every option shows how many items it returns, counted with the other filters on but without counting itself. Options that return zero disappear. Everything works without JavaScript, can be combined and cleared in one go.

Category page for printed pens with the filter row: brand, colour, price per piece, material, printing, colours in the logo, quantity, country of origin and price type

The move from the old site was mapped and checked: 6,783 old addresses, full coverage, and no intermediate step — every old address lands on its new page in one go. On production all 6,783 were requested, with no deviation and no 404. There is a reason so many had to move: the old site ran on a product range from roughly ten years ago, and most of the old product addresses had long had no item behind them. Anything without a product was sent to the best-matching category, using the keywords in the product names.

Measured

What I can point to.

Accessibility: axe-core across twelve pages at two screen widths, zero violations; in a later round across nine pages, eighteen times zero again. The configurator works with the keyboard and without JavaScript, and that was tested per product page. On Lighthouse mobile (measured on 22 August 2026, median of three runs) home, category and product scored 91, 76 and 92 on performance, and all three scored 100 on accessibility, best practices and SEO. That 76 is variance: the same page scored 1.7 seconds in one run and well over seven in two runs. I would rather give the number with that explanation than not at all.

Measuring only happens after a yes. The analytics tag loads only after consent, and before that consent nothing goes to Google — checked on production, not assumed. The choice is stored in a cookie for a year and can be changed via the footer.

Product safety information is on every product page: seller, item and item number always, quality marks where they are known. One rule guards it: only supplier data that is confirmed and complete goes into the feed. If that confirmation is missing, the page honestly states that Nimad will request it and send it with the quote. Because here too the gap is at the source: the entire source catalogue contains three manufacturers and zero products with a safety attribute. The mechanism is in place, the register fills up as suppliers confirm — and the judgement on whether that meets the regulation lies with Nimad, not with me and not with the software.

Under construction

What is not there yet.

I call it that because it has not been signed off yet. The customer environment that grows with the customer — reorderable quote lines and their own order history, in two sizes — has been built and run on a throwaway database. Not a single login has been created yet and no one has been invited. That environment first has to meet the bar of the current rented package, and then one pilot customer moves over, with the old system alongside as a safety net.

The chain from quote via approval link to order without retyping has been run once from start to finish: a quote sent, a click on the approval link, and an order that created itself with the right source and status. That is proof of build, not delivery. Until the run-through with the test customer is complete, it stays under construction. The yardstick is less than five minutes of manual work between a request and a sent quote.

Stock and delivery times are not on it yet, and that is a choice. The source catalogue lists zero stock for every product and has no delivery-time field. Without an answer from the suppliers, every delivery date on the site is a guess, and I won't put a guess there.

And then the other channels on the same system. The pipeline per site is the same every time: bring it under version control, staging, rebuild, redirect plan, production, and then keep watching in Search Console.

How I got here

Twenty years in this trade,
and then starting again.

In 2003 I started Merchandise.nl: promotional clothing, printed shirts, corporate gifts. In 2009 I won the ZIBB Business Challenge and was named the Most Creative Entrepreneur in the Netherlands. Around 2020 that company went bankrupt.

What remained was the knowledge of this trade: how a quote comes together, where a print proof goes wrong, what a customer reorders two years later. In 2018 I drew the system that followed from it. Since 2026 I have been building it for real.

How I build business systems

One place where
the truth lives.

Channels that connect to it, and numbers I can point to instead of promise. If you recognise your own business in this, I will build it for you too.

Plan a discovery session
Live channel
promotiemiddelen.com
Items on the site
17,643
Printing techniques
21
Old addresses moved
6,783, in one hop
The series

Every part
gets its own story.

How the catalogue is put together, why the price on the product page is the same as on the quote, how a print preview comes about without a photo shoot, and how you move thousands of old addresses without losing traffic.

Business
6 April 2026

Gastrique: why I built my own CRM

Twenty years of merchandise experience, thousands of cold calls, and the frustration of CRM systems that don't fit. So I built my own.

All articles