TL;DR
Steps to configure
Routes available
Faster fulfillment
- Multi-step routes chain operations: Pick, Pack, Ship
- Push/pull rules automate warehouse workflows
- Configuration takes 15 minutes with this guide
Odoo's multi-step routes are one of the most powerful features for warehouse operations, yet they confuse even experienced implementers. When configured correctly, a sales order automatically triggers a chain of internal transfers: pick items from shelves, move them to a packing area, then ship to the customer. When configured wrong, intermediate transfers never appear, and warehouse staff are left wondering why their pick lists are empty.
This guide walks through the complete configuration of multi-step routes in Odoo, from enabling the feature to debugging common issues. By the end, you will have a working Pick-Pack-Ship flow and understand how push and pull rules drive the automation.
What Are Multi-Step Routes in Odoo?
A route in Odoo defines the path a product takes through your warehouse. A simple route might be "Receive into Stock, then Ship to Customer." A multi-step route adds intermediate steps: "Receive into Input Location, move to Quality Check, then Stock, then Ship."
Routes are built from rules. Each rule specifies a source location, a destination location, and an action (pull, push, or buy). When Odoo processes a delivery order, it evaluates the applicable rules and generates the necessary transfers automatically.
For a 3-step delivery (Pick + Pack + Ship), Odoo creates three transfers:
- Pick: Move goods from Shelf to Packing Zone
- Pack: Move goods from Packing Zone to Output
- Ship: Move goods from Output to Customer
Each transfer appears as a separate delivery order in the Inventory app, allowing different teams to work on different stages simultaneously.

Step 1: Enable Multi-Step Routes
Before configuring routes, you must enable the feature in Odoo settings.
- Navigate to Inventory app, then Configuration and Settings
- Find the Warehouse section and check Multi-Step Routes
- Also enable Storage Locations if not already active
- Click Save
Once enabled, you will see new fields appear on product forms, warehouse configurations, and operation types. The setting unlocks the Routes tab on product templates and the route configuration menu under Configuration.
Note: If you do not see the route options on products after enabling the setting, verify that the product type is set to "Storable Product." Routes do not apply to consumable or service products.

Step 2: Configure Your Warehouse Operations
Odoo ships with pre-built 3-step delivery routes, but you need to verify your warehouse is configured to use them.
- Go to Inventory, Configuration, Warehouses
- Open your warehouse and check the Delivery Steps field
- Select "Pick + Pack + Ship (3 steps)" from the dropdown
- Save the warehouse configuration
When you select the 3-step option, Odoo automatically creates the necessary operation types (Pick, Pack, Ship) and configures the internal locations (Input, Output, Packing Zone). You can review these under Inventory, Configuration, Operation Types.
Each operation type has its own sequence, responsible team, and picking type. Make sure the sequence numbers are logical so transfers appear in the correct order on the dashboard.
Step 3: Assign Routes to Products
Even with the warehouse configured, products must have the correct route selected to trigger multi-step transfers.
- Open a product form in the Inventory or Products app
- Go to the Inventory tab
- Find the Routes section
- Check the "Pick/Pack/Ship" route
- Save the product
You can assign routes at the product category level for bulk assignment. Go to Configuration, Product Categories, select a category, and set the routes on the Inventory tab. All products in that category will inherit the route.
Important: Routes are additive. A product can have multiple routes selected (e.g., Buy + Pick/Pack/Ship). Odoo evaluates all applicable routes and selects the best matching rules based on the operation context.

Step 4: Understanding Push and Pull Rules
The engine behind multi-step routes is the push/pull rule system. Understanding how these work is critical for troubleshooting.
Pull rules are triggered when a product is needed at a destination location. Odoo creates a transfer to pull the product from the source. For example, when a sales order demands a product from the Customer location, a pull rule creates a delivery order from Output to Customer.
Push rules are triggered when a product arrives at a source location. Odoo creates a transfer to push the product to the next destination. For example, when goods arrive at the Packing Zone, a push rule moves them to Output.
You can view and edit rules under Inventory, Configuration, Routes. Each route lists its rules in evaluation order. The order matters: Odoo evaluates rules from top to bottom and stops at the first match.
Troubleshooting Common Issues
Here are the most frequent problems with multi-step routes and how to fix them:
Intermediate Transfers Not Created
If only the final Ship transfer appears without Pick and Pack steps, check these items:
- Product route: Verify the Pick/Pack/Ship route is checked on the product form
- Warehouse steps: Confirm Delivery Steps is set to 3 steps, not 1
- Route active: Check that the route is marked as active in Configuration, Routes
- Product type: Ensure the product type is "Storable Product"
Transfers Created but Stuck in Waiting
If Pick and Pack transfers exist but remain in "Waiting Another Operation" state:
- Check reservations: Verify stock is available in the source location
- Review availability: Use the "Check Availability" button to force reservation
- Trace the chain: Open the parent transfer and verify all child transfers are confirmed
Wrong Operation Types Generated
If transfers use incorrect operation types:
- Review warehouse rules: Check Inventory, Configuration, Rules for conflicts
- Rule order: Move the correct rule higher in the evaluation order
- Company scope: In multi-company setups, verify the rule applies to the correct company

Advanced: Creating Custom Routes
Beyond the built-in routes, you can create custom routes for specialized workflows like quality control, cross-docking, or multi-warehouse transfers.
To create a custom route:
- Go to Inventory, Configuration, Routes
- Click Create and give the route a name
- Set the applicable scope: Warehouse, Product Category, or Product
- Add rules: In the Rules tab, define each step with source, destination, and action
- Save and assign the route to relevant products
For a quality check workflow, add an extra step between Receive and Stock that routes goods to a QC location. The push rule at the Input location triggers the QC transfer, and a second push rule moves approved goods to Stock.
Key Takeaways
- Enable first: Turn on Multi-Step Routes in Inventory settings before any configuration
- Product matters: Only storable products can use routes
- Check the chain: Verify each step in the route has an active rule
- Test with one product: Before bulk-assigning routes, test with a single product to confirm the flow works
- Rule order is critical: Odoo evaluates rules top to bottom and stops at the first match
Frequently Asked Questions
Can I use multi-step routes with Odoo Community?
Yes. Multi-step routes are available in both Odoo Community and Enterprise editions. The configuration is identical across editions.
How do I add a quality check step to my warehouse route?
Create a custom route with an additional rule that routes goods from Input to a QC location before Stock. Add a push rule at Input that triggers the QC transfer, and a second push rule at QC that moves approved goods to Stock.
Why are my intermediate transfers not being created?
The most common cause is the product missing the route assignment. Verify the Pick/Pack/Ship route is checked on the product form, the product type is Storable Product, and the warehouse is configured for 3-step delivery.
Can different warehouses have different route configurations?
Yes. Each warehouse can have its own Delivery Steps configuration. Routes can also be scoped to specific warehouses, allowing different flow configurations per location.
What is the difference between push and pull rules?
Pull rules are triggered when a destination location needs a product. Push rules are triggered when a product arrives at a source location. Both create transfers, but the trigger conditions differ.
Master Odoo Inventory Management
Explore our complete library of Odoo inventory guides, warehouse tips, and ERP best practices.
References
