Skip to main content
Beauty and health · Germany

Selling beauty and health products on Douglas and Shop Apotheke from Odoo: what the product demands before the API does

We have no published connector for Douglas or Shop Apotheke, and it is worth saying first. What decides whether selling there from Odoo works is not the API: it is batches, expiry dates, what may be sold in each country and the data the listing demands.

Product catalogue in Odoo with its references and stock levels

If you landed here looking for a Douglas or Shop Apotheke connector for Odoo, the short answer comes first: we have no published connector for either. What we can tell you is where these projects get stuck, and it is almost never the API. With beauty and health products, the product carries its own obligations: batch number, expiry, rules per country and listing data your own shop never asked for. If that is not right in Odoo, no middleware will fix it.

First: which integration route the operator offers

Before pricing anything, you need to know how the operator receives your offers and sends orders back. There are three cases. If its marketplace runs on Mirakl, our connector covers the base and the operator profile is what is missing, as we did for Superdrug, another health and beauty operator (why one connector serves many operators: Mirakl and Odoo). If you already work with an aggregator such as ChannelEngine and the operator is in its catalogue, you go in that way. If there is a proprietary API or only file uploads, it is custom development. We never assume an operator's technology: it is confirmed against its onboarding documentation.

Batches and expiry dates: Odoo has it, but switch it on first

A cosmetic product needs a batch number by law and, if it lasts 30 months or less, a date of minimum durability. Odoo handles both out of the box, Community included: lot tracking, expiry dates per lot and the FEFO removal strategy, which ships whatever expires first. The hard part is switching it on with a full warehouse: every unit on the shelf needs a batch, and that means a physical stock count, reference by reference. Do it before opening the channel, not with orders coming in.

The stock you publish is not the stock you own, but the stock with enough shelf life left. If an operator demands a minimum remaining shelf life on delivery, units that fall short stay out of the offer, even if they are on the shelf. Odoo stores a removal date per lot, but does not take it off available stock by itself: the integration has to.

Traceability: the question arrives on recall day

Nobody looks at traceability until a manufacturer recalls a batch. On that day you have hours to answer who bought it, through which channel and under which marketplace order number. In Odoo the answer comes from the lot's traceability report, provided the batch was recorded at picking and not afterwards, from memory. That requires barcode scanners at picking and the operator's reference stored on the Odoo order. Without that, traceability exists on paper, not in the data.

Country restrictions: legal at home is not always legal in Germany

In Germany, pharmacy-only medicines can only be sold by a licensed pharmacy. What is left for an outside seller is cosmetics, food supplements and medical devices that do not require a pharmacy, and each family has its own rules. Supplements must be notified to the German authority no later than when they first go on sale, and permitted botanicals are not harmonised across the EU: what sells elsewhere in the EU may not pass there. Perfumes contain alcohol and travel as dangerous goods, which narrows your choice of carrier. In Odoo you model this with product attributes that block publication per country or channel. Better your ERP stops it than an operator rejection or an Abmahnung, the formal warning letter competitors and associations routinely send in Germany.

Listing data: what your own shop never asked for

A cosmetics listing on a German marketplace needs far more than title, photo and EAN: INCI ingredients, nominal content, unit price (the Grundpreis under German pricing rules), warnings in German, and the name and address of the manufacturer and, if it sits outside the EU, of its responsible person in the EU, which the General Product Safety Regulation requires in the online offer. To sell to consumers in Germany, your company must also be registered in LUCID, the German packaging register. If that data lives in a spreadsheet next to Odoo, every new listing is error-prone copy and paste: it has to be fields on the product.

When you do not need a connector

With few references, low volume and an operator that accepts file uploads through its portal, that is enough: Odoo exports the file and orders are keyed in by hand in minutes. Automation pays off when typing orders, updating stock and uploading tracking eats hours every week, or when a stock error has already cost you a penalty. And if regulation is what holds you back — responsible person, notification on the EU cosmetics portal (CPNP), packaging registration — no software solves that: it is work for your regulatory adviser, not for us.

What we do

Two things, on Odoo 17, 18 and 19. First, getting Odoo ready for the sector: batches, expiry dates, FEFO, regulatory data on the product and publication blocked per country. That serves any channel, not only these two. Second, the custom integration with the operator: starting from our Mirakl connector if its marketplace runs on Mirakl, or building against its API or files if not. What it costs depends on that route, on how many categories and attributes the operator demands and on whether the batch has to travel all the way to it.

Frequently asked questions

Do you have a Douglas or Shop Apotheke connector?

Not a published one. It is built to order depending on the integration route each operator offers; if it is Mirakl, we start from our Mirakl connector and the job is considerably smaller.

Isn't a middleware enough?

It may be, if you already pay for one and it covers the operator. But a middleware moves orders and stock: batches, expiry dates and country restrictions still have to be right in Odoo, because the middleware only copies what Odoo gives it.

Can a seller that is not a pharmacy sell medicines on a German pharmacy marketplace?

Not pharmacy-only medicines: in Germany only a licensed pharmacy may sell them. Which categories each operator accepts is set by its contract; confirm it with them before preparing the catalogue.

Useful links inside FlexigoTech

Custom integrationsAgainst the operator's API or files when there is no published connectorMirakl connector for OdooThe base if the operator runs on MiraklSuperdrug profile for the Mirakl connectorA health and beauty operator, already published

Selling cosmetics or health products and aiming for Douglas or Shop Apotheke?

Tell us which operator, how many references and whether you already track batches in Odoo. We will tell you which integration route makes sense and what the product needs before you apply. Write to comercial@flexigobe.com or book a call.

Talk to an engineer