Skip to main content

Analyses of Drupal Commerce Multiseller implementations

Published on 2013-12-03

I recently installed 2 modules (Commerce Store and Commerce Marketplace) as an exploration to run a multiseller shop with Drupal Commerce.

There is a great threat on where this functionality is discussed:

In this article I share my results and opinion about these two modules.

Who am I?

  • Developed ecommerce websites with Drupal Commerce, Magento and Drupal Ubercart

  • 4 years+ Drupal Site builder and Developer

  • 5 years+ ecommerce Site builder and Developer.

What is eCommerce Multiseller?

  • One Website, multiple sellers a.k.a. stores

    • Think Etsy, Amazon Marketplace, Ebay

  • Unified Customer Experience

  • Can buy at multiple stores at once

  • Stores have their own dashboard for managing products, orders, promotions, etc.

Drupal Contrib options

As of december 2013 there are 2 options:

- Commerce Store (sandbox:

- Commerce Marketplace (contrib:


I recently installed both and in the next 2  paragraphs my results and opinion about these two modules.

Commerce Store

How is works:

Order handling

Creates an order-group-identier property to each order. Say you order at 2 stores, then you end up with 2 orders, both sharing the same order-group-identier.

Product, Store and Order management

Extends default commerce paths with store-views and actions. Code looks very clean and close to default commerce implementation.

Store handling

One user can have multiple stores (being author). One store can have one author.

Shipping, payment, stock support?

Not out of the box. Because you can’t rely on one order-id (it’s splitted up in multiple orders) a lot of rules don’t work and must be rewritten. This can be daunting.

The good, the bad:


Yes, not so easy to install. Has depencencies not set in the info files. Be sure you install full commerce stack including payment first.

In my testing-environment order-states were updated perfectly untill I really checked out (payed). At that time only one of the orders got the status ‘pending’ and the orders stuck in ‘checkout:payment’.


Code looks beautifull and it really feels like ‘drupal commerce’. The architectural choice to split up orders makes it necessary to write custom handlers for extending modules like shipping and stock.

Because this module isn’t full featured a lot of development has to be done to get your marketplace.

This might be a great choice / starting point if you want to go full fledged.

Commerce Marketplace

By: farhadhf

State: contrib, beta1 published on November 20 2013.


How its works:

Order handling

Creates ‘shadow’ orders for each store referenced via a field ‘original-order-id’. If you order at 2 stores, then you end up with 3 orders (2 store-orders, one marketplace-order).

Product, Store and Order management

Has seperate paths and access-callbacks for store management. Looks little less neat implementation.

Store handling

One user can have multiple stores, one store can have multiple members (aka managers). Think Organic Groups.

Shipping, payment, stock support?

Shipping is included, but you don’t have shipping-fees per store. Because there is still a ‘top-order’ most rules do work with little customization (“only work on orders of type ‘marketplace’). This can be a big plus.

The good, the bad:


Yes, but hard to set up. This module uses its own paths for admin views and actions. And those are not visible in the admin or navigation-menu. In my testing-environment I could only use the add2cart-widget and not the normal cart-form.


It does work. Alltough in my view it tries to rebuild Drupal things to much (why not organic groups, why not extend commerce views?). The architectural choice to have 2 types of orders (on marketplace and store-level) does have practical benifits when you want to extend your marketplace.

This module is kinda full featured, but if you don’t like it’s default implementation you may have a problem. Also here, custom development has to be done to get your marketplace live.

So, possible?

  • It’s possible, but a lot of custom development is necessary for a succesfull implementation.

  • 2 options, no clear winner.