Multiple ecommerce shopping carts in Drupal Commerce | Acro Commerce
Josh Miller

Author

Josh Miller

, Acro Commerce Alumni

Multiple ecommerce shopping carts in Drupal Commerce

Many people researching Drupal Commerce 2.x for Drupal 8 (or the upgraded Drupal 9) likely want to either remove the extra ecommerce shopping carts or allow checkout for multiple carts. This blog post will explain why we have multiple carts — and why being able to checkout with multiple carts is challenging but possible.

Why you can have more than one Drupal Commerce cart

First, let's demonstrate what Commerce 2.x can do out of the box for a single user and is often considered a bug. 

  1. Go to Acro Commerce's demo store.
  2. Start as anonymous and register as a user.
    1. Register here.
    2. Check your email/spam and click a link.
    3. Set your password because you'll need to log back in shortly.
      Note: Acro Commerce doesn't use your email address used on the account sign up on this site to contact you for marketing purposes. You can opt into marketing materials by clicking the large red help question mark on the right.
  3. Once registered, add something to your cart, and log out.
  4. Add something to your cart and log in.
  5. Go to /cart.

Shopping-cart

If you see two carts, then you have discovered, like many others, that Drupal Commerce 2.x shows multiple carts by design. Drupal Commerce 1.x created multiple carts like this, but it would only show one cart at a time. In 1.x, you could follow the five steps outlined above, checkout, and your original cart would display.

Why? Because the system will not delete carts. We're using a simple anonymous session to create two carts in a potentially common edge case.

The pros and cons of multiple carts

Pro
Con
  • Customers never lose a cart, even if their site use means they have more than one.
  • You could have multiple sellers, enabling a marketplace feature to be built on top of the existing functionality.
  • You could enable different checkout workflows (one for digital services, one for recurring services, and another for physical items that require shipping).
  • You could end up with a confusing user experience by making your customers check out multiple times.
  • Payment and fulfillment must be handled separately for different items or different vendors.
  • More than one cart presents a significant visual challenge for designers.
    • In the cart dropdown, how do you show more than one cart?
    • How do you handle more than one checkout button on the cart page?

Turning off multiple carts in Drupal Commerce 2.x

There are two relatively simple Drupal modules you can use to show a single cart to a user:

  • Commerce Combine Carts — If this module is turned on, the multi-cart demo above will not produce two carts.
  • Commerce Cart Advanced — This module packs a lot of features into it for the crowd of users who want management tools around their multiple-cart experience, but it also includes the option to display only one cart at a time. It was created and is maintained by Acro Commerce's senior developer known as krystalcode (Dimitris Bozelos).

Checking out multiple carts, Etsy/Amazon-style

The holy grail of marketplace commerce is multi-store and single-checkout. You could have a site that features multiple stores, and customers could check out once from more than one store. 

According to the original author and former maintainer of Drupal Commerce 2.x, bojanz, you can do this by coding a form that acts like a checkout flow form but simultaneously changes more than one order.

However, you also have to consider several other issues: 

  • Fulfillment — If the stores sell physical products, how will these orders appear to each store's customer and customer service? Likely, each store would want to only see the products they are responsible for.
  • Order management — Even Amazon does some weird things with orders for its customers. Often, orders are split up for seemingly no reason, changing order totals and making order management challenging for customers and customer service.
  • Payment — If you, as the site owner, plan to pay stores from your bank account, you'll want to set up a single, site-wide payment gateway and manage disbursement payments to your store owners. If not, then you'll require each store to have its payment gateway credentials or some other even more complex setup.
  • Taxes — Assuming you have reasonable solutions for all of the above, taxes will still likely make it very hard to move forward. Tax law is complex in the best of times, and depending on how you take payment, tax rules would need to be created and maintained per store. Solutions like Avalara AvaTax only work per store and can be overly expensive for small retailers.

The bottom line

You have a few contrib options to manage carts for your customers. But if you want that elusive multi-vendor, single checkout, you'll have to plan well according to your business needs. Regardless, the flexibility of Drupal Commerce's ecommerce cart functionality can create the best ecommerce shopping carts out there; you only need to know how to do it.