Skip to main content
Mirakl

How to map Mirakl categories and attributes in Odoo, step by step

To publish products on a Mirakl marketplace from Odoo, you tell the connector which operator category each product belongs to and which values fill its mandatory attributes. It is done in the Catalog menu in this order: dictionary, categories, attributes and value lists, mapping, export and a check of the validation.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 3 November 2026

Key facts

Module
Mirakl
Versions
Odoo 17, 18, 19 and 20
Checked
in the connector's source code, version 20.0 · against the sources linked at the end
Reading time
3 min

Each Mirakl operator has its own category tree and attributes. What Leroy Merlin names one way, Decathlon asks for another way. The connector, published for Odoo 17, 18, 19 and 20, downloads that dictionary and lets you match your catalogue to it once.

The steps

  1. Register the marketplace under Mirakl › Configuration › Marketplaces with its API URL and its key.
  2. Wait for the first catalogue dictionary sync. The task repeats every 60 minutes and leaves the operator's categories under Mirakl › Catalog › Categories.
  3. Check under Catalog › Attributes which attributes are mandatory in the categories you will use.
  4. Open Catalog › Value Lists for attributes that only accept closed values, such as colours or materials. Your Odoo value must match one on the list.
  5. Under Catalog › Category Mapping, assign each of your product categories to the operator's category.
  6. If you ship yourself, relate your carriers to the marketplace's under Catalog › Carrier Mapping.
  7. Export the catalogue. The task runs every 30 minutes and you can also launch it by hand.
  8. Check the state of the last export and the validation of each product before exporting offers.
Category tree of a Mirakl operator downloaded into Odoo
The operator's categories, as the connector downloads them. Odoo screenshot with Leroy Merlin data downloaded by the connector.
Same stock on every Mirakl marketplace, sent from Odoo
Video: Same stock on every Mirakl marketplace, sent from Odoo

The states you need to read

Every catalogue export leaves a state: pending, success, error or unknown. Each product also has its validation state: not checked, OK, warning or error. A warning still lets you publish, but it usually means an empty optional attribute the operator uses for filters. It is worth filling in.

Offers work the same way. The last offer export shows its result, and each offer carries Mirakl's state code: 11 for active and 12 for inactive.

List of a Mirakl operator's attributes with their type and whether they are mandatory
The operator's attributes: data type and whether they are mandatory. Odoo screenshot with Leroy Merlin data downloaded by the connector.

Typical errors and how to fix them

MessageWhat it meansWhat to do
Catalog validation failed: …The operator rejected one or more products. What follows the colon says which one and why.Fix the attribute it points to and export again.
No catalog import id found yet. Export catalog first.You asked for the result of an import that does not exist yet.Export the catalogue and wait for Mirakl to return the import number.
No import id found yet. Export the offer first.The same, for offers.Export the offer before checking its result.
Selected category does not belong to this wizard.In the wizard you picked a category from another marketplace.Open it again from the right marketplace.
Mapping between Odoo categories and Mirakl operator categories
The category mapping: yours on the left, the operator's on the right. Odoo screenshot with Leroy Merlin data downloaded by the connector.

When to export offers

Only once the product is validated. Offers are exported every 5 minutes, but an offer for a product the operator has not accepted stays inactive even with price and stock. If you see many inactive offers in the list, the problem is almost always one step earlier, in the catalogue.

When you add a new operator, repeat the mapping only for its categories: what you already mapped for another marketplace is kept, because each operator stores its own.

The records under Configuration › Logs keep every call to Mirakl. If an error makes no sense on screen, the operator's full answer is there.

Keep reading

A Mirakl order in Odoo, from purchase to payoutTimeline of an order from a Mirakl marketplace inside Odoo 17, 18, 19 and 20: acceptance, shipping, tracking, return, invoice and settlement.Example: a manufacturer selling on several Mirakl marketplaces with spreadsheetsExample case of a manufacturer selling on several Mirakl marketplaces with spreadsheets, and what changes when everything moves into Odoo with the connector.
Checked in the connector's source code (version 20.0) and the linked sources

Sources

  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): views/menu_views.xml
  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): data/ir_cron_data.xml
  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): models/mirakl_catalog_binding_mixin.py
  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): models/mirakl_offer_binding_mixin.py
  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): models/mirakl_product_binding.py
  • Module source code: flexigobe_mirakl_connector 20.0 (83e54909): models/mirakl_category_search_wizard.py
  • apps.odoo.com/apps/modules/20.0/flexigobe_mirakl_connector