Skip to main content
Octopia (Cdiscount)

How to declare a Cdiscount order's shipment from Odoo

With the Octopia connector, the shipment of a Cdiscount order is declared on its own when you validate the delivery in Odoo, as long as you turn on "Push Tracking on Delivery Validation" on the account. Odoo sends the parcel with the tracking number and the carrier, and the order moves to Shipped. If the order leaves in several boxes, the delivery's "Declare to Octopia" button lets you declare each parcel by hand.

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

Key facts

Versions
Odoo 17, 18, 19 and 20
Checked
in the connector's source code, version 17.0, 18.0, 19.0 and 20.0 · against the sources linked at the end
Reading time
4 min

Cdiscount's terms ask for the shipping confirmation to carry the tracking number. And shipping is measured: the seller commits to a shipping rate of 97.5% or more, and if the seller does not report the shipment once the buyer has validated the order, the order is cancelled automatically and that rate gets worse. That is why the declaration should go out with the delivery rather than depend on someone remembering.

Turn on declaration at validation

  1. Open your account under Octopia › Configuration › Accounts.
  2. On the Automation tab, Outbound Pushes group, tick "Push Tracking on Delivery Validation". It comes unticked.
  3. Save. From then on, every outgoing delivery of an Octopia order that you validate is declared to Octopia.
Automation tab of an Octopia account in Odoo with the Push Tracking on Delivery Validation box
The account's Automation tab: "Push Tracking on Delivery Validation" sits in the Outbound Pushes group and is still unticked here, as it comes. Real Odoo screenshot with the Octopia API simulated.
48 business hours to accept each Cdiscount order. Do it in Odoo
Video: 48 business hours to accept each Cdiscount order. Do it in Odoo

What Odoo sends in each declaration

The automatic declaration sends one parcel per delivery:

DataWhere it comes from
Parcel numberThe delivery's tracking number; if it has none, the delivery's name
CarrierThe Octopia carrier linked to the Odoo one; otherwise the Odoo carrier's name; with no carrier, "Other"
Tracking linkThe carrier's, when it provides one
LinesThe Octopia order lines whose products leave in that delivery, when they are not all of them

With no lines, Octopia treats the whole order as shipped. That is why, on a partial delivery, Odoo sends only the lines of the products that leave.

When Octopia accepts the declaration, it is marked Declared and the Octopia order moves to Shipped. The sync log records it as "Shipment declared for …".

There are two cases Odoo does not declare. A delivery already declared for the same order is not sent again. And orders that are not in seller mode (Seller) are left out, because the fulfilment service ships them.

If the declaration fails

The delivery is validated anyway: the warehouse is never held up by an Octopia failure. The declaration is marked Error, with Octopia's message, and the sync log keeps "Shipment declaration failed for …".

  1. Open Octopia › Orders › Shipment Declarations.
  2. Look for the ones in Error and read the message: it shows the parcel that was sent and what Octopia answered.
  3. Fix what is missing on the delivery, for example the tracking number.
  4. Click "Retry".
Diagram of the shipment declaration to Octopia from Odoo, automatic or with several parcels
The two paths, with Odoo's labels: the declaration when the delivery is validated and the manual one with "Declare to Octopia"; each parcel's data and the Declared and Error states. Diagram built from the module's code.

Declare several parcels by hand

When an order leaves in several boxes, the automatic declaration falls short, because it sends a single parcel. For those cases:

  1. On the validated delivery, click "Declare to Octopia". "Declare Shipment (multi-parcel)" opens.
  2. The first line already carries the delivery's tracking number, or its name, and the carrier.
  3. Add one line per box, with its number, its carrier and its tracking link.
  4. If a box does not hold the whole order, pick on its line the order lines inside it.
  5. Click "Declare to Octopia".

If the carrier is not on Octopia's list, type it in "Carrier (free text)". Octopia accepts it, but the field's help warns that tracking may work less well.

The wizard stops with a clear message when something is missing:

  • Add at least one parcel. when there are no lines.
  • Every parcel needs a parcel number. when a box has no number.
  • Every parcel needs a carrier (mapped or free text). when a box has no carrier.
  • Fulfillment orders ship themselves -- declaring one would be refused (409) by Octopia. when it is a fulfilment order.

Can I declare without a tracking number?

Odoo lets you: the automatic declaration then uses the delivery's name as the parcel number. But for Cdiscount that is not valid tracking. Its terms ask you to confirm the shipment with a valid tracking link and number; otherwise the order counts as not shipped and is cancelled, with a refund to the buyer, when the maximum preparation time runs out. They also forbid giving a wrong tracking number. Add the tracking number to the delivery before you validate it.

Where can I see what was sent?

Under Octopia › Orders › Shipment Declarations. Each declaration keeps the parcels exactly as they went out to Octopia, the date and, if it failed, the error.

Keep reading

Cdiscount cancels the orders you do not accept within 48 hours: what nobody tells youCdiscount's terms require accepting orders within 48 working hours and a 97.5% acceptance rate. What happens if you miss it and how Odoo handles it.How to cancel a Cdiscount order from OdooHow to ask Octopia to cancel a Cdiscount order without leaving Odoo: a reason it accepts, cancelling only some lines, and what Odoo does with the sale and the invoice.How to connect Cdiscount (Octopia) with Odoo, step by stepGuide to connecting Cdiscount and the Octopia marketplaces with Odoo 17, 18, 19 and 20: credentials, sales channel, catalogue, offers, orders and shipping.
Checked in the connector's source code (version 17.0, 18.0, 19.0 and 20.0) and the linked sources

Sources

  • Module source code: flexigobe_octopia_connector · 17.0 6c9bfab · 18.0 aff6741 · 19.0 d15e273 · 20.0 27d9c64: models/octopia_account.py (auto_push_tracking), models/octopia_order_actions.py (button_validate, _declare_for_picking)
  • Module source code: flexigobe_octopia_connector · 17.0 6c9bfab · 18.0 aff6741 · 19.0 d15e273 · 20.0 27d9c64: models/octopia_order_actions.py (_carrier_label, _build_parcels, _send_declaration); docs.47 de hechos/octopia.json (POST /orders/{orderId}/shipments, sin orderLineIds se envía el pedido entero)
  • Module source code: flexigobe_octopia_connector · 17.0 6c9bfab · 18.0 aff6741 · 19.0 d15e273 · 20.0 27d9c64: models/octopia_order_actions.py (octopia.shipment, action_retry), views/octopia_order_actions_views.xml
  • Module source code: flexigobe_octopia_connector · 17.0 6c9bfab · 18.0 aff6741 · 19.0 d15e273 · 20.0 27d9c64: wizard/octopia_shipment_wizard.py, views/octopia_completeness2_views.xml
  • marketplace.cdiscount.com/wp-content/uploads/2025/08/2025.08.25-CGMAD-FR.pdf