Prior to Drupal 7, developers had generally relied on Ubercart to provide eCommerce functionality for the websites they built, be it for their own company or a client’s. Other options did exist, but none were truly able to compete with Ubercart as a full-fledged shopping cart solution, primarily due to the level of (community) developer support that escalated its growth and propagation.

Unfortunately, Ubercart is built in a way that does not always encourage modification of its core behaviors. Anything is possible, certainly, but the cost-to-value relationship of fundamentally altering Ubercart’s workflows or approach to customer and order management does not always make good financial sense for the investor.

If you’re interested in a non-Drupal eCommerce site that is Open Source, check out our post about our experience with Magento!

What is Drupal Commerce?

Drupal Commerce was not designed to be an entire eCommerce solution out-of-the-box. It was envisioned as a much more flexible system, engineered specifically to allow for customization. You might ask “Well, if it’s not an application, then what is it?”. The answer to that question is simple. It’s a framework.

What’s the difference between an application and a framework, in the context of Drupal Commerce? The most notable is the presence of the many APIs that have been written by the Commerce development team. These APIs are what give Commerce its flexibility, by allowing developers to replace/augment/extend existing functionality, or even develop brand new features that didn’t exist before.

Why is this better than Ubercart? It’s better because it doesn’t make assumptions about how you want your store to work. It leverages core components in Drupal rather than defining its own custom methods to handle certain things. A great example of this is how Commerce uses Views. Since all of its catalog, cart, and checkout pages are controlled with Views, modifying their behaviors is a snap.

Barrier to entry

When a framework such as Commerce is released into the community, its adoption is seldom very rapid. The primary reason for this is that framework/API modules necessitate that the community contribute code in the form of support modules, which can limit adoption rates for people interested in “out of the box” solutions.

Ubercart provides more functionality in its core module suite, and less technically-savvy users tend to appreciate this. Ironically, this ease-of-use is also what makes Ubercart harder to modify or extend.

Commerce’s popularity is rising in the community, and it is expected that it will gain a much firmer hold in Drupal 8 due to its rich Views integration (Views is being rolled into Drupal 8 core).

If I build a site today, should I use Ubercart or Commerce?

Choosing between Ubercart and Commerce can still be difficult, depending on what you’re trying to accomplish. A good question to ask yourself is “How much does my ideal eCommerce solution differ from standard eCommerce functionality?”. If you’re running a mom-and-pop store, or are selling simple products (as opposed to configurable attribute-driven products) in the typical manner, with no specific unique requirements, then Ubercart is likely your best bet.

On the other hand, if you’re trying to put together a custom shopping cart solution, or specific functionality that Ubercart doesn’t support, chances are that it’s not only possible in Commerce, but also much easier to build. And as the community-contributed module list grows, so will Commerce’s popularity, until Ubercart is eclipsed completely. Interested in seeing what modules exist already? They’re available here.

Did you recently build or launch an eCommerce site in Drupal? If so, did you prefer Ubercart or Commerce? Let us know if the comments!