Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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. 

...

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: 


Image Modified

  • 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.

Image ModifiedImage Modified
  • 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

...

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.

...

  • 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.

...

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 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.

...

  • 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.

...

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 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 Across Multiple Fulfillment Locations 

  • Optimize For Location Priority

  • Do Not Check Inventory Inventory 

  • Send Future Order Immediately Immediately 

Split Orders Across Multiple Fulfillment Locations

...

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

  1. Select the Allow split orders

...

  1. 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

...

Image Added

  • 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:

Code Block
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,
    }
  ]
}
Code Block
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. 

...

  • 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. 

...