Shipping rating services generally need to know how many boxes, what dimensions of boxes, and the weight of boxes to estimate the shipping rate. The default shipping engine in Optimizely <<product-name>> uses the Order Packager to create packages and then consumes those packages to send to the rating service for estimation. The rating service then returns rates to <<product-name>>.
The Order Packager is what <<product-name>> uses to break orders apart into separate packages for shipping.
First, the Order Packager looks at all of the products on the order lines from the customer order to see if any of them have a **Shipping Override Amount**. If all of the packages have a **Shipping Override Amount**, <<product-name>> will **not** rate the shipment. The Shipping Override Amount field is not exposed by default and requires a
If there are order lines that remain, that do not have a **Shipping Override Amount**, then <<product-name>> will attempt to place each quantity of product ordered into a package. There are three ways the package can be filled:
When using the **Shipping Override Amount** field, be aware that it accepts null values; therefore, packages could be shipped at a cost of $0.
<<product-name>> will attempt to find a predefined package set in the **Admin Console** \> **Shipping & Fulfillment** \> **Carriers** \> **Packages** finger tab. If the product fits in the defined Length, Width, Height, and Weight, it will place products in that package until it is full.
If there is not a defined package, <<product-name>> will make one based off of the values set by the weight of the product and the following Settings:
Default Package Length
Default Package Width
Default Package Height
This package will then be added to the packages available to the carrier (**Admin Console** \> **Shipping & Fulfillment** \> **Carriers** \> **Packages** finger tab), and be named "Auto-create Package for PRODUCTNAME".
A third way is to ship the products as is, assuming it is already in a ship-ready package. This method requires some additional set up work in the **Admin Console**. to expose the **ShipSeparately** and the dimensional fields (**shippingLength**, **shippingWidth**, **shippingHeight**, **shippingWeight**):
The **Admin Console** \> **Administration** \> **System** \> **Application Dictionary**.
Search for **Product**.
Click **Edit** for the **Product** entity.
Click the **Properties** finger tab.
Search for "shipping".
Click **Edit** for the **Property Configurations** that are to be exposed and change the necessary settings. Review the Working with Properties in the Application Dictionary article for more information.
The following diagram show shows the process flow of the standard order package:
**Example:** An order has two order lines with 5 of Product A and 3 of Product B. Neither of these order lines has shipping overrides. The diagrammed process above will happen 5 times for Product A and 3 times for Product B.