Table Rates enables you to define your rates according to any combination of destination, product, price, quantity, weight and customer group rules.
You can also create ‘shipping groups’ to categorize your products and define shipping rates. For example, you could assign one rate for books, another for CDs and yet another for DVDs.
The First thing you will need to do is create a Custom Carrier for Table Rates.
- On the “Carriers” page select “Add New +”
- Select “Custom Carrier” —> then “Table Rate” —> Name Your Carrier
The CSV File
While you could manually add each table rate, ShipperHQ also provides the capability of uploading a CSV file with your table rates entries.
The CSV file must contain certain fields to be valid for import. To obtain a sample CSV, click export and you should receive a blank one. An example CSV would look something like this:
Below you will find a description of the fields. Note: All of these headers must be present:
|Include Zones||Comma separated list of zone names to match on, leave as ‘*’ for all zones|
|Exclude Zones||Comma separated list of zone that are exceptions to the “Include Zones”, if empty/* no zones are excluded. Usually this can be left as blank (see note below)|
|Shipping Group||Comma separated list of shipping groups, use ‘UNDEFINED’ to specify rates where products do not have a shipping group assigned, ‘*’ to cover all items|
|SKU||Advanced Feature. SKU to match on, only used with SKU Based totalling.|
|Customer Group||Used to filter dependent on customer group at checkout (e.g. General/Retailer). If you do not need to change shipping prices based on customer group leave this field blank|
|Weight >||Minimum combined weight of the products assigned to the shipping group (above) in cart must be greater than this value|
|Weight <=||Maximum combined weight of the products assigned to the shipping group (above) in cart must be less than or equal to this value|
|Price >||Minimum combined price of the products assigned to the shipping group (above) in cart must be greater than this value|
|Price <=||Maximum combined weight of the products assigned to the shipping group (above) in cart must be less than or equal to this value|
|Qty >||Minimum quantity of the products assigned to the shipping group (above) in cart must be greater than this value|
|Qty <=||Maximum quantity of the products assigned to the shipping group (above) in cart must be less than or equal to this value|
|Shipping Price||Price of shipping|
|Algorithm||Rate Algorithm. Unless you are doing something complex you can leave this column empty. See “Advanced Options” below|
|Delivery Type||This is the label that will tell the end user the shipping method name. E.g. 1st Class, Courier, UPS Ground.
When multiple shipping groups are in the cart then the prices are combined based on the Delivery Type field (see Totalling Algorithm, below). If unable to match delivery types across shipping groups then the rate is discarded
If, by comparison, you entered US in the “include zones” and UK in the “exclude zones” that zone exclusion would be redundant because the UK is not a part of the “include zones” so it would not apply anyway.
Conversely, if you entered a zone applicable to AK & HI in the “include zones” and “US” in the exclude zones no rates would be returned as the exclude zone cancels out the include zone. In this scenario no zones should be selected as “exclude zones” to apply to AK & HI.
Importing CSV File
To import a CSV file: in the “Table Rates” section of your custom carrier, simply click the CSV button, then choose “Import”.
It is recommended that you backup your table before doing so to prevent data loss.
Price/Weight Range Filtering
Price’s range are defined with the following parameters:
|Price >||Price <=|
This verbally translates to “price is greater than X and price is less than or equal to Y ”
Lets use this commonly misconfigured 3 rows as an example:
|Price >||Price <=||Qty >||Qty <=||Shipping Price|
If I were to checkout with a subtotal of $30.00 then this would actually not be covered by the three rows above and fall into a gap that would not return a rate. Notice the value of 30 is greater than and not greater than or equal to. This means this price range would start at 30.01 for that row.
To fix this, this just change the 29.99 and any ##.99 rates in the “Price <=” column to a penny higher to show something like the following:
|Price >||Price <=||Qty >||Qty <=||Shipping Price|
In the example above, if my item cost $30; then my shipping cost would be $7.95.
The same applies to weight ranges.
The totalling algorithm defines how the rates are totaled when there are multiple shipping groups in the cart.
For each shipping group present (and the rates covering all products) the rates are added together.
The highest price shipping group shipping rate is taken to be the rate.
For every SKU in the cart (and every qty of that sku) the rates are totaled together. In addition when searching for rates each item is searched for separately, i.e. if I have 2x 5lb items it will search for a weight of 5lb in the rules, rather than a weight of 10lb in the rules.
Each SKU requires a row in the table. For every SKU the price is taken and totaled together. If there are multiples of one SKU the price is multiplied e.g. 2x SKU BIKE where shipping price = $5 would be $10 total.
|Weight From||Weight To||Shipping Group||Price|
|Items||Cumulative Shipping Price||Highest Shipping Price||Per Item Shipping Price||Notes|
|1*BIKES 5lb||$10||$10||$10||Even tho no group specified the ALL group provides rates|
|1*BEDS 5lb||$10||$10||$10||Gets rates as ALL is a catch all|
|2*BEDS 35lb||No Rates||No Rates||$100||No rates as total for group is 70lb|
|1*BEDS 35lb&1*5lb||No Rates||No Rates||$55||No rates as can’t find for ALL|
This section details the algorithm column. Unless you have a specific need then suggest you leave this column empty.
Use ‘&’ if you need multiple switches e.g. perUnitWeight=5@8&perUnitQty=3
|perUnitWeight||Weight rounded to the next highest full measurement. Adds the specified amount for every unit to from a weight of 0||perUnitWeight=<weight threshold> @ <price>to add $1.50 per 1lb use:perUnitWeightemail@example.com surcharge for 0.5lb would be 1 * 1.5 = 1.5|
|perUnitQty||Unit based price increase. Used to specify an additional per item rate||perUnitQty=<price> Increase per unit added E.g. to add $5 for every item added use:perUnitQty=5|
|perUnitDistance||Adds to shipping price based on distance from the destination. Note: You must have Google API Key set for this to work||perUnitDistance=<unit of distance> @ <price>to add $5 per 100 miles use:perUnitDistance=100@5 surcharge for 300 miles would be 3 * 5 = $15 shipping price|
|perUnitPrice||Price rounded to the next highest full measurement. Adds the specified amount for every unit to the next rounded to the next whole number of cart/group/item price above the “price >” field||perUnitPrice=<price threshold> @ <shipping price>to add $1.50 per $10 use:perUnitPricefirstname.lastname@example.org surcharge for $20 cart price would be 2 * 1.5 = 3|
|addPercentage||Calculate shipping as a Percentage surcharge of the group subtotal of the cart||addPercentage=10 will add 10% of the shipping group subtotal to the shipping price e.g. 10% of 20 will add $2 to shipping price set|
|perBox||Box based price increase. Used to specify additional per box rate||perBox=<price> Increate per box added E.g. to add $5 for each box use perBox=5|
Working with Shipping Groups
Please see the separate article for working with shipping groups in a table rates carrier.
LTL Freight Accessorial Charges
You can also set Accessorial charges (liftgate, inside delivery, etc) to apply on top of your Table Rates. To use this, you need to Enable the LTL Freight Advanced Feature. Once enabled, you will see a new Panel under the Table Carrier settings for Accessorials.