All posts
Functional4 min read

Tracking Multi-Step Deliveries in Odoo Sales and Inventory

Monitor the full delivery journey in Odoo - from pick, to pack, to ship - with real-time status updates on sale orders and customer portal visibility for each delivery step.

Multi-Step Delivery Tracking in Odoo#

For 3-step delivery warehouses (Pick → Pack → Ship), tracking the status of each step on the sale order gives operations and customer service real-time visibility without manual status updates.

Prerequisite: 3-Step Outgoing Shipments#

Inventory → Configuration → Warehouses → [Warehouse]:

  • Outgoing Shipments: 3 steps (Pick + Pack + Ship)

Odoo creates three operations types: Pick, Pack, and Delivery Order (DO).

Sale Order Delivery Status#

On the confirmed Sale Order:

  • Delivery button (top right): shows count of linked transfers
  • Click → view all three transfers and their statuses:

- Pick Transfer: WH/Stock → WH/Packing Zone (Waiting / Ready / Done)

- Pack Transfer: WH/Packing Zone → WH/Output (Waiting / Ready / Done)

- Delivery Order: WH/Output → Customer (Ready / Done)

When all three are validated: the delivery button shows "Done" and the SO delivery status is "Fully Delivered."

Tracking Status from the Sale Order#

Each transfer shows:

  • Scheduled Date: when it should be completed
  • State: Waiting, Ready, In Progress, Done
  • Responsible: who is assigned (warehouse staff)

Customer service can check the SO delivery section without needing access to the warehouse operations view.

Partial Deliveries#

If only 80 of 100 ordered units are available:

  • The pick transfer ships 80 → a backorder is created for the remaining 20
  • The SO shows: Partially Delivered
  • Customer receives a partial shipment + notification
  • When the remaining 20 become available: the backorder completes automatically

Carrier Tracking Integration#

For the final Delivery Order step, integrate a carrier:

Inventory → Configuration → Delivery Carriers → [Carrier] → API Integration

After validating the DO:

  • Odoo calls the carrier API → generates a tracking number
  • Tracking number appears on the DO and the SO chatter
  • Customer portal shows the carrier tracking link

Supported carriers: FedEx, UPS, DHL, USPS, and local carriers via third-party connectors.

Customer Notification at Each Step#

Configure email templates per operation:

  • After Pick: no customer notification (internal)
  • After Pack: "Your order is being prepared"
  • After Ship (DO validated): "Your order has shipped - Track: [link]"

Email templates: Inventory → Configuration → Settings → Email Templates per Operation Type.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free