Skip to main content
Shopify

How to send the fulfilment and tracking to Shopify from Odoo

When you validate the delivery of a Shopify order in Odoo, the connector can create the order's fulfilment in Shopify with its tracking number, so the order shows as fulfilled in your store. It does it on its own if the store has it switched on or if the delivery already carries a tracking number. Otherwise, one button on the delivery does it.

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

Key facts

Module
Shopify
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

Before you start

  • The delivery has to come from a sale order imported from Shopify and be validated.
  • The products on the delivery have to match the Shopify lines by variant or by SKU.
  • The store's app needs permission to manage fulfilments. Without it, Shopify refuses and the message says so.
  • Shopify does not email the customer unless you switch it on: both notification boxes ship unticked.
Your Odoo doesn't talk to Amazon, Temu or Shopify?
Video: Your Odoo doesn't talk to Amazon, Temu or Shopify?

Step by step

  1. Open your Shopify store form in Odoo, «Operations» tab, «Sync Settings» group.
  2. Tick «Auto Send Fulfillment On Validate» if you want every validated delivery sent on its own. It ships unticked.
  3. For Shopify to send its email to the customer, tick «Notify Customer On Fulfillment» and, for tracking changes, «Notify Customer On Tracking Update».
  4. Decide whether to tick «Archive Shopify order when fully fulfilled», which archives the order in Shopify once it is fully fulfilled from Odoo.
  5. On the delivery, type the tracking number before validating. With a number, the fulfilment goes out even if sending on validation is off.
  6. Validate the delivery. Its «Shopify» group shows the fulfilment ID, the status Shopify returns and the time of the last sync.
Diagram of how a delivery validated in Odoo becomes a fulfilment with tracking in Shopify
What happens on validation, with Odoo's labels: the setting or tracking number check, quantities matched by variant or SKU, the fulfilment in Shopify and, if it fails, the message with the retry link. Diagram built from the module's code.

What triggers the sending

What you do in OdooWhat the connector does
Validate the delivery with sending on validation switched onCreates the fulfilment in Shopify
Validate the delivery with a tracking number, even with sending on validation offCreates the fulfilment with that tracking
Validate with no number and sending on validation offNothing; the «Send Shopify Fulfillment» button stays
Change the tracking number of a delivery already validatedCreates the fulfilment if there was none or updates its tracking
Press «Update Shopify Tracking»Sends the tracking of the existing fulfilment again

How the fulfilment is built

Quantities

The fulfilment carries the quantities delivered on the delivery order, matched with the Shopify order lines by variant or by SKU, kits included. If Shopify already has a fulfilment covering those lines, the connector reuses it and adds the tracking instead of creating another one.

Tracking

You can type several numbers on the delivery, separated by commas, semicolons, spaces or line breaks: they reach Shopify as several numbers. The carrier name Shopify shows is the carrier of the sale order. The tracking link is the delivery's own or the one the carrier provides, and it is only sent when there is a single number.

Fulfilment Funnel report of the Shopify connector in Odoo
The Fulfilment Funnel report in Odoo: count of Shopify orders fulfilled and refunded. Odoo screenshot with demo data.

If something fails

A failure does not undo the validation: the delivery stays validated, the error is stored and shows in a red banner with the «Retry send fulfillment» link. In the delivery list, those rows turn red. These are the messages and what to do about each:

Shopify auto-fulfillment failed: %s
Sending on validation did not go through. Read the reason and press «Retry send fulfillment».
No delivered Shopify-linked quantities found in this picking.
No delivered quantity belongs to a product linked with Shopify. Check the products on the delivery.
No fulfillable Shopify lines matched this picking quantities. Check Shopify variant mapping and remaining fulfillment quantities.
The quantities do not match what is left to fulfil in Shopify, or the variant is not linked.
Shopify denied fulfillment access. Add scopes read_merchant_managed_fulfillment_orders and write_merchant_managed_fulfillment_orders, then re-authorize the app.
The app lacks those permissions. Add them in Shopify and authorise it again.
This picking already has a Shopify fulfillment. Use Update Shopify Tracking.
The fulfilment exists already. Use the other button to send the tracking.
Not sent to Shopify: %s
FlexigoTech Cloud has paused the sending. The delivery stays validated and is not marked as failed.

When you send it with the buttons and it works, the delivery's chatter records it with the fulfilment number.

Does Shopify notify the customer when I ship from Odoo?

Only if you tick the store's notification boxes: one for the fulfilment and another for tracking changes. While they stay unticked, Shopify sends no email.

Is it in every Odoo version?

Yes. The delivery buttons, sending on validation and the tracking update are in the connector published for Odoo 17, 18, 19 and 20.

Keep reading

How to map Shopify taxes to Odoo taxesHow the Shopify connector turns each tax on an order into an Odoo tax, what it does with tax-inclusive prices and what changes when prices and taxes are locked.Shopify alone or Shopify with Odoo: what changes in your day-to-dayComparison for Shopify stores without an ERP: orders, stock, shipping, returns, invoices and payouts, before and after running the store inside Odoo.Stock between Shopify and Odoo: who is in charge? A decision guideGuide to deciding how stock syncs between Shopify and Odoo: pushing from Odoo, reading from Shopify, locations, webhooks and the kind of app you use.
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_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: views/stock_picking_views.xml, models/stock_picking.py
  • Module source code: flexigobe_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: models/stock_picking.py, models/shopify_instance.py, views/shopify_instance_views.xml
  • Module source code: flexigobe_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: models/stock_picking.py (write, _split_tracking_numbers, _shopify_tracking_info_payload)
  • Module source code: flexigobe_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: models/shopify_instance.py (_create_fulfillment_from_picking), models/stock_picking.py
  • Module source code: flexigobe_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: models/stock_picking.py
  • Module source code: flexigobe_shopify_seller_connector · 17.0 2c06264 · 18.0 0272d17 · 19.0 19422d4 · 20.0 2950bdc: models/shopify_instance.py, views/shopify_instance_views.xml, views/menu_views.xml
  • apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector