How to Configure Order Routing in Pipe17

Pipe17 Order Routing uses Order Routing Cards (“Cards”) to define the logic used to route orders to a sequence of most preferred to least preferred fulfillment locations.

Pipe17 first extracts order data it receives from your incoming eCommerce channels. Pipe17 then uses that data to evaluate a top-to-bottom sequence of order routing cards that define your orders’ optimal fulfillment locations. For example, you might configure your cards to first try to fill an order from the regional warehouse nearest to an order’s ship-to address, followed by a second regional warehouse, followed by a nearby retail outlet.

When Pipe17 receives a new order, it categorizes the order as New. Depending on the order’s characteristics, Pipe17 may then automatically transition the order to Auto Hold state, or require an integration to continue processing the order.”

If there are any holds on the order, then Pipe17 queues the order until those holds expire. You can identify those orders when Pipe17 categorizes the order as Ready for Fulfillment.

Among other examples, you can use Pipe17’s order routing functionality to:

  • Route orders to a fulfillment location near to the order’s ship-to location

  • Route orders on the basis of inventory availability 

  • Route orders on the basis of SKU or Order ID

  • Combine rules to perform complex filtering

Pipe17 Order Routing Sequence 

To automate the creation of shipping requests, Pipe17 performs the following actions to evaluate a top-to-bottom sequence of cards and the destination fulfillment locations within those cards.

  1. If a card with or without optional filters evaluates to false, then Pipe17 evaluates the next card in the sequence.

TIP: Optional Filters restrict when a card will be used. This enables Pipe17 to apply special processing logic to orders that require them. Examples of special processing include custom products, wholesale orders, pre-orders, and more. For information, see Design Your Order Routing Logic and Add Optional Routing Card Filters to a Card. 

  1. If a card with or without optional filters evaluates to true, Pipe17 checks the card’s fulfillment regions for a match to the shipping address.

  2. If Do Not Check Inventory is selected, then the order goes to the first location in the first region that matches the shipping address. For more information, see Do Not Check Inventory Check Box.

  3. If inventory is being evaluated (Do Not Check Inventory is cleared,) and the card’s Allow split orders checkbox is:

  • Selected, then Pipe17 will attempt to use one or more of the card’s fulfillment locations to completely fulfill the order.

  • Cleared, then a single fulfillment location must have available inventory for all the order’s line items.

  • If Send future orders immediately is checked, then any future quantity is included in the inventory evaluation.  

By default, Pipe17 searches for locations with available items. If Send future order immediately is selected, Pipe17 adds the values of future inventory plus available inventory for available inventory at a specified location. For information, see Split Orders Across Multiple Fulfillment Locations.

  1. If a card meets all of an order’s fulfillment criteria, then Pipe17 stops evaluating any more cards and sets the order status to Ready for Fulfillment

  2. If Pipe17 cannot find valid fulfillment criteria for the order, then Pipe17 applies the order status Ready for Fulfillment.

Before using Pipe17 to create routing cards, prioritize your hierarchy of fulfillment locations. 

Design Your Order Routing Logic 

Before using Pipe17 to create and configure Order Routing Cards (“cards”), use a separate document authoring program, spreadsheet program, or even paper and pencil to plan the fulfillment logic of your order routing cards.

Both Pipe17 routing cards, and the destination fulfillment rows contained in those cards, define top-to-bottom sequences of most preferred to less preferred order routing decisions. In those sequences, Pipe17 applies the first card and the first row that meets an order’s fulfillment criteria.

Pipe17 recommends your routing logic begin with cards that use optional Filters to detect special fulfillment requirements. Examples include wholesale orders, drop-ship or backorders for products that are not physically on hand, SKU-specific fulfillment instructions, and other non-default cases. Putting the special cases first enables Pipe17 to apply those non-default requirements to orders that require them before “falling through” to less specific fulfillment cards and rows at the bottom of an order routing sequence.

TIP: Use Pipe17’s order routing Filters to define special order fulfillment requirements. Filters add detailed decision making logic that Pipe17 evaluates as part of determining which routing card will be applied. For information, see Add Optional Filters to a Card.

Organizing Cards by Region

One way to organize your order routing cards is by geographic region. When an order is routed the shipping address is matched to the region to determine which card or part of a card is used. 

By default Pipe17 defines two fulfillment regions: US All East and US All West. While it's possible to create a single Card that prioritizes the west region first and the east region second, it’s typically easier to manage separate cards for each region. One card prioritizes all of the east region’s fulfillment locations, a second card prioritizes the west region’s fulfillment locations.

Order Destination Regions 

You can create order destination regions to serve your organization’s preferences for routing orders. For example, you can use the U.S. Census Bureau’s regions to organize the U.S. into four regions by state.

Reprint from https://ww.census.gov/prod/1/gen/95statab/preface.pdf

Create an Order Routing Card

In Pipe17, Order Routing Cards define a sequence of Destination Fulfillment Preferences.

Before You Begin

To most efficiently complete the following task, use the prioritized order locations you defined in Design Your Order Routing Logic.

To create a new Order Routing Card: 

  1. In Organization -> Order Routing, in the bottom of a list of cards, click Add Order Routing. 



By default, each card contains the following: 



 

 

 

  • A Name free-form text entry area.

Use the Name text entry area to identify the purpose of the card. For example, a geographic region like “West Routing rules”, a custom order, one or more categories of SKU, and so on.

  • Optional Filters that refine the criteria used to apply the card to an order.

  • A sequence of Order Destination / Fulfillment Location rows used for geographic routing.

  • At the bottom-right of each Card, click the Add Route link to add a new Order Destination / Fulfillment Location row to a Card.

  • In the left side of each row, click and drag the repositioning icon to move a row up or down.

  • Use the position arrows to move a card up or down in the sequence.

  • Do not split orders, Do not check inventory, and Send future order immediately check boxes. For information see, Routing Card Checkboxes.

Specify Order Region Filters

You can define Pipe17 order destination regions via order region filters.

To create or edit destination order fulfillment regions: 

  1. In the left-side navigation pane, click Organization -> Filters.

  2. Perform one of the following:

  • To create a filter, in the Filters page, scroll to the bottom of the page, then click Create and then pick “Order Region”

    • accept the warning that appears when you change the filter type

 

  • To edit a filter, in the Filters page, in the Entity column, scroll to an order_regions row, then click .  

  1. In the Create or Edit dialog, configure the order regions.

  • In the Entity Type list, choose Order Regions.

  • In the Filter Name text entry area, type a region name. For example, Northwest region.

The filters area provides two options for filter logic: Any and All

  • Any (the default setting) specifies that if only one filter in a list of filters is valid (“true”), then the Card will use the Filter to include or exclude fulfillment locations. This is a logical OR of all the filter conditions.

  • All specifies that if all filters in a list of filters is valid (“true”), then the Card will use the Filter  to include or exclude fulfillment locations. This is a logical AND of all the filter conditions.

  1. Specify the filter’s values.

  • In the Orders Regions Field list, choose an address category. For example, Shipping Address State / Province.

  • In the Operators list, choose the filter’s evaluation logic.

TIP: The Equals Any Of operator enables more than one value to be typed into the Values text entry area. To specify multiple values, in the Values text entry area type the value as text, then press ENTER. Pipe17 turns the text into a “token”. Type additional values, then press ENTER to add them to the filter’s decision logic.

  • In the Values text entry area, type one or more values to evaluate by the filter’s value for the Orders Regions Field and Operators.

For example, if Orders Field specifies Shipping Address State / Province, and the Operators list specifies Equals, then in the Value text entry area, type a single U.S. Postal Service state code. To specify more than one state, in the Operators list choose Equals Any Of

  1. In the bottom of the Filters dialog, click Save

TIP: Pipe17 does not automatically save your changes. If you made changes in one area of the Pipe17 user interface that you have not saved, and you try to move to another area, Pipe17 reminds you to save your changes.

To save your changes, click Cancel, then save your changes. To discard unsaved changes, click OK.

Specify Optional Routing Filters 

Use order routing filters to add additional levels of control over how to fulfill an order. 

Pipe17 applies order routing filters at the entire order level, not at the line item level. You cannot use order filters to “peel off” line items in orders and route them individually.

By default, Pipe17 does not create routing card filters. If you do not enable one or more filters, then Pipe17 applies the first fulfillment row that meets the un-filtered fulfillment requirements. For information, see Design Your Order Routing Logic.

To add or customize a routing card’s routing filters: 

  1. In the left-side navigation panel, click Organization -> Filters

  1. In the Filters page: 

  • To delete a filter, in the right-side of the filters page, click . 

  • To edit a filter, in the right-side of the filters page, click .

  • To create a filter, scroll to the bottom of the filters page, then in the lower-right click Create.

Pipe17 displays the Create or Edit filter dialog.

The filters area provides two options for filter logic: Any and All

  • Any (the default setting) specifies that if only one filter in a list of filters is valid (“true”), then the Card will use the Filter to include or exclude fulfillment locations. This is a logical OR of all the filter conditions.

  • All specifies that if all filters in a list of filters is valid (“true”), then the Card will use the Filter  to include or exclude fulfillment locations. This is a logical AND of all the filter conditions.

  1. Specify the filter’s values.

  • In the Orders Field list, choose a filter value.

  • In the Operators list, choose the filter’s evaluation logic.

TIP: The Equals Any Of operator enables more than one value to be typed into the Values text entry area. To specify multiple values, in the Values text entry area type the value as text, then press ENTER. Pipe17 turns the text into a “token”. Type additional values, then press ENTER to add them to the filter’s decision logic.

  • In the Values text entry area, type one or more values to evaluate by the filter’s value for the Orders Field and Operators.

For example, if Orders Field specifies SKU, and the Operators list specifies Equals, then in the Value text entry area, type a single SKU. To specify more than one SKU, in the Operators list choose Equals Any Of

  1. To add additional filters, in the bottom of the Enable Filters area, click Add Rule

  2. In the bottom of the Filters dialog, click Save & Apply.

TIP: Pipe17 does not automatically save your changes. If you made changes in one area of the Pipe17 user interface that you have not saved, and you try to move to another area, Pipe17 reminds you to save your changes.

To save your changes, click Cancel, then save your changes. To discard unsaved changes, click OK.

You can also configure a Card to permit splitting orders across multiple fulfillment centers. For information, see Split Orders Across Multiple Fulfillment Locations.

Edit Inventory Quantities 

Use the Inventory page to edit the quantity of Oh Hand or Future inventory SKUs.

To edit inventory quantities: 

  1. In the left-side navigation pane, click Inventory.

  1. In the Inventory page, in the SKU column, click a SKU.

  1. To edit inventory quantities, in the Current Inventory dialog, in the On Hand or Future row, click .

  1. To change the inventory quantity, in the quantity text entry area type a new value. Or use to increment or decrement the quantity.

  2. To save the new value, click . (To discard the new value without saving, in the left-side navigation pane click Inventory.)

Routing Card Checkboxes

Each Pipe17 routing card includes three checkboxes: 

  • Allow Split Orders

  • Optimize For Location Priority

  • Do Not Check Inventory 

  • Send Future Order Immediately 

Split Orders Across Multiple Fulfillment Locations

When all the items in an order cannot be fulfilled from a single fulfillment Location, you can configure an order card to split orders across multiple locations.

For example, you may prefer to fulfill orders from a  warehouse close to the customer. For a multiple item order, if an item is not available from that preferred warehouse, and the Allow split orders checkbox is selected, then Pipe17 will attempt to fulfill the items from additional locations specified in the order routing card. 

To allow orders to be fulfilled from one or more locations:

  1. Select the Allow split orders and Optimize for location priority checkboxes and clear Do not check inventory.

 

  • If an order cannot be completely fulfilled from a single location, and the Allow split orders checkbox is selected Pipe17 splits the order to fulfill from what is available in each location. 

  • If Do not check inventory is selected, then Pipe17 does not split orders regardless of the state of Allow split orders.

 

Split Orders By Line Item Filter

In addition, you have the option to also split the order by defining a line item filter on the order routing card. This is useful when you want to target which line items should be split.

All line items that match the filter will be routed to the first location that has inventory. All unmatched line items will remain unrouted and will fallback to the next order routing card.

 This feature is currently feature flagged per organization.

Important: Splitting by line item filter will always also split by location priority. Defining a line item filter allows you to target a subset of the line items to split based on inventory availability at each location.

 

  1. Select the Allow split orders and Optimize for location priority checkboxes and clear Do not check inventory.

 

  • You will see two checkboxes appear split by inventory availability and split by line item filter

  • The first checkbox is always checked and cannot be unchecked since it displays the behavior mentioned above - splitting the order will always route each line item at the first fulfillment location with inventory

  • The second checkbox is the optional line item filter

  • Clicking it will open a popup dialog for you to define your filter

 

 

  • In the example above, the filter will match all line items that require shipping and have a SKU equal to "ABC"

  • After clicking "Save and Apply", you will be able to edit the filter by clicking on the name next to the checkbox or remove it by unchecking split by line item filter

 

  •  Note: Don’t forget to save by clicking on “Save“ at the bottom of the page

Additional Notes

  1. Order filter vs Line Item filter

    • These are separate filters that are independent of each other (editing one will not affect the other)

    • If both are defined, the order filter will work as a pre-filter

    • This means the line item filter will be applied to a subset of orders that pass the order filter instead of all orders

 

EXAMPLE FLOW

Input:

order = { lineItems: [ { uniqueId: "", sku: "A", name: "lineItemWithSkuA", quantity: 2, locationId, taxable, requiresShipping: true, itemTax, itemDiscount, itemPrice, routed: false, }, { uniqueId: "", sku: "B", name: "lineItemWithSkuB", quantity: 1, locationId, taxable, requiresShipping: true, itemTax, itemDiscount, itemPrice, routed: false, }, { uniqueId: "", sku: "C", name: "lineItemWithSkuC", quantity: 3, locationId, taxable, requiresShipping: true, itemTax, itemDiscount, itemPrice, routed: false, } ] }
OrderRoutingRules: [ [ { "name": "Line Item Sku A Filter", "filterId": "", "enabled": true, "options": { "splittable": true, "splittableBy": { "inventory": true, // backward compatible with "splittable: true" / future data structure "lineItemFilterId": "filterId", }, "optimizeForLocationPriority": true, "splitFuture": null, "requiresInventory": false, "sendFutureImmediately": false }, "rules": [ { "filterId": "2b3a5397b43579f7", "options": null, "locations": [ { "locationId": "610cf1a0ed8054b2", // Location 1 "options": null } ] } ] }, { "name": "Line Item Sku B Filter", "filterId": "0635c1e6e2e37ecf", "enabled": true, "options": { "splittable": true, "splittableBy": { "inventory": true, "lineItemFilterId": "filterId", }, "optimizeForLocationPriority": true, "splitFuture": null, "requiresInventory": false, "sendFutureImmediately": false }, "rules": [ { "filterId": "2b3a5397b43579f7", // Destination Filter (not important for this discussion) "options": null, "locations": [ { "locationId": "737895748766c2a6", // Location 2 "options": null } ] } ] }, { "name": "Fallback / General Order Routing Rule", "filterId": "", "enabled": true, "options": { "splittable": false, "splittableBy": { "inventory": false, "lineItemFilterId": "", }, "optimizeForLocationPriority": false, "splitFuture": true, "requiresInventory": true, "sendFutureImmediately": false }, "rules": [ { "filterId": "c2b7440a03213b47", "options": null, "locations": [ { "locationId": "a352e7a0f7572f1e", // Location 3 "options": null }, { "locationId": "85f8c4af0fd0006c", // Location 4 "options": null } ] }, ] } ] ]

OUTCOME

rules[0]

  1. LineItem Sku A would match the lineItemFilter for the 1st rule and be routed to location 1

    1. LineItem Sku B wouldn’t match (remain unrouted)

    2. LineItem Sku C wouldn’t match (remain unrouted)

rules[1]

  1. LineItem Sku B would match the lineItemFilter for the 2nd rule and be routed to location 2

    1. LineItem Sku C wouldn’t match (remain unrouted)

rules[2]

  1. This rule has no order filter or lineItemFilter and would match ALL orders/lineItems

  2. LineItem Sku C would match the 3rd rule and be routed to location 3

Do Not Check Inventory 

By default, Pipe17 will not route an order or any portion of an order to a location if there is not enough available inventory at the location specified in the card. To override this default behavior, select the Do not check inventory check box. 

Selecting Do not check inventory means:

  • Orders that satisfy any filter and region on the card will be routed in their entirety to the first location in that region regardless of available inventory.

  • Because Pipe17 only splits orders based on available inventory, orders that route using cards with Do not check Inventory selected are never split. (Allow split orders has no effect when Do not check Inventory is selected.)

Do not check inventory is often used in conjunction with a SKU filter to support:

  • Drop Ship or Make to order products

If you sell products that are sent by a supplier directly to your customer and/or you sell products that are built to order, the inventory status may not be a condition for determining which location should receive the order. For example, your drop-ship supplier effectively has infinite inventory.

  • No inventory data is available

If you have no effective way for integrating or updating inventory data and choose instead to route all orders for specific products to a specific Pipe17 location.

Send Future Order Immediately 

Use the Send future order immediately checkbox to include the future order quantity when determining available inventory at the location. In other words, if there is a positive future quantity, thenPipe 17 will create shipping requests even when there is no physical inventory at that location. 

Selecting Send future order immediately enables you to process the following categories of orders

  • Backorders or preorders where you inform the customer that are temporarily out of stock for an item but know when you will have inventory.

  • You want to confirm market demand. For example, capture orders for a new product that will not be manufactured until after you have taken the orders. Examples include items that are being crowd-funded.

  1. In the left-side navigation pane, click Organization - Order Routing, then select an order routing card. 

  2. Select the Send future order immediately checkbox.

  3. To save your changes, scroll down the list of cards, then click SAVE.

TIP: Pipe17 does not automatically save your changes. If you make changes in Order Routing that you have not saved, and you try to move to another area, Pipe17 reminds you to save your changes. 

  • To save your changes, click Cancel, then save your changes.

  • To discard unsaved changes and leave the current page, click OK