A First Look at Drupal Commerce: More Than a Module

April 25, 2012
Drupal Commerce Logo

Last week we were evaluating solutions for a client and I had the opportunity to install and test Drupal Commerce (DC) for the first time. Digett and I both have a long history of Ubercart use, but since we made the move to Drupal 7 in the middle of last year none of our new website builds have needed a full shopping cart system.

This client is currently using a LMS combined with a CMS (Joomla) to sell and manage access to online and offline learning products. The list of products is small, but each product includes an extensive list of individual pieces of content (video, audio, surveys, and text). If we could reduce the complexity of these systems by using Drupal for everything, it would be a huge win for the client.

Getting Started

There are two paths you can take to get Drupal Commerce up and running.  

  1. The first option is to install Drupal and Drupal Commerce, along with all its dependencies (Ctools, Views, Entity API, Rules, and Address field) from scratch and configure everything to work as you prefer.  
  2. The second option is to use the Commerce Kickstart distribution.

At Digett we have a Drupal 7 base installation with all of our favorite modules already pre-configured the way we like them; for me it would have taken much longer to reproduce all of that work on Kickstart than to just install Drupal Commerce from scratch.

If you are starting without an existing site or don’t have your own distribution/base install of Drupal, I recommend sticking with Kickstart. Kickstart also gives you a chance to test Drupal Commerce with very little investment before going back and building it from scratch.

Drupal Commerce (D7) vs. Ubercart (D6)

Drupal Commerce is very tightly integrated into Drupal 7 core, Views, and Rules — so much so that it’s sometimes not clear where to go to customize certain parts of it (the answer is usually Views or Rules). This tight integration means that much of Drupal 7’s entity model is leveraged in Drupal Commerce, thereby reducing the duplicate work for the DC developers. It also means that once you overcome that feeling of wondering how to get into the store administration area and accept the fact that it’s just all Drupal administration, then DC begins to make so much sense.

In contrast, Ubercart in D6 was really a stand alone program that used Drupal's nodes and exposed itself to Views. This made the administration of your store feel separate from administering Drupal.

I think that the less experience you have with Drupal the more this will feel like the better way. And clients seem to understand that separateness very well. It will remain to be seen how our clients respond to Drupal Commerce. But worst case scenario we will have to create administrative views and dashboards to help the client with DC.

Lastly, Drupal Commerce has a different approach to Products and their variations. Instead of adding variations to a product node as in Ubercart, each variation is created as a standalone product. But those products are not directly addressable.  Instead you create a “product display” content type where you can select a list of products to be displayed.

Think of it like inventory in the stockroom (product) and a point of sale display (product display). This approach can accommodate nearly any ecommerce situation since most of the advanced logic is created in Rules without coding new modules.

My Impressions

I’m initially very positive on the way Drupal Commerce is built and functions. I think the decision to base it so deeply on Drupal’s entity structure is best in the long run. I’ve seen complaints about needing to creating a new product for each product variation, but I see how this approach provides much more flexibility.  And there are already some projects focusing on making simple product variations easier to build.

Drupal Commerce was blazing fast to configure. In less than five hours (including the time spent watching some of the tutorial videos from Commerce Guys) I had a fully functioning test site with Drupal Commerce configured to allow access to a particular node of video content when a particular product was purchased just as the client needed.

DC’s use of Rules for most of the logic, while providing an overwhelming capability for customization, could be a barrier for certain groups of Drupal users who are not used to Rules. If you’ve not used Rules much, it’s worth the effort to develop some experience there. It will help you in all of your Drupal development.

The one major downside of Drupal Commerce is lack of documentation, but Ubercart isn’t any better in that area. The video tutorials from the Commerce Guys make up for it in some areas, but for something like an ecommerce solution, documentation with screenshots will be critical to making DC accessible for the non-developer, site builder.

In all, I would wholeheartedly recommend Drupal Commerce for a new ecommerce site. I know Ubercart also has a D7 version now and it is based on Entity API, Views, and Rules too. DC and Ubercart even have similar numbers of site installs on their D7 releases, but it seems to me that the bulk of the Drupal community is focused on Drupal Commerce.

The flexibility and speed of development are refreshing in ecommerce software. With another 12 months of development, community support, and documentation DC could be a force to be reckoned with in ecommerce as an industry, not just on Drupal.

Comments

Thanks for the write-up, Art.

Thanks for the write-up, Art. Glad to see the architecture is "clicking" for you, and it will only get better as the supporting modules around entities / fields improve. For example, it's entirely likely we'll have our Entity Reference Field module as a dependency for Commerce 2.x, which would in turn make improving our Inline Entity Form into a dependency even more attractive. And then of course we have actual entity-specific classes in D8 to look forward to instead of stdClasses all over the place. The times they are a-changin'!

Additionally, your comments about the documentation and related "non-code" components of Drupal Commerce are taken to heart. I haven't officially announced him yet, as he doesn't start until May 7th, but d.o user joshmiller will be joining Commerce Guys in a week and a half to spearhead the documentation effort on DC.org and elsewhere. As it turns out, documentation just doesn't magically happen (who'da thunk it? ; ), so I'm looking forward to seeing what Josh can do to bring what we have up to date, complete it, and introduce some helpful videos / diagrams where possible.

Best of luck on your Commerce projects!

You heard it here first,

You heard it here first, folks! The inside scoop on a documentation effort from the Commerce Guys.

@Ryan, thanks for chiming in on the post. The Inline Entity Form module is a welcome addition. All the coming developments are exciting and will only make a great product even better! And be sure and let us all know how we can help with documentation effort.

We are in the middle of a

We are in the middle of a D6->D7 conversion and haven't settled on what to do for e-commerce yet.

I have seen enough of the demos to believe that the user experience will work, probably either way. Our D6 Ubercart experience is that the backend office processing sucks. That might be partially related to how we choose to do it in our office, but it is just plain hard to deal with.

I am about to bring up a Kickstart test site and see what the backend processing looks like. So far I have not seen many comments on other people's experiences as I really want to know what others do.

It's pretty vanilla on the

It's pretty vanilla on the back end, Walt. I run a small e-commerce site on Drupal Commerce where we do on-site processing, and slowly the tweaks I put on my site work their way into core. (Incidentally it's also the site I originally developed the Commerce Flat Rate for.) We're limited to what you can do with Views for the most part, though the roadmap for Kickstart 2.x involves bringing more customizations to bear there.

Spicing the Views up with bulk operations seems to be a pretty common task, and I think we're all still waiting for an "Entity Comment" module to appear that lets you attach comments to any type of entity. Aside from that, you may find a few other administration enhancement modules in the contrib list at http://www.drupalcommerce.org/contrib.

Would like to add that there

Would like to add that there is a responsive mobile THEME, AT Commerce, designed to work with Drupal Commerce:

http://drupal.org/project/at-commerce

As a Drupal user/frontend

As a Drupal user/frontend developer I'm excited about DC even though I don't use it (yet, anyway) because of the improvements to valuable modules like Rules and Views (and Drupal Core itself of course) that DC can and do contribute to.

@Jason: Nice. We are fans

@Jason: Nice. We are fans of AdaptiveTheme around here so it's nice to see a Drupal Commerce theme.

@Adrian: Excellent comment! Sometimes we overlook those residual benefits of a product like DC.

Thanks for the writeup. Busy

Thanks for the writeup. Busy trying my best to get DC work as a membership platform.

I am a Drupal noob, and find documentation and video's invaluable, if there was more DC documentation out there it will be awesome.

Thanks for the posts.

Cheers,
Johann Smith

@Johann Smith: You are

@Johann Smith: You are welcome. Take a look at this video (http://vimeo.com/33808828). It should help you with your membership requirements.

Thanks for the link, I went

Thanks for the link, I went through all the Commerce Guys videos on Vimeo and single this one out as one to watch, now it's moved to the top of my list....

Just wondering why you

Just wondering why you compared Ubercart 6 VS Ubercart 3 which even though its a port of D6 to D7 is quite a bit more integrated with Rules and Views which gives non developer users a fast start.

Pingback

[...] Guys on Vimeo A First Look at Drupal Commerce: More Than a Module Last week we were evaluating solutions for a client and I had the opportunity to install and test [...]

Hi guys! I had a developer

Hi guys!
I had a developer who established my webstore with Drupal and Ubercart nearly a year ago. He did a great job but it was rather expensive for me. Since then I took some time and made some researches about Drupal based shopping carts. And I see that DC would be a better option for my business. So, I am now searching for effective upgrade from UberCart to Drupal Commerce without hiring someone else.
I found this promo video about migration service http://www.youtube.com/watch?v=FPZxcm_FKSM
So, I have basically two questions:
1. Is it good?
2. Are there any other options that I am missing?
Thanks for any help.

Hello Paddy - Cart2Cart looks

Hello Paddy -

Cart2Cart looks pretty interesting, though I see Drupal Commerce isn't currently listed... I think I have a better idea for us. I've used Drupal 6 in small site builds but now I looking for a reason to get into D7 & DC via a real world scenario.

In short, if you're comfortable giving me a site credit (eg: small link @ footer of ea page), I'd be quite interested in migrating you to DC. After cloning your site, i can stage the build on my development servers before we sign off & move it all to your public server.

Cheers,
-- A#M#S#H#E#P#P#A#R#D [no hashes & lowercase of course] (at) gmail