Multi Warehouse Allocation (MWA) is a set of rules that can be used to define which warehouse items on an order should be allocated or backordered too.
There are two scenarios where MWA would be helpful:
- A brand that has multiple warehouses and needs advanced rules to determine where items should be shipped from.
- A 3PL that has multiple warehouses.
Previously, ShipHero supported basic warehouse allocation rules:
- Allocate items to the closest warehouse that has the inventory
- Allocate to the warehouse with the highest priority
This was not sufficient for more advanced rules, such as the ability to allocate items on an order to the warehouse that can fulfill the greatest number of the items, or allocating certain orders from a certain set of warehouses and other orders from other warehouses.
How do Multi Warehouse Allocation rules work?
Similar to an automation rule, an MWA rule has Conditions and Actions. The conditions define which orders will get processed by that rule, and the actions define what will be done with the items on the order. The rules are checked in order, but once one rule is executed, no other rules are. So unlike automation rules, only one MWA rule will be executed per order.
When are the rules run?
Unlike automation rules, MWA rules are checked any time an order is processed. That could be when the order is first imported, when an item is added, or any other time an order is processed.
MWA rules will override any other rules or manual setting of a warehouse allocation. When there is an account with MWA enabled, other methods of setting the warehouse, whether by automation rule or by manually changing it, will get overridden by MWA. There's no way to override the rule for an individual order.
Rules for kits
Because MWA rules are triggered only by items with a quantity pending fulfillment of more than 0, built kit items require a workaround. To ensure that MWA rules are applied to a kit, add a tag based on the SKU using automation rules, then trigger the MWA rule based on that tag.
How do I set up Multi Warehouse Allocation Rules?
To have MWA enabled on your account, please email firstname.lastname@example.org.
Note: For 3PL customers, MWA rules are configured on the 3PL Client account.
How to configure an MWA rule
Once an account is set for MWA, visit https://mwa.shiphero.com to view and edit the rules. This will list all the rules in the account along with a summary of the rule.
Note: 3PL customers will need to be logged into the 3PL Client account while visiting this page to view and edit rules.
- A rule can be enabled or disabled by using the Status toggle.
- You can reorder the rules by using the grab bar to the left of the rule.
- The bottom rule is the "default" rule for the account and cannot be changed.
How to Define Warehouse Priority Lists
As part of the rules, we can define a priority list for warehouses, so when allocating we can define the order in which warehouses should be checked. To manage those lists, click on the Manage Warehouse priority lists button:
From there you can add a new list, or edit or delete an existing one.
As you can see, this lists all the warehouses in the account and allows you to define which warehouses should be included and the priority of each one.
How to Create Multi Warehouse Allocation Rules
Now let's discuss creating the rules.
Assume we want to create a rule for orders shipping to the US that also use the "Profile 2" profile.
To start, click on the Create new rule button.
The first thing we'll do is define the Condition. This is how we'll decide if an order should be processed by this rule. If you leave this blank, then all orders will be processed by this rule. You can have multiple conditions on a rule, and all conditions must be met for the rule to be used. In our example, it would look like this:
The Actions are where the magic happens, so let's take each section and option one at a time:
First, we need to decide whether this action will affect the whole order, or whether each SKU will be evaluated individually. If you want the option to split an order across warehouses you should use Each SKU, and otherwise use Entire Order.
Next, we define what this rule is going to do. We have 4 options:
- Allocate - This allocates items on the order to the warehouse ranked highest in the sorting parameters (covered later).
- Backorder - This backorders any remaining items (those not already allocated by another action in the rule) according to the sorting parameters.
Note: Keep in mind that one rule can have multiple actions. You can have one action allocate and another backorder.
- Allocate from single warehouse and Backorder - This selects the highest-ranked warehouse to allocate to, and will backorder the rest of the items to that warehouse (as opposed to finding another warehouse). When you select this action, you won't need to include additional Allocate or Backorder actions in the rule.
Allocate and Backorder to locked warehouse - This allocates and backorders items to the warehouse that the order is locked to. This can be set by editing the individual order or by using automation rules. This is especially useful when:
- If you have an automation rule to lock an order to a warehouse, this is a way to have MWA respect that.
- If you manually set the warehouse on an order.
- If you use the API to create orders and want to specify the warehouse to use instead of allowing MWA to do that.
When you select this action, you will not see the option to filter by warehouses and sort the warehouse order (shown below) since it isn't relevant.
Note: If the rule runs and there’s no locked warehouse, it will not work as expected. Additional actions should be added to the rule to cover those cases. Triggers can also be used to make sure that the rule only runs on some orders (for example, order tags or shop name).
Note: For information on Transfer Orders, see How to Create an MWA Rule for Transfer Orders.
Once you have selected your action, you can also filter what items this action should apply to:
- All items - this action should apply to all items on the order.
- SKU - items that have the specified SKU.
- All tags - items that have all of tags we specify.
- Some tags - items that have at least one of the tags we specify.
Next, you can choose the warehouse that we want to include in this rule.
You will need to decide which warehouses should be included as possible warehouses to allocate or backorder to. In other words, which warehouses would be eligible for the action we defined above.
We can then optionally add a filter to remove some of the warehouses:
- Capacity to fulfill all items - only consider this warehouse if all the items in the order can be shipped from that warehouse.
- Capacity to fulfill some items - as long as some items can be shipped from here, include this warehouse
This would be used if, for example, we included both warehouses but we don't want to ship from a warehouse if it can't ship everything. In that case, you would use the Capacity to fulfill all items option.
Note: Filter warehouse is optional, you do not need to set it if you want all warehouses included in the action
The next option is how the warehouse is actually chosen, the sorting:
There are 3 options:
- Distance - sort warehouses by distance to the customer.
- Priority - sort warehouses by the Priority list.
- Amount of fulfillable items - sort warehouses by the percentage of items it can fulfill.
Note: For the distance calculation to work, the ZIP code data must be loaded for the warehouse ZIP codes. Please reach out to support so we can confirm that the data for the necessary origin ZIP codes are loaded.
This list should be sorted by the fields you want to consider first. For example, if we did this:
We would look at the warehouse with the highest priority. Then, if there are more than one with the same priority, we look at which one can fulfill the most items. Then, if there's more than one of those (for example, if multiple warehouses have all the inventory needed), we look at the distance to the customer.
Note: Remember that if you have a filter defined above, the set of available warehouses will only include ones not filtered out.
Putting it all together
Let's take a look at a couple of examples to see the actions in use.
For this example, we want to allocate individual items on the order to the warehouse that is closest to the customer. The rest of the items should be backordered to the warehouse highest on our priority list:
First, we'll define the Allocate:
Next, the Backorder:
In this next example, we're going to allocate and backorder items to one warehouse based on the product tags.
This action will allocate all items with the "primary" tag to the Primary warehouse. If an item is out of stock, we'll backorder it to that warehouse.
This action will allocate all items with the "west" tag to the West Coast warehouse. If an item is out of stock, we'll backorder it to that warehouse.