Amazon tracking not sending from Odoo: why it happens and how to fix it
You validate the delivery in Odoo, the order shows as "delivered" in your system, but on Amazon Seller Central it's still "pending shipment" with no tracking number attached. Here's the real technical cause and how to close that gap.
Written by engineers in Barcelona. No empty promises.
The exact symptom
This is what an FBM (Fulfilled by Merchant) seller running Odoo typically reports:
- The order comes into Odoo from Amazon, gets picked, and the delivery is validated (
stock.pickingmoves to done). - In Odoo the order shows as delivered, but on Seller Central it's still "Unshipped".
- No tracking number shows up in the order detail on Amazon.
- Sometimes Amazon throws a warning: "Confirm shipment to avoid order cancellation" or your Valid Tracking Rate drops.
If this sounds familiar, the problem is almost never the delivery itself. It's that nothing is calling Amazon's API to confirm the shipment.
The 4 real causes
Validating a delivery in Odoo only changes a status in your own database. It doesn't trigger the confirmShipment operation on the Orders API / Fulfillment SP-API. Without that call, Amazon has no way of knowing you shipped.
Amazon requires a CarrierCode from its own list (UPS, DHL, etc.) or a free-text CarrierName. If the delivery's carrier isn't mapped, confirmation fails with "Invalid carrier code" even when you have the tracking number.
Without a carrier connector, the delivery's tracking field is empty. You never generated the carrier's label, so there's nothing to send Amazon. A made-up tracking number or your internal order number won't work.
An expired LWA token, a misconfigured IAM role, or the wrong marketplaceId (e.g. using Spain's A1RKKUPIHCS9HS against an order from a different marketplace). Returns 403 Unauthorized or InvalidInput.
The correct flow (how it should work)
When everything is wired up, an FBM order's lifecycle in Odoo looks like this, with no manual typing:
- The order comes down from Amazon into Odoo as a
sale.orderwith its delivery. - The warehouse operator validates the delivery. The carrier connector (Correos Express, MRW…) calls the carrier, generates the label, and returns the tracking number to the
carrier_tracking_reffield. - The Amazon connector picks up the validated delivery with tracking, maps the carrier to the right
CarrierCode, and callsconfirmShipmenton the SP-API. - Amazon marks the order as "Shipped", emails the buyer, and records the tracking. Your Valid Tracking Rate stays healthy.
The key is that you need two pieces talking to each other: the one that generates the tracking (carrier) and the one that confirms it (marketplace). If you only have one, the flow breaks at step 2 or step 3.
How to fix it, step by step
- Check whether the delivery has a tracking number. If the field is empty after validating, you're missing the carrier connector. Install the one for the carrier you use (for example, Correos Express or MRW) so the number is generated automatically.
- Review the carrier mapping. In the Amazon connector, every carrier used in Odoo needs to map to a
CarrierCodeorCarrierNamethat Amazon accepts. A blank mapping causes the "Invalid carrier code" error. - Verify your SP-API credentials. A valid LWA token, an app authorized with the right role, and a marketplaceId that matches the order's marketplace. A 403 is almost always this.
- Check the connector's logs. A serious connector logs every
confirmShipmentcall along with Amazon's response. That's where you see whether the confirmation went through, failed, or was never attempted. - Automate confirmation on validation. The goal is for shipment confirmation to be a side effect of validating the delivery, not a separate task that gets forgotten and hits your Late Shipment Rate.
What if I only need tracking, without touching the carrier?
Let's be honest: there are two scenarios, and it's worth knowing which one you're in.
We won't sell you two modules if one covers you. Tell us your flow and we'll tell you what you actually need.
Manual confirmation in Seller Central vs. automating
While you decide, the fastest option is confirming the shipment by hand in Seller Central: open the order, click Confirm Shipment, pick the carrier, and paste the tracking number. It works, but it has a cost. Here's the honest comparison:
| Criterion | Manual in Seller Central | Connector in Odoo |
|---|---|---|
| Time per order | 1-2 min copying and pasting between systems | 0 · fires when the delivery is validated |
| Risk of forgetting | High during volume spikes, hits your Late Shipment Rate | Low · doesn't depend on remembering |
| Typing errors | A mistyped tracking number invalidates the Valid Tracking Rate | None · the carrier's exact number travels through |
| Cost | Free, but it costs your time every day | One-time module payment |
| When it pays off | Few orders a day and stable volume | Growing volume or several marketplaces |
If you ship 5 orders a day, the manual method probably works fine and you don't need to spend anything. Once you pass 20-30 or add more channels, copying and pasting stops being sustainable and one missed confirmation costs you account metrics. That's where a connector pays for itself.
Close the gap between Odoo and Amazon
The Amazon connector for Odoo confirms the shipment and sends the tracking number as soon as you validate the delivery. Compatible with Odoo 17, 18 and 19.
See the Amazon connector for OdooFrequently asked questions
Why doesn't validating the delivery send tracking to Amazon?
Validating a delivery only changes the status in your Odoo database. There's no automatic call to Amazon's SP-API confirmShipment operation unless a connector triggers it. Without that call, Amazon receives neither the carrier nor the tracking number.
Do I need a carrier connector as well as the Amazon one?
Only if you want the tracking number to be generated automatically. The carrier connector creates the shipment and returns the tracking number to the delivery; the Amazon one confirms it. If you already generate tracking another way, the Amazon connector alone is enough.
What's the risk if I confirm late?
Amazon tracks Late Shipment Rate and Valid Tracking Rate. Confirming late, or without valid tracking, degrades those metrics and can affect the Buy Box or even your account. That's why the confirmation should fire automatically on validation.
Does this work for FBA or only FBM?
The tracking problem only exists in FBM/MFN, where you're the one shipping and confirming. In FBA, Amazon handles it. Our connector is built for the FBM flow.
Ready to fix it?
Does your flow mix several carriers or marketplaces? We'll build it to measure with custom Odoo development.