Commerce Shipping brings a lot to the table

This week we finally packaged the full release of Commerce Shipping 2.0, and I couldn't be happier. Thanks to the efforts of my co-maintainer, googletorp, and contributors helior, cvangysel, and andyg5000, we have a solid shipping framework for Drupal Commerce that offers more flexibility and granular control than any other shipping system I've seen, Drupal or not.

Commerce Shipping checkout panes on the default checkout form.

What's the big deal?

As I wrote in the release notes, this milestone really is a big deal for Drupal Commerce. Among the many benefits this module brings to the table are:

  • The ability to use any number of shipping methods to calculate shipping rates on a site, using Rules to control when a particular method should be enabled. You can use one carrier to quote domestic rates, another to quote international rates, and a flat rate to offer free shipping if certain conditions are met.
  • An architecture that subdivides shipping methods into their individual shipping services (e.g. Ground, 2nd Day Air, Next Day Air, etc.), giving you granular control through Rules over which services should be available to an order. You might use this to ensure perishable products only ship overnight or to only offer guaranteed delivery dates for items in stock.
  • A shipping rate caching system that allows carrier rated quotes to be fetched in a single API request and stored locally (with an optional timeout) for the duration of the checkout process.
  • A shipping rate calculation API that lets you perform additional calculations on top of the base shipping rate for each service through custom modules or Rules. This allows you to add taxes, handling fees, discounts, and more to your shipping rates. It also turns the Flat Rate module into the basis for more complex shipping calculation schemes - weight based, quantity based, etc.
  • A checkout pane that can automatically recalculate shipping rates as customers enter their billing and shipping information. This lets you display accurate shipping rates that depend on address data on a single page checkout form.

Additionally, in conjunction with last month's Commerce 1.4 release, Drupal Commerce supports copying addresses and other matching field data between your billing information and shipping information checkout panes. Many thanks to the contributors mentioned above for working out all the kinks between this feature and the recalculation of shipping services.

This architecture removes limitations found in other open source eCommerce systems, like Ubercart and Magento, that often take an "all or nothing" approach to showing shipping services from any given carrier on the checkout form. Even better, features that this module delivers for free would actually cost you extra to add to systems like Magento that nickel and dime you through plugin marketplaces just to make your checkout form more customer friendly. Tongue

Next steps for Commerce Shipping

With this release there are already modules to support Flat Rate shipping, carrier rated quotes from UPS, FedEx, USPS, and others, and in store pickup facilitated by Kiala. Additional contributed modules focus on extending the system with other features, like joachim's Shipping Weight Tariff module that offers a simplified table based interface for setting shipping costs by total order weight.

Next steps involve bringing these contributed modules and their dependencies (like the Physical Fields module and Commerce Physical Products) to a full release, an effort already underway thanks to andyg5000 and other contributors / maintainers.

This work has been a community effort, and it has paid off for everyone. Smile


What great notice!


Great to see development continue to move forward. Lots of great things happening in Drupal Commerce!

First off, thanks for the contrib. I am curious to know if you have any plans to tackle the shippment tracking aspect of the fulfillment process. I have always felt this to be highly important and an aspect often overlooked in most eCommerce systems. More specifically the ability to have a central system which pulls in tracking level data and displays it in a uniform fashion back to the user and admins through the system itself. Additionally I have always wanted the ability to enable automated email notification/follow for our clients eCommerce sites when certain events takes place... Such as once the tracking number reflects a "delivered" status send a "order delivered" email thanking them again... Or, once the tracking data shows "out for delivery" we send an automated email.... Another example situation might be if the estimated delivery date changed. Thoughts? Suggestions?


I just have a basic system that I use for my order tracking. I have added a field into the admin order form that has tracking number and have added a custom order status called 'Order Shipped'.

When an order has been placed and I have packed up the order, I enter the tracking number into the field I created on the admin edit order form and hit save. Then once I have lodged the item with the shipping company I edit the order and set it to 'Order Shipped' ...when this status is set it fires a rule that then sends an email to the customer saying that the order has been shipped and gives them the tracking number for them to track the item via the shipping companies website.

Thanks to Adam for the ideas - your comment perfectly illustrates how Drupal Commerce is stronger because of its close adherence to Drupal 7 site development patterns. That said, I think it would make a fine feature request for the Commerce Shipping module to eventually provide its own tracking field. Think of it as a smarter textfield - one that we can apply a specific formatter to (e.g. show the tracking number as a link to FedEx's page for the shipment) or build off of in other modules. It's easier to do that when everyone uses the same system.

If it isn't open yet, let's get this idea added to the queue and maybe even consider it for the next minor release if possible. I'm sure as UPS / FedEx / USPS push toward full release, we'll find areas in them we can consolidate into one tracking assistance tool in the Shipping module itself.

I am a Newbie in Drupal Commerce and i work at the moment only with Magento but i have interest to work in further projects with Drupal Commerce. What we need for Drupal Commerce are interfaces to eBay Shop, amazon Store, Google Shopping API.

It will be nice to give the Drupal Commerce the german eCommerce law specifications. Tax/VAT Show in product view, category view items, order conditions in Checkout, etc. Magento use for this special modules from Germany but the modules are buggy and make conflicts with other modules. The Magento Core Team integrate not the for german market needed features.

Regarding your module requirements, I will provide links in the following way: add "drupal" and ".org" and "/project/" in front of the module names... (avoiding spam detection)

eBay Shop integration could be a simple port of the 6.x ebay module (not sure) ebay (module name: ebay )

Partial Amazon store integration is already available: (module name: amazon )

Google Shopping API is integrated already: (module name: commerce_gmerchant )

For your VAT needs, Commerce comes with that capability. If you require additional help, a Commerce Guy has produced a huge contribution called the "Commerce EU VAT" module ... (module name: commerce_eu_vat )


Ubercart had the ability to organize orders into Packages and Shipments. Does Drupal Commerce - or the new Commerce Shipping have that ability? I am struggling to find it if it does...