Three rows, one coffee

Someone quietly drinking a coffee

Three rows come out of the inventory system. Coffee, whole bean, 250 g. Coffee, whole bean, 500 g. Coffee, whole bean, 1 kg. Three article numbers, three prices, three rows in a table.

In the shop, that should become one product. One coffee, with one option for the size. One title, one description, one image.

The work this article is about lives between those two worlds.

Who WeltPartner is

WeltPartner is one of Germany’s leading fair trade organisations. Coffee, tea, chocolate, spices, crafts, sourced directly from partner organisations in Latin America, Africa and Asia. For many years, WeltPartner has supplied world shops and resellers. The truth about articles, prices and stock lives in the inventory system, as it does for most traders with a catalogue that has grown over time.

Fair trade importer since 1988, organised as a cooperative in Ravensburg.

Throughout this complex project, Konekto kept surprising us with solutions that are both brilliant in their architecture and simple and efficient in daily use. Everything ran smoothly up to launch day and beyond. I am thoroughly delighted and look forward to every future collaboration with this team, which is outstanding both professionally and personally.

Konstantin BillDigital Manager and project lead, WeltPartner

What is new is a dedicated shop for end customers, on Shopify. And with it the question of how thousands of articles get from the inventory system into the shop without someone typing them in one by one.

These two systems do not talk to each other on their own. We built them a shared language: a custom Shopify app that lives inside the shop’s admin and receives the data from the inventory system.

Why not an off-the-shelf connector

A plug that does not fit

There are connectors that plug an inventory system into Shopify. For many shops they are enough. Not for this one, for three reasons.

The inventory system delivers articles flat. Every variant is its own row, and nothing in the data says which rows belong to one product. A connector that copies row by row turns one coffee into three products.

Food needs more than a title and a price. Nutrition facts, ingredients, allergens, organic certificates, country of origin, customs tariff number. These fields have to arrive cleanly in Shopify and be updated there again later.

And the most important reason: a shop is curated work. Someone wrote the title, phrased the description, picked the image. An import that overwrites that work on every run is not a sync. It is a risk that someone carries around in the back of their head every day.

Two rules before a line of code

Two people sealing an agreement

Before we started on the integration, we agreed two rules with WeltPartner. Everything else follows from them.

Nothing goes live automatically. A new product always lands in Shopify as a draft. Whether it goes online is decided by a person in the shop, deliberately and on their own schedule.

Existing work is protected. If an article is already in the shop, an update may only touch a few clearly named fields. Title, description, images and category belong to the shop team. The sync never touches them.

These rules sound obvious. In practice they are not, because they mean the sync deliberately does less than it could in many places.

The workbench

New articles from the inventory system first land in a holding pool inside the app. Nothing happens in Shopify yet. The data simply sits there, with every field the inventory system sent along.

Then the app makes suggestions. From the article number it works out which rows probably belong together. From the description it reads what the options might be: 250 g, 500 g and 1 kg become a size, a colour code becomes a colour.

So our coffee shows up as one bundle of three rows, with the detected sizes as little chips next to them.

The app can also build two options at once, say colour and size for a gift box. WeltPartner deliberately uses just one today. Whole bean and ground stay separate products in the shop. That was WeltPartner’s decision, and the app follows it.

Then the person steps in. In the workbench, someone from the team selects the rows, turns them into a product, corrects a title, swaps a detected size, sorts out a row that should not go into the shop. None of this changes the raw data. The workbench is just a layer on top, and you can rearrange it at any time.

When the product is right, one click: it goes to Shopify as a draft, with all variants, prices, EAN codes, weights and the food fields in one go. Anything that already exists in the shop is skipped. No duplicates.

The machine suggests. The person decides. That was the idea, and it is also what the team ends up using every day.

The shortcut for known articles

The coffee is in the shop now. A few weeks later, the inventory system changes the price of the 1 kg pack.

That needs no workbench. The app recognises the article number, finds the product in Shopify and updates the price. Fully automatic, shortly after the inventory system sent the data.

But only the price, and the other fields on a short list: status, stock, availability, minimum stock, the food details. Everything else stays the way the team left it in the shop.

Even within that list, the sync is careful. A price of zero or an empty field never overwrites a real price. An article that becomes inactive in the inventory system is archived in the shop. But an article that becomes active again does not go back online by itself. That stays a decision made in the shop.

You could put it this way: the sync may set, but not delete. It may close, but not open.

A shop that is connected from day one

A shop with parcels in front

Before the project, end customers bought through the same shop as the B2B business, at shop.weltpartner.de. The new shop gives end customers a home of their own on Shopify. The question was how the large catalogue gets there without a team carrying spreadsheets back and forth forever.

So the integration was not bolted on afterwards. It was part of the plan from the start. The inventory system sends its data straight to the app over a signed interface. Known articles update themselves. New articles wait in the workbench until someone has time to assemble them properly. Things go live when the team is ready, not when the import is.

The same app now also handles orders flowing to the inventory system and to fulfilment, and badges like “New” and “Bestseller” in the shop. But that is a story of its own.

Tell us where your shop makes work today

A cup of coffee

An inventory system, a Shopify shop, and someone in between rebuilding spreadsheets: it is one of the most common starting points we see. How we think about shop and integrations together is on our Shopify page.

30 minutes, no slides, a clear assessment. We reply within two working days.