Table of Contents
A Shipping Haiku
Packages… point a,
point b, beyond? My mind drifts
to the endless pain.
Prior to launching FoxyCart we had months of discussions about shipping. One of the scenarios that we discussed was a mattress store. The mattress store may need to ship very large and heavy items, but also may need to ship pillows. They may also need to ship things via custom shipping carriers or freight options. In our early discussions, the afore-attributed anonymous lead developer said something like, “That's a ridiculous scenario. The average merchant won't have anywhere near the complexity in their shipping requirements.” The other person agreed, and FoxyCart development moved on.
Unfortunately, while the specifics of the mattress seller haven't come up, shipping requirements can vary so wildly from business to business that no one system can meet every need. FoxyCart's current shipping functionality does some things very well, while other things may require intermediate or advanced customizations to get right. Read on to see both how FoxyCart's shipping capabilities can meet your needs currently, as well as our plans for the future.
Different Types of Shipping Functionality
FoxyCart currently offers a few different approaches to shipping, listed here and discussed in more detail below:
- Live rates through USPS, UPS, and FedEx.
- Flat rates per category.
- Special rates for “Free Ground Delivery” and “Customer Pickup”.
- Handling fees can be applied per category in a variety of ways
- Non-shippable / intangible / downloadable products, which don't get shipping applied, but are listed here just to clarify.
Shipping and Categories
Because a single store may have multiple categories, each with its own shipping options and handling fees, it's important to understand how combining different shipping rates works. Assume you have 4 product categories: two of them may be set to use live rates, one set to no shipping, and one set to flat rates. If the customer has products from all four categories in one cart, the checkout will present the customer with all of the returned live rates, each combined with all of the additional flat fees and handling fees for the other categories.
So, regardless how many categories or options are selected, all the shipping fees will be combined when presented to the customer.
Live Shipping Rates
Live shipping rates are configured store-wide, but can be enabled per category. As of this FoxyCart version, live rates are requested from the selected carriers using the options selected in your store's config. The total weight of your products are sent to the shipping carrier(s) to get the rates, but the dimensions of the shipment are not sent, and default to a 1'x1'x1' package unless the package type supercedes that default.
FoxyCart also currently does not split products into multiple shipments, so in some situations with extremely heavy carts the shipping carrier may respond back with an error.
We are planning a rebuild of our shipping functionality for a future version, so please add a comment with your needs and vote for this feature request.
Residential v. Commercial Rate Requests
Some carriers offer different prices or services to residential addreses than they do to commercial addresses. You can select from three options in your store's “shipping” page in the admin:
- Rate as Residential. (Force residential rate requests.)
- Rate as Commercial. (Force as commercial rate requests.)
- Rate based on Company field. If you select this option the address will be rated as a commercial address if the company field (on the checkout form) for that address is not blank, otherwise it will be rated as a residential address.
Wholesale v. Retail Rates
Some carriers display different rates based on the drop type you select. For example, UPS defaults to Wholesale if you select “Daily Pickup”, uses Retail for “Customer Counter” and “Suggested Retail Rates” and uses what it calls Occasional Rates for “One Time Pickup”, “On Call Air”, “Letter Center” and “Air Service Center”. Some systems will always show a discount when you are logged in to the API or to their website (as opposed to getting a rate request from their website without logging in). For this and other reasons, we recommend you use your own shipping account to ensure the rates more accurately reflect your actual shipping costs.
Flat Rate Shipping
Flat rate shipping, unlike the live rates above, is configured per category and not store-wide. The flat rate value is applied once per category, regardless of the number of products in the category. (See the handling fees section for other options.)
There are two “special” options that are treated as live rates:
- Free Ground Shipping
- Free Customer Pickup
Both options will only be shown to customers that have a shipping country matching your store's country, as configured in your store's settings. Also, the text displayed for both options is configurable, so you could use these as other types of “free” shipping entirely.
Handling fees, like flat rates, are configured per category, but can be applied in a few different ways:
- Flat fee per shipment with products in this category
- Flat fee per product in this category
- Flat fee per shipment + % of price for products in this category
- Flat fee per shipment OR % of order total with products in this category. Whichever is greater.
When paired with a flat fee, the handling fee can become quite a powerful tool for adjusting shipping costs. Handling fees also work with live rates, but note that handing fees do not apply if a category is set to “no shipping”.
FoxyCart stores can integrate with a variety of fulfillment houses using functionality like the API and the transaction datafeed. Or check our integrations section for existing code or services (like FoxyWire.com, a third-party bridge between FoxyCart and Shipwire.com).
Feature Requests, Plans, and Known Limitations
There are many common requests that can be achieved with FoxyCart, but require a little bit of code to make work. Please view this list of links, and ask in our forum if you don't see what you're looking for (or if you need help).
We are planning a rebuild of our shipping functionality for a future version, so please add a comment with your needs so we can be sure our new solution handles your situation.