The challenge
The retailer sold through Odoo but shipped through a browser tab. Every order meant leaving the ERP to rate-shop carriers, buy a label, and paste tracking numbers back by hand — a process that does not survive volume.
- Shipping costs were estimated at quote time and reconciled later, so orders regularly shipped at a loss or with padded rates.
- Labels and tracking numbers were created outside Odoo and re-keyed manually, introducing delays and typos on every shipment.
- The Odoo eCommerce checkout could not show real carrier options, forcing flat-rate shipping that mispriced international orders.
- Comparing 50+ carriers by hand was impossible, so the cheapest or fastest service was rarely the one actually booked.
Our approach
iVentureTeam built a two-part Shippo integration for Odoo 12 — one module for the Sales workflow, one for the eCommerce website — so both back-office staff and online shoppers work from live carrier data.
Shippo in the Odoo Sales workflow
- API token configuration connects the client's Shippo account to the Odoo instance in minutes.
- Product records carry height, length, width, and weight so rate requests reflect the real parcel.
- Sales orders compute delivery pricing from order lines and destination, adding shipping as its own SO line.
- Validating the delivery order creates the shipment in Shippo and pulls the tracking number and downloadable label straight into Odoo.
Carrier selection at website checkout
- Shippo publishes as a shipping provider on the Odoo eCommerce site, exposing every service configured in the client's account.
- Shoppers choose their preferred carrier at checkout and the exact cost is added to the order before payment.
- Downstream flow — order confirmation, delivery order, label, tracking — reuses the same engine as the Sales module.
Tracking kept current
- Shipment status is checkable from Odoo, with tracking history synced against the Shippo record.
- Both modules were packaged as installable Odoo apps, so upgrades and reinstalls stay clean.
Outcomes
Shipping moved from a side process into the order flow itself. The team stopped re-keying carrier data, and customers started choosing — and paying for — exactly the service they wanted.
- Every validated delivery produces its label and tracking number without leaving Odoo.
- Quoted shipping now matches billed shipping, ending margin leakage from flat-rate guesses.
- Access to 50+ carriers lets the business pick the best service per shipment, domestic or international.
- Checkout conversion improved once shoppers could see real carrier choices and costs upfront.
“Shipping went from our slowest step to a non-event. Live carrier rates at checkout and labels printed straight from the sales order.”
Fulfillment Manager · eCommerce brand
