Skip to main content
iVentureTeam
Home Case StudiesConfidential — eCommerce retailer
Odoo · AfterShip Integration

686-Courier Tracking, Auto-Synced Into Odoo Sales & Purchase

A retailer chasing parcels across carrier websites now watches every outbound and inbound shipment update itself inside Odoo, thanks to a two-way AfterShip integration built by iVentureTeam.

686
couriers trackable through AfterShip
4
Odoo versions supported (v10–v13)
2
flows automated: outbound sales, inbound purchases
0
carrier portals to check manually
Region
United States
Duration
5 weeks · delivery
Industry
eCommerce & Logistics
Tech Stack
Odoo 10Odoo 11Odoo 12Odoo 13Odoo SalesOdoo PurchaseOdoo Inventory (Delivery Orders)AfterShip APIOdoo Scheduled Actions

The challenge

The retailer's shipments crossed dozens of couriers, and Odoo knew nothing about any of them after the delivery order was validated. Support staff played detective across carrier websites while purchasing had even less visibility on inbound stock.

  • Tracking numbers lived in emails and carrier portals, not on the Odoo delivery order, so "where is my order?" meant a manual hunt.
  • Shipment statuses in Odoo went stale the moment a parcel left the dock — nothing updated them.
  • Inbound purchase-order shipments from vendors had no tracking linkage at all, leaving receiving dates to guesswork.
  • With couriers numbering in the hundreds globally, per-carrier integrations were never going to be maintainable.

Our approach

iVentureTeam used AfterShip as the single tracking layer and wired Odoo to it in both directions — a productized module for the sales flow and a custom-built extension for the purchase flow.

Outbound: Sales module integration

  • Confirming a sale generates the delivery order; the user sets the courier on that record as usual.
  • On delivery validation, Odoo creates the tracking entry in AfterShip with the courier and tracking number — no separate registration step.
  • Built and packaged across Odoo 10, 11, 12, and 13 so the client (and future users) are not locked to one version.

Inbound: custom Purchase module extension

  • Confirmed purchase orders go to the vendor as normal; when the vendor ships, their AfterShip tracking info is recorded against the matching PO in Odoo.
  • Procurement sees inbound shipment progress on the same screen they manage the order from — a customization built specifically for this client's replenishment flow.

Status sync engine

  • An Odoo scheduled action polls AfterShip periodically and writes the latest checkpoint state onto each tracking record.
  • Both sales and purchase tracking records refresh through the same job, keeping one consistent source of shipment truth.

Outcomes

Tracking became something Odoo does, not something people do. Every parcel — customer-bound or vendor-bound — reports its own status into the ERP.

  • Customer service answers delivery questions from the Odoo record instead of visiting carrier sites.
  • Purchasing plans receiving around live inbound tracking rather than vendor promises.
  • One integration covers 686 couriers, eliminating the need for per-carrier connectors as the business adds shipping partners.
  • Support time spent on shipment-status inquiries dropped noticeably after go-live.

Customers stopped emailing 'where is my order' — tracking updates flow into Odoo and out to them automatically, across every courier we use.

Customer Service Lead · eCommerce retailer

Ready to write your own case study?

A free 30-minute consultation with a senior consultant — diagnostic, fixed-price quote, written roadmap.

Get our monthly Odoo & automation digest

One short email per month with practical insights, version updates, and field-tested tips. No fluff, unsubscribe anytime.