Oct 02 2018
Oct 02

The Media module made its way into Drupal core for the Drupal 8.4 release a while back. It gives Drupal users a standardized way for managing local media resources, including image, audio, video, and document files. We wanted to add using this module into our Drupal Commerce demo site to give an example of how this module could potentially be used in a Commerce setting.

In this Tech Talk video, I’ll quickly show you how we updated our digital download Commerce product example to use the Media module, giving us the flexibility to add audio samples to the product page and access to the full download after purchase.

[embedded content]


The product I wanted to update is the Epic Mix Tape by Urban Hipster digital download example product. This is a fake album featuring all of your favourites by artists you’ve never heard before. The idea is to showcase that you can add digital products to a Drupal Commerce based online store, not just physical products.

Originally we were using just a standard file field that, when checkout was completed, gave the customer access to download the file. This was done before the Media module made its way into core. Now that the Media module is in core, we figured it’s time to update it.

Setting up an Album media type

When the Media module is installed you get some new admin menu items. The first is a section called Media Types (under Structure) where you can configure your media entities like any other Drupal content entity. Here I created an ‘Album’ media type with two unlimited file fields, one for sample audio tracks and one for the full audio tracks. This is the basis for creating my downloadable albums.

The second admin menu is under Content. Here you get a new Media tab which is where you can add, edit and remove any media items. Since I already created the Album media type I can now add the Epic Mix Tape album files here. This completes the media side of the updated digital download product. All I need to do now is update the product configuration to use it.

Completing the digital download product configuration

Now that the media type has been added and I’ve uploaded an album, I need to set up a way to use it. It’s pretty easy to do. First, for the digital download Product Type, I add an entity reference field to give a way for selecting the album media entity to use for the product samples.

I then do the same thing for the Product Variation Type. This one, however, will be used to give access to the full files after purchase.

Finally, some template updates. The Drupal Commerce demo site has some pretty custom template files for the products. In the template, I access the media entity directly and loop through the items, printing each audio sample and track title onto the product page. I do the same thing for the checkout complete page but print out the full tracks instead.

Depending on your templates and display settings, you can get similar results without manually accessing the files in the template file, however I wanted to print out the file description with the audio player right on the page. Showing the description unfortunately is something you don’t have the option of doing using the standard audio display widget.

And that’s it! Check out the Urban Hipster Drupal Commerce demo site below to see it in action.

Demo Drupal Commerce today! View our demo site.

Jul 30 2018
Jul 30
Comparing Drupal POS, Shopify POS and Square POS

If you need to accept card payment in a physical location, you need a point of sale (POS) system. There are many different POS systems out there so knowing how to choose the right one for your business can be challenging. All systems claim to be everything you need, however this might not be the case for all businesses. Most POS systems are designed around “industry best practices,” meaning that they try to serve the majority of businesses based on the most common needs. Many systems start to fail when the requirements of the business break away from the norm.

How do you choose the right point of sale for your business? The best way I’ve found is to look at three or four different examples and do a direct comparison. Today I’ll compare 3 different web-based point of sales systems - Drupal POS, Shopify POS, and Square POS. I’ll look at features, costs, usability, integrations, and more. In the end, I’ll try to understand the strengths and weaknesses of each and ultimately determine what business types they work best with.

All of the POS systems I examine today are web-based (or cloud-based). This means that these systems are connected to the internet and all of the data is kept online. Web-based systems are increasingly becoming more popular because they are generally easier to setup and require less time and knowledge to maintain. They can also integrate with your eCommerce store. You can read more benefits here.

The point of sale systems

Here is an introduction to the three POS systems I’ll be comparing.

Drupal POS

Drupal POS is a free add-on to the popular Drupal content management system. Drupal is open-source and completely free to use. It’s known as a very developer-friendly platform to build a website on and has a massive community, over a million strong, helping to advance the software and keep it secure. The open-source eCommerce component for Drupal is called Drupal Commerce. While Drupal Commerce has a relatively small market share, the platform is very powerful and can be a very good choice for businesses that have demanding requirements or unique product offerings.

Shopify POS

Shopify POS integrates with the popular Shopify SaaS eCommerce platform. Unlike Drupal Commerce, Shopify is a standalone product and stores running on the platform pay a monthly subscription fee to use it. With that said, business owners are given a well developed tool out-of-the-box that has all of the bells and whistles most stores require to get up and running fast. Shopify aims to serve the common needs of most businesses, so very unique business requirements can be hard to achieve.

Square POS

Square POS is an add-on point of sale service for your business and is not really a platform for running your entire store, although it does now offer a basic eCommerce component. It can also integrate with many eCommerce platforms, including Drupal Commerce. Square aims to make the process of accepting card payment easy to do, without bulky equipment.

Service comparison

Below is a side-by-side comparison of each service (as of July, 2018). Note that some of the information below applies to stores who also have an eCommerce component. If you don’t need eCommerce, you can ignore those items.

Note for mobile viewers: Swipe the table side-to-side to see it all.


Drupal logo

Drupal POS

Shopify logo

Shopify POS

Square logo

Square POS

Service philosophy


ProprietaryProprietaryService support Yes *
* via Drupal Commerce, in-house IT or third-party support  Yes *
* via Shopify or third-party support Yes *
* via Square Setup costs for basic service  $0 *
* The software doesn’t cost anything to use, however you may need to pay someone to set it up for you

$29 USD *
* Basic package pricing

$0 Ongoing costs for basic service $0 *
* The software doesn’t cost anything to use, however you may need to pay someone to apply occasional software updates. Third-party transactions fees may apply. Website domain and hosting also required $29/mth plus transaction fees and add-on product fees. Monthly fee increases with package Transaction fees and add-on product fees Payment gateways Third-party Shopify or third-party Square Accept cash payments Yes  Yes Yes  Accept card payments Yes Yes Yes Save cards (card on file) Yes  Yes  Yes Process recurring payments (i.e. subscriptions) Yes Yes *
* Third-party add-on required with separate monthly fees Yes Accept mobile payments Yes *
* Third-party hardware required Yes *
* Monthly fee for service hardware Yes *
* $59 USD one time price for service hardware Built in invoicing Yes *
* Using free add-on Yes Yes Apply discounts and promotions Yes Yes Yes Use with gift cards & coupon codes Yes Yes *
* Not available for basic plan  Yes  Printed gift cards provided by service  No *
* Add-on could be created to allow this functionality, but does not currently exist Yes *
* Additional fee for printing  Yes *
* Additional fee for printing Integrated taxes  Yes *
* Advanced taxes can be handled via third-party add-ons or configured directly within the platform Yes Yes *
* Third-party add-ons required
  Apply additional custom fees (i.e. environment fees, tipping, donations, etc.) Yes Yes Yes *
* Limited to tipping Built-in eCommerce Shop Yes *
* Drupal POS is an add-on for Drupal Commerce Yes *
* Shopify POS is an add-on for Shopify Yes *
* Basic Square store or integrate with third-party platforms Built-in website and blog Yes Yes  Yes  Multi-business (separate businesses using same platform or account) Yes No *
* Separate account required for each business No *
* Separate account required for each business/bank account Multi-store (multiple locations or stores of the same business) Yes  Yes  Yes  Number of products allowedUnlimited 2000-7000 *
* Number depends on device used to manage inventory Unlimited *
* Square eCommerce store only displays 1000 products. Third-party platform needed to run a larger store Number of product variations allowedUnlimited 4000-10,000 *
* Number depends on device used to manage inventory Unlimited * 
* Square eCommerce store only displays 1000 products. Third-party platform needed to run a larger store Number of registers allowedUnlimitedUnlimited  UnlimitedNumber of cashiers accounts allowedUnlimited  2 *
* Number of accounts increase with service plan Unlimited  Access controls Yes Yes  Yes *
* Additional fee of $6/employee  Create new user roles for advanced access controls Yes No Yes *
* Grouped with additional fee above. Mobile POS (i.e. use at trade shows, markets, etc.) Yes Yes Yes Sync inventory between online and offline stores Yes Yes Yes *
* Third-party platforms may not be able to sync inventory  Sync user accounts between online and offline stores Yes Yes Yes Sync orders between online and offline stores Yes Yes Yes  Park & retrieve orders Yes  Yes  Yes  Abandoned cart recovery (eCommerce) Yes *
* Using free add-on or third-party solutions Yes Yes *
* Requires third-party solutions Generate product labels Yes Yes Yes Print receipt Yes  Yes  Yes  Email receipt Yes Yes Yes  Customize receipt information Yes Yes *
* No layout customization, only the information shown Yes *
* No layout customization, only the information shown Process returns Yes Yes Yes  Basic reporting Yes Yes *
* Not available for basic plan Yes  Advanced reporting Yes *
* Using free add-on Yes *
* Not available for basic or mid-tier plans Yes  Supported operating systems Any *
* Requires only a web browser to use  Android, iOS *
* Requires app. iPad recommended with limited support for iPhone and Android Android, iOS *
* Requires app Themable (i.e. brand the POS interface) Yes  No No Customer facing display Yes No No Integrate with accounting/bookkeeping services? Yes Yes  Yes Integrate with other eCommerce sales platforms (Amazon, Ebay, etc.)? Yes Yes Yes *
* Only if using third-party eCommerce platform that supports this Integrate with marketing services (MailChimp, HubSpot, etc.)? Yes Yes Yes *
* Only if using third-party eCommerce platform that supports this Integrate with shipping providers (FedEx, UPS, etc.)? Yes Yes Yes Third-party calculated shipping rates Yes Yes *
* Not available for basic or mid-tier plans No Generate shipping labels Yes Yes Yes *
* Integration with ShipStation adds this functionality for an extra monthly cost Custom integrations with third-party services Yes Yes Yes Use offline (and have your transactions sync once back online)No *
* This is a requested feature currently in discussion Yes *
* Can only accept cash or other manual payments Yes Personalized customer feedback/support Yes Yes Yes

Hardware Requirements

Cashier terminal Third-party *
* Can be anything that runs a web browser (computer, tablet, phone, etc.) Third-party *
* iPad recommended with limited support for iPhone and Android Third-party *
* Any device running Android or iOS Card reader Third-party Provided Provided  Contactless payment Third-party Third-party Proprietary only  Cash drawer Third-party Third-party  Third-party  Barcode scanner Third-party *
* Can be a traditional barcode scanner or anything with a camera (i.e. phone, tablet, webcam, etc.) Third-party Third-party  Receipt printer Third-party Third-party  Third-party  Barcode printer Third-party Third-party None  Customer facing display Third-party *
* Can be anything that runs a web browser (computer, tablet, phone, etc) None None Custom/DIY hardware Yes No No

What business is best suited for each POS?

As you can see, all three options have most of the same features. Most businesses would probably be fine with any of them, but let’s see if we can distil down where each system fits best.

Drupal POS

Who’s it for?

If you have a medium to large business with unique business requirements, Drupal POS could be the ideal platform for you to work with. For small business, Drupal POS and Drupal Commerce might not be for you. The initial cost to get a site built might be too high for your budget, however, if you look at the long term fees charged month by month from the other venders, this upfront cost will be saved in a matter of time. Also, if you have a really obscure need that no other platform will accomodate, Drupal Commerce can.

If you’re already running a Drupal Commerce store and now want to add point of sale to your physical locations, Drupal POS is probably a no-brainer. It’s built on-top of the existing Commerce architecture, so you know it will integrate properly in every way, and you can utilize your existing web development service provider to help you set it up.

Demo Drupal Commerce today! View our demo site.Additional details:

If you’re not already using Drupal then you have some larger questions to consider. Do you already have an ecommerce website? Would you be willing to invest in replatforming? Since Drupal Commerce is an eCommerce platform, you would ideally be running your whole operation from Drupal Commerce. That’s not necessarily a bad thing though. Drupal can readily handle any business case you can throw at it. It can integrate with virtually any third-party service, it can provide you with a single location to manage all of your products, orders, customer accounts, etc., it’s built to scale with your business, and on top of all that it’s a powerful content management system that will run your blog and any other content need you might have.

From a support point of view, because Drupal is open-source, you don’t have a single source of support to contact. Instead, you would need to utilize your current web development service provider (if you have one), or work with one of the many Drupal agencies out there who are specialized in Drupal development. This means you can shop around and find the company will work best with you.

Another advantage to Drupal POS (and Drupal as a whole) is that because it’s free, open-source software, you don’t actually have any type of fee to use it. Not one cent. You can have as many stores, products, staff accounts, transactions, registers, etc. as you need, and the price is still $0. Instead of spending your hard earned money on platform fees, you can now redirect those funds to developing your website and POS to do whatever you need it to, or towards marketing, or staffing, or growing your business.

Shopify POS

Who’s it for?

If you’re a small to medium sized business who is just getting started, you don’t have a large budget, and you want the best eCommerce site with POS capabilities, Shopify and Shopify POS is probably your best bet. Also, if you’re already running a Shopify site and happy with it, the Shopify POS is probably ideal for you.

For your business is growing or you run a large, enterprise level company, Shopify and Shopify POS probably won’t cut it with what you need. For one, the fees associated with this level of company can be significant. If you’re at that point, replatforming to something like Drupal Commerce can recuperate a lot of lost earnings and give you full control of your development path, without restrictions.

Additional details:

Shopify has built their business around being easy. Whether it’s opening up a new store or managing your inventory and customers, the Shopify interface is clean and straightforward. As mentioned earlier, it’s ideal for small and medium sized companies just getting started.

However, where Shopify starts to fail is when your business growth is strong and your requirements start to become more complicated. With Shopify, the number of products and product variations you’re allowed can limit your growth. As you start adding more staff, your costs go up. You can pretty quickly go from a $29/mth plan to a $300+/mth plan in short order. 

Another possible deal-breaker is if you product offerings have very unique requirements. Shopify is built to work around the most common business requirements. When your business breaks out of this mold, the platform isn’t designed to accommodate. However, if you can stay within the “typical” business requirements, Shopify probably has everything you need as long as you’re willing to pay for it.

Square POS

Who’s it for?

Square POS is great for small businesses and food service businesses. It’s an easy to use, low-cost option that doesn’t really require anything more than your phone and the provided card reader. Their software interface is clean and easy to understand.

If you’re a medium to large business, or you have very high traffic, Square POS might not be for you. Square is mainly an add-on service to existing businesses, so don’t expect much from an eCommerce perspective. 

Additional details:

Square has become a pretty common sight around town these days, especially when you’re at small business such as cafes or walking around a farmers/artisan market. Square has been able to provide a very good product that allows people to jump in to card transactions easily. It fills this need.

When your business grows and you start having multiple stores and an eCommerce component, you may quickly grow beyond Square’s capabilities. Drupal POS and Shopify POS both have native eCommerce that they work with. This is important when you’re talking about inventory management and other integrations. While Square does have a basic eCommerce component and can integrate with various eCommerce platforms (Drupal Commerce being one of them), you may struggle to get some of the features that Drupal Commerce and Shopify have by default.

Your point of sale integrator

Acro Media is an open-source eCommerce development agency. Our experience in this area is vast and we would love to share it with you. If you have a project that you’d like to discuss, one of our friendly business developers are always available to have that discussion at no cost to you.

Contact Acro Media Today!

Jun 25 2018
Jun 25
Cybercrime is a growing problem in today's community.

In 2017 alone, we saw the record-breaking attack of the WannaCry ransomware scandal bring plenty of businesses to their knees. In fact, the spread of the ransomware across 150 countries caused many professionals in the industry to call it the biggest offensive in cybercrime history.

As the digital world continues to evolve, it brings with it countless new opportunities for success, along with various vulnerabilities that modern entrepreneurs need to be aware of. If you're launching an eCommerce company in the current marketplace, you'll need more than just a solid USP and a great marketing strategy - you'll need a CMS (content management system) solution that keeps your online presence secure.

After all, if customers don't believe that your site is secure, then they're not going to buy your products. It doesn't matter if you sell the best products or services in the world, no-one's going to risk giving their details to an unsecured store.

Drupal Commerce is one of the most trusted and secure eCommerce solutions on the web today - used by organizations across the globe. To help boost your chances of a successful eCommerce venture, we're going to explore some of the ways you can develop a more secure site with Drupal Commerce.

1. Commit to Regular Updates

Updates are key to any cyber-security strategy. When a company rolls out an update for a piece of software, they're not just giving you new features to play with, they're also delivering bug fixes and patches that can protect your system against vulnerabilities that exist within the network.

People often postpone updates because they get in the way of day-to-day tasks. However, this could mean that you're leaving entry windows open for people who want to worm their way into your files. The developers of Drupal and Drupal Commerce regularly release timely updates that fix the security issues in your CMS. You should be making sure that these updates are being applied when they become available, either by doing it yourself or by contracting a company to do them.

2. Use the Right Login and Password Security

The login page at the front of your eCommerce site acts as the door to your organization. The best way to protect your future is to fortify that door with the correct security measures. While a great password and username is a great way to get started, some statistics suggest that around 35% of users have weak passwords - and many of the remaining 65% can still be cracked.

With Drupal as your CMS, from the moment you first install the system, the passwords on your database get encrypted and "salted". This means that your password becomes almost impossible to hack. Additionally, Drupal offers a range of user-contributed modules thanks to its open-source framework, which support everything from SSL certificates to two-factor authentication.

3. Configure Your eCommerce Access Controls

When it comes to securing your eCommerce site, there's only so much any CMS can do to help you. At the end of the day, you'll need to make sure that you're making full use of the control systems that solutions like Drupal provide to give you absolute authority over the accounts that have access to your website. For instance, a blog account might have access to write content on your site, but not change the price of products.

Drupal and Drupal Commerce have a range of access controls that allow you to choose authority levels throughout your website. You can create categorized accounts for specific parts of your website, ensuring that each person gets only the permissions they need and no more. Essentially, this reduces the risk of human error as you add more people to your eCommerce team.

Demo Drupal Commerce today! View our demo site.

4. Stay Ahead of the Curve

One of the most important things you can do to protect your eCommerce site is make sure that you're always aware of the latest DDoS attacks, web issues, and attacks facing your industry. The more you know about the threats you're facing every day, the easier it will be to establish a strategy that helps you to fight back against them.

Drupal helps eCommerce site owners to stay ahead of the curve, with one of the largest communities in the world, packed full of more than 1 million strategists, developers, and designers. This kind of attention ensures that any time an issue or error in the code might be subject to a new attack, it's duly reported and dealt with.

Aside from the support of the community, Drupal users can also access the "Status Report" function on their UI, which keeps you updated on any problems with the code on the site, this is the easiest way to keep on top of your website management, and make sure you're not falling behind on security.

5. Enable the Right Security Modules

When you want to make your home more secure, you add new alarm systems, motion detectors, and even locks. On the other hand, when you want to keep your eCommerce site safe, Drupal offers modules to help you accomplish specific security measures. For instance, there's:

  • The password policy module: This allows you to establish a specific rule for passwords. You might demand that all passwords have one capital letter and special character for instance.
  • Username enumeration modules: This module ensures that hackers can't gain access to your site by constantly trying to guess usernames.
  • Automated logout: This module allows you to choose a time limit for user sessions. If someone remains inactive for too long, they'll be automatically logged out.
  • Honeypot: This module helps to eliminate spam-bots from using website forms and spamming your administrators and users.

6. Add HTTPS

Building a secure Drupal Commerce website doesn't just protect your business from attacks, it can also give you a better reputation in your chosen eCommerce industry. Adding the HTTPS certificate to your Drupal hosting set-up is a great way to deliver that peace of mind. 

HTTP Secure is what you get when you install an SSL certificate onto your website server. It ensures that cybercriminals can't intercept and tamper with the information sent back and forth between you and a customer. Aside from the obvious protection they offer, SSL certificates give you those little green padlocks next to your URL that leaves your customers feeling confident and help you to achieve a better ranking in the search engines. 

In fact, there's no reason not to include and SSL certificate now since you can do this for free through Let's Encrypt!

Secure eCommerce Starts with a Trusted CMS

In the ever-evolving world of website security, it's difficult to guarantee any company's security. One moment, it can seem as though everything is running smoothly, then the next, you're struggling to retrieve your details from a hacker. The only thing you can do is take every possible step to protect yourself from an intrusion. 

Drupal, with its security modules, password protection, and state-of-the-art open-source software has earned the trust of everyone from industry giants to government agencies. The websites of UNESCO, the White House, Fox News, and Harvard University are all built on the Drupal framework. After all, just because it's open-source doesn't mean that Drupal isn't secure. Every module contributed by a user is thoroughly reviewed by the community. Drupal also has a dedicated security team that is always leading the security initiative. 

With this safety-first approach, Drupal ensures that every eCommerce site you build has the best chance of standing strong against attackers and delighting your customers in the process. 

Contact us and learn more about our custom ecommerce solutions

Raj Jana is the CEO and founder of the JavaPresse Coffee Company. As an eCommerce entrepreneur, Raj knows a thing or two about running a secure website, and he's always looking for new ways to keep his customers safe.

Jun 19 2018
Jun 19

Omnichannel generally means the shopping experience is unified and seamless whether you do it on your laptop, in store, through your phone, etc. The team at Acro Media set out to demonstrate just how easy it is to give your customers a true omnichannel experience using Drupal and Drupal Commerce.

The omnichannel setup

As part of our demo at DrupalCon in Nashville, we did a pseudo T-shirt pre-order. Before the conference, attendees could use our Urban Hipster eCommerce demo site to pre-order a Drupal Commerce shirt in their size. When they completed their pre-order, they got an order number to bring with them to our booth. 

Check Out Our High Five Drupal Web SeriesPeople who didn't pre-order could also come to our booth and "purchase" (for free) a T-shirt using a self serve kiosk running the same demo site. 

So one side of the booth was the set up as the cashier/fulfillment area. The other side had the self-serve kiosk. We also had other laptops available so that we could bring up the admin interface as if we were a customer support person assisting a customer over the phone. The "support person" could find the customers order number or email address and fulfill the order. Easy peasy.

The whole time, our inventory of shirt sizes was counting down until the stock count hit 0. When our inventory reached 0 for a certain size, orders for that size could no longer be placed.

Why is this so amazing?

Some people were impressed but also a little puzzled, thinking that this sort of setup should just exist everywhere. Which it should, but it doesn't. With most retail stores, the online and in-store experiences are completely separate. They might as well be two different companies. If you buy something online and try to return it in store, it often can't happen. Loyalty points often don't transfer. The list goes on. Some places will let you buy online and pick up in store, but there might be a delay. They might say sure, you can pick it up in store, but not for 24 hours. In that case, you might as well just go to the store and find it yourself. Even knowing if an item is in stock can be tricky. The website might say there are three left, but that's just a snapshot from a certain point in time, and you don't know how often that gets updated. Maybe that was valid six hours ago, but that item has since sold out.

Why Drupal rocks

What makes Drupal so cool is that the point of sale and the Commerce module both use the same orders. A point of sale order is just a Drupal Commerce order. It has some specifics to the point of sale, but it can be loaded up in a regular interface. They use the same stock, the same products, everything. This is surprisingly rare. A lot of POS systems in particular are very antiquated. They date from pre-Internet times and have no concept of syncing up with things.

But we've created a true omnichannel experience. We've done it, and implemented it, and it's all open source and freely available. Anyone else could set up the same omnichannel setup that we did. We used a laptop, a cash drawer, a couple of iPads, nothing too fancy.

What's more, as the software matures, we're working on an even better demo with more smoothed out features, better integration, nicer interface, etc. Stay tuned.

Demo Drupal Commerce today! View our demo site.

More from Acro Media

Let's talk omnichannel!

We're always happy to help you understand how you can deliver a true omnichannel experience for you customers. Contact us today to talk to one of our business development experts.

Contact Us

May 29 2018
May 29

Did you know that Drupal has a Point of Sale (POS) module that pairs with the widely used Commerce module? That's right, Drupal Commerce is now the full end-to-end platform for a complete omnichannel ecommerce experience. Whether you're running an online store, a physical store, or both, you can do it all with Drupal Commerce!

One of the great things about a web-based POS is that all you need is a web browser for it to work. This opens the door to new POS hardware options. You can use an iPad, a laptop, or anything that has a browser. You don't need any expensive or specialized hardware from Moneris, nor do you need a branded solution such as Square. Instead, you now even have the option to build your own POS hardware for very little cost. Today we're featuring a Raspberry Pi based prototype that WE built! The whole setup cost about $250 CAD.

Watch the video below, or keep reading to learn more.

[embedded content]

As mentioned above, we bought a simple touchscreen and mounted a Raspberry Pi on the back. Once up and running, all you have to do is plug it in, connect it to the Internet, and it will automatically boot up into the POS login screen. If your staff has a problem, all they have to do is unplug it and plug it back in. There's no messing with settings or anything. Just reboot. Easy!

Once you get the hardware working, the display can be used in 3 different ways depending on how you need it:Check Out Our High Five Drupal Web Series

  1. The administrative view, which is what the cashier would use.
  2. A customer display view, which shows what the cashier has added so the customer can see the products and prices entered in real-time. Remember: all you need is a browser and something that can display a browser. The customer display is especially easy because it doesn't have to be a touchscreen; you could just use any monitor, a TV, etc, and run it off of the cashier hardware.
  3. A kiosk view, which is basically just running the front end of the site like your customers would do on their home computers. You could set that out in your store and let customers browse products and make purchases.

So, for a shoestring budget, we created a working point of sale that could be used in a store (see the video above). Aside from looking a little silly, our example is perfectly fine and works great. Plus, there are endless options for inexpensive enclosures to make it look better. You could even build or 3D print your own.

The do-it-yourself (DIY) route is a lot cheaper and gives you the freedom to do whatever you want. We will post further details soon on how to do all this yourself, including specific links to the components we used. And remember: it's Drupal, so it's open source, and all the software is free.

May 01 2018
May 01

A lot of universities use Drupal in some capacity. Universities don't typically have just one site; they're made up of a ton of different pieces put together for course registrations and calendars and events and alumni and so on. So a couple of those pieces might use Drupal. Or one or two departments might use Drupal even if others do not.

Many educational institutions like Drupal because it's open source. Universities are often publicly funded and favor open stuff more than proprietary products. Plus, they need to manage a ton of content by a ton of different people, so they need a really big robust CMS.

[embedded content]

Introducing OpenEDU 3.0

The new OpenEDU 3.0 is a Drupal distribution setup for educational institutions. The older version was mostly a set of custom configurations, whereas 3.0 actually has unique functionality. It has analytics and monitoring built right into it, for instance. There's a new analytics dashboard that allows a central admin to see what's going on in all the different sections without having to check a while bunch of different accounts, which is pretty cool. There's also new functionality related to content management, workflows and editing flows that universities need to handle.

OpenEDU is also being integrated into the Commerce (keep an eye out at commercekickstart.com), so you can have both of them together.

The Commerce Disconnect

Strangely, a ton of universities are using Drupal, but they are not using Commerce. Even those they use Drupal and perform ecommerce are typically using pretty terrible antiquated systems, if they have a system at all.

Check Out Our High Five Drupal Web SeriesLack of awareness is a big factor in this. A lot of universities are so focused on the publishing end that they don't even think about commerce. Another stumbling block is security—they don't want to deal with the compliance issues around online payments, so they just keep doing what they're doing (i.e. accepting cash or taking credit card details over the phone, which is even less secure).

The reality is that businesses or organizations within a university could really benefit from using Commerce, particularly if they already use Drupal. They could just tack on a bit of Commerce and easily sell club memberships and accept donations (remember: Commerce has a built-in point of sale). There could be one central system that IT could maintain and keep secure, and everyone could still spin up their own customized version of it.

TL:DR - Educational institutions already use Drupal and so should really adopt Drupal Commerce to replace their old, antiquated payment systems.

More from Acro Media

Chat with us

Our team understands that one-size does not fit all, especially in the education space, so we listen and work together to bring your students and staff the most secure and integrated open source solution available in the Commerce arena. Contact us today to discuss how Drupal Commerce can fit it with your existing systems.

Contact Acro Media Today!

Apr 19 2018
Apr 19

DrupalCon Nashville 2018 Session

Join Acro Media's technical Drupal Commerce veteran, Josh Miller (all things programming) and Business Developer, Becky Parisotto (all things business) as they walk through the wild world of physical commerce that is powered by and paired with a Drupal web interface. Both Josh and Becky work together with a number of physical commerce clients. Through our client’s requirements, we have gained a better understanding of the iceberg that is building an interface for retail, and allowing for that true omni-channel experience for both customer, and (sometimes more importantly) the business owner.

Josh will review the state of Point of Sale as it integrates with Drupal Commerce 2 on Drupal 8, compare and contrast fulfillment in the new shipping and inventory modules, and talk about a new module that handles requesting products from your suppliers and updates store stock when its received. Additionally, Becky will walk us through what Drupal Commerce is capable of in the way of “powering your business” and truly being the end to end backend brain for finances, accounting, product management, customer management, shipping, fulfillment, stock, inventory and community. Drupal Commerce is a big box of legos, come and learn how we build fully integrated businesses, from the web to the storefront to the back of house, to the warehouse, and more.

This is meant to be a practical review with easy to digest client examples and micro case studies of how we merge an online tool with a physical store. Setting clients in digital stone, all powered by Drupal.

Talk to us

Acro Media is a Drupal Commerce development agency that specializes in enterprise-level ecommerce. We are committed to building strong strategic partnerships and using our ecommerce expertise to help clients create a dynamic web presence that engages audiences, generates revenue, and boosts brand awareness.

Contact Acro Media Today!

Contact us and learn more about our custom ecommerce solutions

Mar 28 2018
Mar 28

Acro Media recently launched a demo ecommerce site called Urban Hipster that exhibits the incredible range of out-of-the-box functionality you get with Drupal Commerce 2 (check it out here). To make the demo even more amazing, we've also created a “Plus” version that shows you what's possible with a bit of extra work.

Some background

If you have an ecommerce business or have a product that you're trying to sell online, a product catalog could be just what you need. But if you produce your own product or you only have a few different products, a product showcase is actually a better way to demonstrate and sell your wares. It's like buying something on Amazon vs buying something on Apple: Amazon has an enormous list of products and all the pages look the same, whereas Apple has fully customized, unique pages for each item it sells.

UH Axe builder product page

When you go to buy the UH Axe on the demo, you'll bring up a unique UH Axe builder product page in the Apple style. The page talks about what the UH Axe is and what its purpose is, and then you're able to choose the type of handle you want, the handle length, how heavy the axe head should be, whether you want a sheath, etc. By the time you add it to your cart, it has become a completely unique product with all the variations that you've chosen. But it exists and is configured the same way that any other product would.

Check Out Our High Five Drupal Web SeriesIt's actually a very similar configuration as the White and Wood Chair example on the demo; it just looks completely different.

The functionality behind a lot of the extra content is a module called Paragraphs. It's similar to Panels (which a lot of people use), but a bit simpler and more streamlined. It doesn't have the same breadth of functionality, but it's easier to work with, and it lets you do all those customizations like deciding where you want to put it on the page and so on. It looks very custom, but it is surprisingly configurable through the back end.

(A note of caution: while it's mostly out-of-the-box functionality, some of the more complex design elements did require a bit of custom code. That’s why it’s on the “Plus” demo.)

Keep in mind that it's not uncommon to have both ways of viewing the product: a fancy customized page as well as a more standard catalog. People can get to the product through either route.

The bottom line

You can make awesome product pages through Drupal Commerce without a lot of effort.

Visit Our Drupal Commerce 2 Demo Site

More from Acro Media

Chat with us

If you'd like a personalized tour to discuss how Drupal Commerce fits into your ecommerce solution, give us a shout. We're happy to show and tell.

Contact Us

Mar 20 2018
Mar 20

There is now an easier way to install Drupal Commerce! And the best part is that you don't have to do any type of crazy spinup. It does involve a little bit of pseudo-programming, but if you know your way around a command line, you should be OK.

A Bit of Background

Commerce Kickstart logoThere's a Commerce Kickstart that exists for Drupal 7. It's Drupal Commerce and all the standard add-ons put together into a mock store. It shows you the power of Commerce and provides a bunch of examples. That can be helpful because Drupal is so modular and can be a bit daunting at first. You install just Commerce, but then if you want, say, gift cards, that's a separate module you need to add. There are all these little bits and pieces you have to get, and not all of them have intuitive names, and it can be very confusing. Commerce Kickstart was meant to solve that problem. Which it did, to some extent.

But the Drupal 7 Commerce Kickstart tried to be both a demo and a base for you to build from. It was primarily a demo, but lots of people used it as a base. The problem was that the demo was already so customized that many people ran into issues because they needed to delete or remove different things instead of starting from a clean setup.

A Better Way for Drupal 8

For Drupal 8, we decided to build two separate things: a demo, and a kickstart that would truly assist developers in getting started. It covers Drupal Commerce and all the normal add-ons you would typically add. With the original Commerce Kickstart, you got all the add-ons as a complete package, and you would have to remove whatever you didn't want. For Drupal 8, Commerce Kickstart is an actual builder.

And it's easy to use. You select a region, for instance. If you say that you're based in North America and only ship there, you're not going to see the options for integrating with the Royal Mail, because that's irrelevant to you. Then you go through the different sections. What do you need for payments? For shipping? You select all the options you want, and Commerce Kickstart uses Composer to build an install file for you.

Screenshot of the Commerce Kickstart Installer

Why Is This Cool?

For one thing, it saves you time. For another, it's a great introduction for people who aren't familiar with the Commerce ecosystem. That latter point is key, as that was the biggest hurdle Commerce Kickstart was trying to overcome. If you're new to Commerce and you don't know about all the add-on options, you might install Drupal Commerce and just get stuck. This gets you much farther in the process.

Check Out Our High Five Drupal Web Series

Demo Content On the Way

You will eventually be able to choose whether you want a clean install, or whether you want to use demo content. With example content, you could see what a nicely configured product looked like, for instance. Or see a sample tax item, or a sample shipping method. This could be great for people who aren't super technical or who just aren't familiar with Drupal Commerce conventions.

This functionality isn't out there yet, but it is coming down the pipe soon. You can see the status of the Demo Content module here.

We also have pre-set-up migrations. So it's becoming easy to migrate from an Ubercart site or a Commerce site on Drupal 7. Options for Magento and Shopify are also coming.

The Bottom Line

If you're building a Drupal Commerce website, use Commerce Kickstart 2.x Installer. It's the best ad easiest way to get Drupal Commerce installed with everything you need.

Try the Commerce Kickstart 2.x Installer

More from Acro Media

Chat with us

If you'd like a personalized tour to discuss how Drupal Commerce fits into your ecommerce solution, give us a shout. We're happy to show and tell.

Contact Us

Mar 13 2018
Mar 13

In a previous post, we covered the basics of the Urban Hipster demo that Acro Media put together to showcase the amazing out-of-the-box functionality available with Drupal Commerce 2. Let us now turn our attention to some of the "plus" features that are still possible with Drupal Commerce, but that aren't quite so easy right out of the box.

Recurring subscriptions

Recurring subscriptions are really two things: recurring payments (payments that happen on a schedule) and also licensing (getting access to something). Those two things usually have to go together. For instance: you automatically pay $10 every month (the recurring payment) and you get Netflix (the license).

But there are things to think about. What if a customer's credit card doesn't process because they cancelled it and got a new one? Do they stop getting access immediately? Is there a grace period? You might not want to cancel outright; you might want to try to encourage renewal. Drupal Commerce 2 can handle all of that.

Digital products

A digital product can be a download, or access to a site, or a key that activates a trial. In the Urban Hipster demo site, Sir Mix-a-Bit is the digital product. When you go through the sales funnel, you can choose from three different subscription lengths (one month, three months, six months). You're able to add it to your cart, and it displays exactly the same way as any other product. The difference is that once you purchase it, Drupal Commerce knows it's a digital good, so it's handled slightly differently.

Drupal Commerce has two default product types: physical and digital. It understands that it doesn't need shipping or dimension details for digital products, and there is no fulfillment necessary on the back end (although you can if you need it).

The recurring subscription functionality is not limited to digital products, by the way. It could be a donation, in which case there is no product. Or it could be amortized payments, where customers pay for a product over time.

How different is this from Commerce 1?

It's simpler and more streamlined. In Commerce 1, you needed a whole suite of modules because you had to have the card-on-file functionality and so on; now, you just add two modules and all the functionality is there. It's much easier to work with.

Check out the Sir Mix-A-Bit recurring subscription digital product page.

More from Acro Media

Check Out Our High Five Drupal Web Series

Chat with us

If you'd like a personalized tour to discuss how Drupal Commerce fits into your ecommerce solution, give us a shout. We're happy to show and tell.

Contact Us

Feb 27 2018
Feb 27


When I was tasked with integrating QuickBooks accounting software with an existing Commerce 2.x installation, instead of asking questions a normal Drupal developer would, I was asking myself one question, what exactly is QuickBooks? Though I’m a bit embarrassed, I’m not going to shy away from admitting that I have not ever had an opportunity to explore or be exposed to the QuickBooks accounting software. So, doing an integration first required me to do some research on QuickBooks.

quickbooks-enterprise-logoFor the unaware (which I doubt there are any), QuickBooks is an accounting software used by businesses to manage sales and expenses and keep track of daily business transactions. It’s often used to invoice customers, pay bills, generate reports, and for tax filing purposes.While there are many applications like it, QuickBooks is thought of as one of the better options in its class. This fully-developed software takes care of all the different aspects of accounting. Thus, quite a few small to medium-scale businesses use QuickBooks because it makes life easy for them. However, if you’re doing business online, the process becomes a little trickier.

For a lot of customers who have an online store, a big pain for them is syncing their sale transactions like order, customer, tax and payment data into QuickBooks for bookkeeping. Basically, how do you transfer over your online transactions to QuickBooks?

We’ve had customers in the past who just assign a staff to sit and enter the days transactions, manually, at the end of each day. When you have hundreds of orders a day, especially, like during the holidays, this can be a huge headache. Not only are you wasting time and money by entering the duplicate data but you’re also exposing yourself to human errors. Because, at the end of the day, all this data is used for filing taxes, generating invoices, re-ordering products, etc., and any error in the data can wreak havoc.

So, out of this dilemma, quite a few Drupal modules came up which paved the way to integrating Commerce/Ubercart transactions into QuickBooks. But most of them are for Drupal 7. How do we integrate a Drupal 8 site running Commerce 2.x into QuickBooks? Essentially, that was my task. It was an excellent learning experience and I’m hoping that I can shed some light on the procedure for syncing your commerce data into QuickBooks.

Setup Drupal Commerce 2 to sync with QuickBooks Enterprise

Our job today will be trying to integrate a Drupal 8 Commerce 2 installation with QuickBooks Desktop. Before we start, I’d like to thank everyone who created the commerce_qb_webconnect module for all their awesome work and especially, Lucas Hedding (heddn), for supporting me in this endeavor.

Essentially, commerce_qb_webconnect, under the hood, uses migrate to export from D8 to a SOAP service destination. This also means that we have more flexibility, because any of the means to work and interact with a migration lets us interact and alter the exported details of a QuickBooks export as well.

The initial setup is as follows (I’m assuming that you already have been using QuickBooks Enterprise Desktop):

  1. Download and install QuickBooks Enterprise Desktop (we used the 2017 Retail version)
    • Note: QuickBooks Desktop, currently, only works on the Windows operating system. Also, be very careful about which version you are purchasing. Make sure you select the correct country version based on where you’re doing business because each version is fitted to a specific country and its tax system, and unfortunately, you cannot just switch countries in the software.
    • Setup all your accounting details on QuickBooks
    • Go to Payments and click on the PMT. Method select list and add the following payment methods depending on the payment gateways enabled on your site (these are the gateways on my test site):
      - Example
      - Default
  2. Download and install QuickBooks Web Connector
  3. Download the Drupal module commerce_qb_webconnect

    $ composer require drupal/commerce_qb_webconnectAt the time of this writing, the module has an 8.x-2.0 alpha version out and it contains most of the functionality required to get the commerce data into QuickBooks.

  4. Go to your Drupal installation
    • Note: If it's a local installation, make sure the url of the site starts with http://localhost (yes it has to have the words localhost, it’s hardcoded). Else, if it's a public site, you have to make sure it has an https certificate.
  5. Go to /admin/people and add the password for **quickbooks_user ** in Drupal and note that password as we’ll be using it in the Web Connector application.
  6. Go to /admin/commerce/config/commerce_quickbooks_enterprise/qwc and make sure your config looks like this:


  7. Now, Download QWC file (click that button).
  8. Open QuickBooks Web Connector and click on 'Add an application' and upload the .qwc file.
  9. Click 'Yes' to all the prompts and your file should be successfully added.
  10. Now, go to /admin/commerce/config/commerce_quickbooks_enterprise/quickbooksadmin and add the following configs and leave everything else as it is:


  11. Make sure to replace the Income, COGS, and Assets accounts with the appropriate ones matching your accounting information.

Syncing the Data with QuickBooks Enterprise

  1. Assuming you have create some products on your site, add a product to the cart, finish checkout and complete the order.
  2. Go to /admin/reports/dblog and notice you'll see messages like: "Added Invoice Order to export queue!"
  3. Now, go to the Web Connector and select the application we just uploaded with the .qwc file and hit 'Update Selected'. Make sure you enter the same password that we saved earlier (See setup step 5) for the password field.


  4. The order (invoice/sales receipt), product, payment, and customer will automatically be imported to your QuickBooks Desktop.
  5. Check QuickBooks Desktop to verify they have been added by clicking on 'Customer' and finding the name on the order there and then 'Recent Transactions' and then, Invoice/Sales Receipt. You can see the product in the 'Item' section. You can see the payment in the 'Payment' section by clicking on the 'Received From' select list and selecting the name on the order.


    And voila! If everything worked, you should see all the details from the new transaction synced in your QuickBooks Enterprise Desktop. The need for wasting time and money on manual entry and chances of user errors all vanish by integrating QuickBooks with your online Drupal 8 Commerce 2 store(s).

More from Acro Media

Need a hand?

Would you like QuickBooks integrated into your Drupal Commerce website, but need a hand doing it? We've done it many times and would love to help.

Contact Acro Media Today!

Feb 06 2018
Feb 06

Because Drupal has so many options and so much flexibility, it can be a bit intimidating to newcomers. It doesn't show you examples of what it can do, and it kind of seems to do nothing by default. We realized people needed to be shown just how cool it really is, so we built a demo site to do just that.

The setup

We focused on making it only with out-of-the-box stuff, restricting ourselves to the features and functionality that exist within Drupal Commerce ecosystem itself. No custom code or modifications other than normal theming. That's right: Using only what's available out there now, we came up with a pretty amazing ecommerce site, if we do say so ourselves.

One caveat: we did make a custom theme for the demo, which you'll probably want to do anyway. There are the default Drupal themes, but most people are going to want to create a custom one. But that's a relatively simple task for a front-end developer; you don't need a back-end developer as well.

All the other setup can be done through basic Drupal UI point-and-click configuration. If you're somewhat savvy with configuring Drupal, you can do it all yourself in a very short time, and produce a truly phenomenal site.

Sometimes you need some guidance

Many people wonder how it could possibly be so easy. We've been getting a lot of questions like, "How did you build this big amazing catalog?" And the truth is we didn't actually do that much. We just enabled and configured the functionality that was already available. Drupal has this great Search API (and associated modules, Solr and Facets) that lets you do a ton of search customizations for anything that's stored in Drupal (blog articles, users, products, whatever), so all you have to do is tweak the configurations and you get this amazing catalog.

It's not that hard, but it's not that intuitive either; you just need a little guidance and direction. Sometimes just seeing an example is enough to make you realize how easy it can be. And that's exactly what the demo provides. It features a checkout, tax configurations, some shipping options, and even a sample payment system. You can click around and check it out without fear of breaking things, the database resets every night.

When you go to the demo site initially, a popup is preseted with a bunch of guided tours, but you are of course free to ignore that and just play around with it yourself. We're also releasing a bunch of tutorial videos to help you. We also have a resources page that shows a lot of the different features you can check out.

Plus, all the source code for the demo, including the custom theme, is available on GitHub. Within the repo is a full database dump so you can set up the entire thing yourself locally (see the README.md). AND one of the Commerce module maintainers, Bojan Živanović, is taking some of the content and configuration from the demo and turning it into an installable demo store module.

It's seriously awesome. Check it out!

Chat with us

If you'd like a personalized tour to discuss how Drupal Commerce fits into your omnichannel solution, give us a shout. We're happy to show and tell.

Contact Us

Dec 19 2017
Dec 19


The term "omnichannel" has been around for a long time, but in a lot of cases it was just a buzzword.

We talk sometimes about omnichannel being online and in store, but in reality, it refers to all the channels that are available to your customers. That's call-in orders, customer service, catalog orders, integrations with other fulfillment partners like Amazon or eBay—those are all channels through which you sell products.

Omnichannel is about having all those channels work together. So if Joe buys something online, for instance, he should be able to return it to the physical store, and the customer service rep in the store should be able to see his updated account history, because everything should sync up.

In the early days, basic omnichannel really just meant that if the product showed on the website, it was also in the store. But these days, omnichannel is also about customizing the experience for each channel.

So if Joe is on the app, it should automatically pick his closest store. It should show him what aisle or section the item is located in and whether its in stock. On the other hand, if Joe is buying online, he doesn't care what aisle it's in, he just wants to know how long it will take to get the item shipped to him. So you have to tailor the experience to each type of channel, but the systems all need to mesh together.

What can you expect from the omnichannel experience from most platforms?

You will generally get rudimentary stock syncing. That means that whether you sell items online or in store, you will know how many you have and when you're out of stock. But even that has variations. Do you know your inventory status in real time? Every hour? Or does it only sync nightly? That can make a big difference.

With most platforms, you're not going to get features like the ability to inform the customer where the item is located in the store. Only a few retailers do that because it's very difficult and requires a lot of extra work. You need to know that data, for one thing. So even if the platform supports that, that doesn't mean that you actually track the precise location of every single product in your store.

What's different with Drupal?

With Drupal, syncing is simple because we can use the same platform for everything: we have a point of sale, we have a web platform, and we can automatically do pushes to different channels like Amazon and eBay. We have real-time stock and shipping.

Then we can add more customizations. We can allow for your customers to start an order online and finish it in store, for instance. Or if they go into the store and find it's not in stock, the clerk can put in an order—but instead of it getting shipped to the store and the customer having to come and pick it up, the clerk can simply turn it into an online order and have the item shipped to the customer. This is the kind of stuff we can mostly do out of the box, but there's usually a bit of customization work to make it a smooth flow.

What's the deal with add-ons?

Drupal is well set up for omnichannel, but keep in mind that there can be problems any time you integrate with other systems. Payment gateways are usually not a problem, but you can run into issues if you have to pass data to some warehouse fulfillment system and it can't provide real-time stock info back. So Drupal can keep track of stock, but if they knock over a pallet in the warehouse, or they get a new shipment but take a while to put it in, that can be slow to update. So the caveat here is that you can be let down by other parts of your system.

Chat with us

If you'd like to how Drupal Commerce fits into your omnichannel solution, give us a shout. We're here to help.

Contact Us

Dec 06 2017
Dec 06


When you look at a product online, you might think you're looking at a single product (say a T-shirt). But as far as an ecommerce site is concerned, you're really looking at a grouping of products, because that T-shirt comes in four different colors and three different sizes (4 x 3 = 12 products with individual SKUs). And that is just a basic product example. More options mean even more SKUs.

What does "in stock" mean?

If you show a catalog listing of a product (the T-shirt), and some of the variations (sizes) are in stock while others are out of stock, is the product itself in stock? Most of the time, yes. But it can be a grey area. If you only have XXL shirts left, that's kind of an out-of- stock item. If you were in a retail store, you'd likely dump those few shirts in a clearance bin. You're not going to advertise that you have all these shirts when in fact you only have one size.

Stock seems like a simple yes-we-have-it or no-we're-out kind of thing, but there's more to it than that. If you don't have it, when can you get it? Is it something that gets custom ordered anyway and people aren't going to care if they have to wait two or three or four weeks for it? Then it can always be in stock, because you can always get it. Is it a thing that if you don't have it today, having it three days from now is useless? Then you really don't have it in stock.

You need to decide on these kinds of things so you can configure your Drupal Commerce site appropriately. If you only have a couple of XXL shirts left, you could set them up as their own clearance product and sell them that way, for instance.

Blending with Drupal Commerce POS

When you integrate the Drupal Commerce POS system, those two XXL shirts are the only ones remaining for your in-store customers, so you never have to worry about orders going through that you can't fulfill. You do need to worry about irritating your customers, though—if they see a product on your site as in-stock and the go to your brick and mortar store only to realize you don't actually have it, they're going to get annoyed.

So with that in mind, you have to think about the messaging you present to your customers online. If something is out of stock but you can get it in three to five days, for instance, maybe you want to communicate that. Or if it's a one-off and you will never have it in stock again, you need to let your customers know.

Introducing transactional stock

Something new in Commerce 2 is the concept of transactional stock. So you don't just have a product in stock: you have two that have been purchased and are about to be sent out, you have six sitting in inventory, and you have five on order. And maybe you have a pending return that you can eventually sell, but not until the return is complete. As far as your fulfillment people are concerned, you only have six. But your customer service and inventory management people know about the ones that are coming, and can adapt accordingly.

TL:DR: Stock in Commerce 2 is transactional and flexible.

Chat with us

If you'd like to know more about Drupal Commerce 2, online stock management or anything else ecommerce related, give us a shout. We'd love to help you out.

Contact Us 

Nov 28 2017
Nov 28

If you ever have need of timed or delayed payments, we have some good news: recurring billing (also known as subscriptions) is new and improved in Commerce 2. Check out this week's High5 episode and learn more!

What is recurring billing?

It's anything where we want to have a transaction happen after the initial time when a customer is on our site. That might be monthly or yearly, or it might be when you want the last half of the payment to go through in a couple days or a week.

How does it work?

It's not like we store pictures of everyone's credit cards and just keep applying charges to them. Instead, we store tokens, or references to the credit cards. This is much safer because it means that even if the site got hacked, no one would have access to your actual banking information. At no point does Commerce ever store your actual credit card.

If you're interested in reading more about tokenization, Wikipedia has a lot of good information on the subject. 

How is this different from Commerce 1?

We sort of had tokenization (a.k.a card on file) in Commerce 1. It was a contrib module and wasn't actually part of Commerce itself. Some payment gateways supported it, some didn't, some did but only partially… it was much more of an ad hoc thing.

Now, tokenization is built into Commerce, so any major payment gateway that gets set up and has the capacity to store tokens (which is most of them), will do so. You don't need to do anything special for your payment gateway to handle recurring billings. As long as we have that token, we can keep making charges to it until that token becomes invalid (i.e. the card gets cancelled).

It was actually a credit to Commerce 1 that it had tokenization at all. It's a complex thing. For instance, if a payment doesn't go through, do we have to cancel the subscription? Do we have to get the product back? Do we do that immediately, or give them a window of time to put in the new card? A lot of ecommerce setups just avoided that entirely, so it was definitely a strength of Commerce 1, and now it's really a strength of Commerce 2.

The bottom line

Recurring billing rocks, and is now built right into Commerce 2. 

Nov 23 2017
Nov 23

Is your commerce site ready for the big time? We're talking about Black Fridays, product launches, back-to-school weeks, and any other time you are going to get exponentially more traffic than you would normally get. A lot of people just assume their site/server/staff can handle such increased volume, but unless you've tested it by running 10 or 20 or 50 times the traffic through it, you really don't know.

The problem is that scaling doesn't work in a linear way. Let's say you're currently using 10 percent of your server's capacity. Simple math would indicate that you could handle 10 times as much traffic and be at 100% of capacity, so you should be fine.

But it doesn't necessarily work that way in the real world. It could be that there is some sort of hidden flaw that flares up when that volume of traffic comes through: maybe you hit some sort of race condition, or a caching system starts to cycle too fast, or you get a database bottleneck and everything gets backed up behind it. It could be some little glitch that's easily fixed and everything goes back to normal—but if you fix it halfway through the biggest sales day of the year, it's too late.

So how can you get ready?

1. Do performance testing.

Your goal should be to mimic live as much as possible. You don't just want to run the test on your local server. You want to spin up a similar environment, or maybe spin something up at 1/10th of the scale and hit it hard with lots of capacity. Or do it through Amazon and only run it for an hour or something to save on cost.

Once you have your environment, you have to try to simulate actual traffic. You don't want to just hit the home page repeatedly, because that's not how your customers interact with your site. They go through the checkout, and click around on product pages, and search, and log in to their account. They do a whole bunch of random stuff, and you have to try to mimic that. You can't do it perfectly, but you want to hit all the parts of your site and throw a bit of randomness in there to try to get as close to the real experience as possible.

In a perfect world, you would have gone through a similar event like Black Friday already and learned from it. But maybe you're a first-timer. Or maybe you're launching a big new product unlike anything you've had before, and it's backed by a TV spot, and you're expecting a massive volume of sales to follow. So test your site and be sure.

2. Prepare for stock issues.

Stock problems can obviously be much worse in a high-volume situation. On a slow day, if an order goes through when you are out of stock, maybe you could just call that person and say oops, sorry, but it's going to take a couple days to fill that order.

But if you have a huge burst of traffic, you might sell 20 items when you only have two in stock. And you can't even get 18 on your next order, and it's going to take six weeks to get that many, and now you have a real problem.

So if that happens, what do you do? How are you handling out-of-stock issues? Do you have messaging to say this is going to be delayed? Are you going to shift customers to alternate recommended products? These are all things you need to consider.

3. Set staffing levels appropriately.

You don't want to be in a situation where your website can handle the traffic, but your human workers cannot. In a physical store, everyone knows they need to up the number of sales staff to deal with a huge crush of shoppers. But when it comes to the website, sometimes people forget that someone still needs to put 10 times as many items in boxes, and deal with 10 times as many email complaints, and talk to 10 times as many customers via live chat.

How does your current process scale? How fast does it take you to do an order? Maybe you need to think about automated shipping, or standardized box sizes, or any one of a number of other things that will make your staff's lives easier during high-volume times.


As you can see, there are quite a few things that you can do to make sure your opperating smoothly during those peak sales days throughout the year. Some of these things you can do yourself. Some of them you might need some technical support. If support is what you need, or you'd like to discuss this further, contact us. We've been through it all before and can share our experience.

Contact Us

Nov 21 2017
Nov 21



A point of sales system is already in production in Drupal 7; people are using it and seem to like it. And now, we've ported it to Commerce 2 for Drupal 8. Check out this week's High5 to learn more!

What does this mean?

In Drupal 8, the POS is much more built in, and you can easily do things like change out widgets. So if you update your orders and you add a new field, the field will show up there. If you add a specific widget that controls how that field displays, you can pick from a list of available options and it will work in the POS.

How is this different?

In Drupal 7, the POS was very stand alone—it was all custom-built forms and custom-built options. You actually configured it outside of Commerce itself. It used some of the underlying parts of Commerce, but from a user perspective it was almost as if it was a separate module.

For Drupal 8, that's not the case. It has the same level of functionality, but it's integrated much more so you can use a lot of the Commerce infrastructure. For instance: Drupal 7 had the concept of locations (as in store locations), but Drupal 8 has the concept of stores built right in, so we just use that. There's lots of stuff that goes along with stores: you can attach addresses and extra billing information and so on, and the POS can take full advantage of that in Drupal 8.

Are there any new features?

We have quite a bit more reporting (such as KPI reports for tacking metrics for sales people, for instance.) We also have a new "quick add" section that lets you easily add common products without having to look them up by SKU—it's quite robust and fits nicely into the user interface.

When will all this be ready?

We're only at Alpha 1 right now. Alpha 2 should be coming soon. The module should be fully ready to go in the near future. You can download it's current state and follow progress here.

The bottom line

POS is finally ready for Drupal 8. You can start using it, and we're going to continue releasing new features at least once a month for the foreseeable future.

Nov 07 2017
Nov 07


Tax regulations can be ridiculously complicated, particularly in the U.S., but Drupal has your back. With more inclusions and better integrations out of the box, Commerce 2.x represents a significant improvement from Commerce 1.x. Watch this High5 video for details!

Commerce 2.x now includes:

  • Native integration with Avalara
    That means full integration for every region that Avalara handles. Integrations with Tax Cloud and TaxJar are also in the pipeline, so U.S.-based businesses will have a few different options.
  • Built-in tax rules for Canada and the EU (and more)
    These are now included right out of the box; no add-ons or third-party service required. As long as you stay up to date with your Commerce install, you will automatically get any new rules or changes. And if you sell to other countries, you can still build the tax rules and configure them yourself.
  • The ability to prescribe when a tax applies
    Besides being able to set what products a tax applies to and in what regions, you can now select when it applies. So if a tax rule is set to come into effect on January 1st, for instance, you can set that up way in advance and not have to be up at dawn on the big day to push a button. This functionality is also key when it comes to redoing old orders that were done under a different tax scheme.
As always, if you have questions about getting your site setup on Drupal Commerce 2, let us know! We'd love to help.
Nov 01 2017
Nov 01

Lots of live Commerce 2 sites were actively and successfully selling products to people long before the official launch on September 20th. We ourselves were among the early adopters taking advantage of the new functionality available in Drupal 8. But as with any new-and-not-fully-tested technology, there were the inevitable growing pains: missing functionality, bugs, etc. Fortunately, most of those issues are now in the past.

A few core modules that were buggy but are solid now:

  • Promotions and coupons
  • Taxes
  • Payments (supports 30+ payment gateways!)
  • Products
  • Orders

As an added bonus, the Commerce Shipping module that Acro Media helped develop received a full stable release alongside Commerce 2 (which is especially cool when you remember that Commerce 1 launched with no shipping functionality at all). Commerce Shipping features a much improved API and includes support for UPS and FedEx, with USPS to follow shortly.

Acro Media and other community members have been working on a few other associated modules to go along with the Commerce 2 launch. Here are the details:

  • Point of Sale is going to alpha release
  • Commerce Migrate is going to have a new release (likely not a stable release, however, as there is still work to be done migrating edge cases)

    Ubercart to Commerce 2 migrate is mostly done and includes all core stuff like products, customers, orders, taxes, etc.

    Commerce 1 to Commerce 2 migrate is a little rough but is still very usable; an improved version should be ready in October sometime

A cool new Composer based Commerce Kickstart installer is also available! It represents a great improvement over the original Commerce Kickstart and should be easier for everyone to use. You can find that here.

TLDR: The fully supported, stable release of Commerce 2 is live and has lots of cool stuff with it. If you were hesitant to use it to build sites before, you most certainly can go ahead now.

Oct 26 2017
Oct 26

The good news is that Commerce 2.x has the potential to handle tons of different reports and display the data any way you want. The dashboard is complete and the framework is impressive. The catch is that many of the reports don’t technically exist yet, so you need to do a little configuring to make sure you’re looking at the data that’s most important to you.

What kind of reports are we talking about?

You could have a whole suite of point-of-sale reports, for instance (in Commerce 1, they were their own set of reports; in Commerce 2, they just build on Commerce reporting). If you need reports for checkout, or cart, or analytics, you can have them all in the Commerce reporting suite, even if they are vastly different types of reports. So you can have reports for different people who manage different metrics, but you can build them all using the same framework.

How does this work in terms of configuration?

Some stuff can be built through views. We also use a Twig templating system now, which is not quite as easy to use but is a lot more robust if you want to build more complex reports, because it allows you to do the full templating and theming. It’s like if you’re building a Drupal site: you might configure stuff in the back end or you might build your own theme (or some combination of the two). Reports work the same way.

That means we have more flexibility than we had in Commerce 1, which mostly handled reports through views. Using views can work, but you can run into performance and flexibility issues with complex data (like if you have two million orders that you’re trying to run reports on).

What can we expect from the production release of Commerce 2.x?

It’s important to note that production and reporting don’t actually have the same release schedule because Commerce reporting is an add-on module. So when Commerce 2.0 releases, all the data will be tracked, and there will be some reporting you can do, but the suite of reports that come with the production release will be a little thin initially.

The bottom line: reports are a lot more flexible than they used to be.

To learn more, check out our High Five episode “Drupal Commerce 2.x.: Reporting and Analytics.

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

Oct 18 2017
Oct 18

A checkout is a pretty fundamental part of a commerce system. So the fact that Commerce 2.x has a checkout is not really news. But it’s what you can do with the checkout that makes 2.x special.

You can now configure the checkout workflow. You can opt to ask for billing information, shipping information, certificates, registration details, etc. There’s lots of different data that can change depending on the type of product you sell. If you sell digital products, for instance, you don’t need shipping information. If you sell course registrations, you might require pre-existing certificates. Maybe you do both, so you need to configure multiple types of checkouts.

And that’s easy to do. For the most part, it’s a matter of dragging and dropping options. You can add or remove pieces pretty easily. If you need something really custom, like if you need to validate a safety certificate against a third party, you might need a developer to build that functionality. But otherwise it’s a fairly simple process.

You can also integrate into any part of the checkout. Maybe you do something when you add to cart, or when you complete the order. Maybe you even go off-site to pay through PayPal or register through Eventbrite and then come back. You can hook into any step you need in order to get those things done.

Commerce 2.x also has a more modern checkout out of the box than Commerce 1 had, with billing information on the side, and a floating cart rather than a series of pages you go through, and all those sorts of best practices. It’s a nice update from Commerce 1.

In the end, it’s all the customizations that make the checkout in Commerce 2.x new and cool.

Oct 10 2017
Oct 10


To say that payment gateways are much improved in Commerce 2.x is a bit of an understatement. The process of implementing a payment gateway has been cut down to about a third of the time, with more functionality rather than less.

How could this be, you ask?

We took a whole bunch of stuff you used to have to custom make for each payment gateway and put it right into Drupal Commerce itself. That’s not as easy as it sounds. You have to make sure it works for every kind of payment gateway out there: regular ones that take credit cards, those that use PayPal or Apple Pay, even those that accept Bitcoin.

We wanted to simplify the process without restricting it—and that’s what we managed to do. (It took three revisions and a lot of time, but hey, Rome wasn’t built in a day.)

Typically, when you implement a payment gateway, there’s some sort of library or API for that gateway, and you need to connect that library to your ecommerce system so that when you want to process a payment, it knows to tell that library to process it. That used to take 20 or 30 hours of work. Now, we have it narrowed down so there’s very little custom logic you have to write to link things up. It really speeds things up.


We use tokenization for everything by default. Tokenization is when you take a credit card number and you pass it on to the payment gateway, and they give you back a reference for that credit card. So any actions taken on that card (payments, refunds, pre-authorizations) are done against the token and not against the actual card. You don’t store the credit card number; you just store the reference to it.

This has two big advantages:

  1. If that card expires and a new one is issued, most payment gateways will handle that on the back end, and you just use the same token you always used. This is how Netflix is able to keep right on billing you for eternity; they don’t need your new credit card. (Unless you cancel it and get an entirely new one, of course.)
  2. You are not storing the credit card number, which is good for PCI compliance. The more modern gateways like Stripe and Braintree have a JavaScript layer so that you don’t store that credit card number even for a fraction of a second; it never touches your server. It goes right from the user’s browser to the payment gateway, and the gateway delivers the token. So if you get hacked, you don’t compromise those credit card numbers, because you never had them.


We use a localization library provided by Google to handle pretty much every kind of currency in use in the world. This is important because you have to know how to format the numbers: What symbol does it use? Does it have decimal points? Does the currency use commas or periods as separators?

Even the language the currency is being displayed in will affect how it appears. Take the Canadian dollar, for instance. In English, the Canadian dollar has the dollar sign at the beginning and uses a period as the decimal separator; in French, the dollar sign goes at the end, and the separator is a comma.

The Bottom Line

In Commerce 2.x, implementing payment gateways is a lot simpler, and there’s a whole lot more functionality.

Oct 02 2017
Oct 02

“Shipping” in Commerce 1 meant “get shipping rates.” End of story. If you wanted to do something crazy like actually receive the item or put it in a box in the warehouse, you were out of luck. You could integrate with another system, but otherwise you were really just a storefront.

But Commerce 2.x is a different story. Now you can go from getting rates all the way down to actually receiving the shipment.

Some background

With Commerce 1, we realized we had shipping that didn’t do anything other than give rates (and if you have free shipping, you don’t even care about that). So we set out to fix that in Commerce 2.x.

Shipping is actually a pretty complicated process. Once someone purchases a product, how does it actually get to them? You need to print off labels that have barcodes and will work for UPS and FedEx and any other delivery service you plan to use. You have to know what boxes to put stuff in, what goes in what box, what gets shipped out from what location, etc.

Commerce 2.x now has a nice shipments API that can handle all of that.

New functionality

Everything has a plugin interface now. Take packing, for example. You can have a packing algorithm that is really simple—i.e. everything goes into a theoretical box of infinite size. Or the algorithm can be more complicated—you can say these things can’t get packed with this, or these things are chairs, so they stack a certain way.

For every step of the shipping process (getting rates, printing labels, doing packing slips, and so on) you can use the functionality that’s now built in to Commerce 2.x, or you can replace any or all of those pieces with other providers. That could be delivery services like FedEx or UPS, or it could be some sort of third-party shipping provider that handles the boxing, or it could be Amazon if you do your fulfillment through them.

The bottom line

Shipping in Commerce 2.x now covers the whole flow of shipping, from ordering to having the package arrive at someone’s house. It’s a massive improvement over Commerce 1, which only gave the rates.

To learn more, check out our High Five episode “Drupal Commerce 2.x—Shipping.

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

Sep 21 2017
Sep 21

Drupal Commerce 2.0 has finally reached 2.0 status with an official stable release on September 20, 2017! Sound the horns! More Cowbell! Naturally, our clients are starting to think about migrating Drupal 7 Commerce 1.x to the new Drupal 8 Commerce 2.0 platform, this post is an effort to help you decide if migration is right for you, and how to approach the tasks at hand. Not to brag (ok, we are bragging), but we have some incredible insight into the process of migration because two of our very own are core migration module maintainers (quietone & heddn). I reached out to these two when putting together this post.

Do you need to migrate?

The quick answer is not yet, but you should be starting to think about it. You don’t need to migrate, but you will want to. Check out a few reasons why you’ll be begging to make the leap:

  • Drupal 7 and Commerce 1 will only be supported for so long now that new versions of both are out. The end of life dates haven’t yet been set, but that doesn’t mean you shouldn’t start to prepare for the inevitable.
  • End of life means that the worldwide network of Drupal developers will pivot their energy away from D7/DC1 and focus their skills, efforts, engineering and security practices on the new and shiny version of the platform. That means that if you want all of the good (and free) Drupal juice, you need to hop over to D8 and DC2 to reap the rewards.
  • Drupal Commerce 2 introduces a better update path. What does that mean? It means that new features will be introduced into the core through micro-updates, major migrations will be a thing of the past. Yup, you read that right - This is the last full migration you’ll ever need to make.
  • Features, oh the new features. All yours! From tax integration, multi-language support, currency setups, shipping, fulfillment, API’s left and right, oh the list goes on and on. You get the bells AND the whistles, and they will just keep coming as new updates roll out without any effort or expense on your part. Migration can be mighty sexy.

When the inevitable does happen and the masses are using the new version of the platform, Drupal 7 and Commerce 1 will be laid to rest by the community; there will most likely be a big scramble from those who haven’t already planned for the future. Being ahead of that curve could be advantageous, not to mention opportunistic and allow for your company and eCommerce store to have a voice in driving the roadmap of Commerce 2.

What can you expect from migrating?

You’re thinking back to the initial build, configuration and custom module development of your D7/Commerce 1 site, and you’re thinking, how in the sweet blue sky can we possibly migrate this glorious unicorn over to D8 and Commerce 2 without going through all of that planning, pain and expense again… We hear you. Any migration does require some technical expertise to complete successfully, but any competent development team should be able to pull it off. Shying away from an absolutely necessary business upgrade is not the answer.

eCommerce migrations are 2 parts.

  1. Moving from Drupal 7 to Drupal 8 (think of your core moving up a notch, themes, templates and CMS are all getting pimped out). This does require a “re-do” not just a port.
  2. Migrating the commerce engine and all it’s parts and associated data to Commerce 2.0.

How long will it take? That’s the first question we are asked. For a very simple site, we’ve seen a pure content migration take as little as 50 hours. For more complex migrations, where we’re bringing in unique data from various sources, it could easily take 200+ hours for the migration alone, and the D8 framework and templating is in addition. Step one is to find out where you fall on the spectrum of difficulty and begin to parse out the to-do list accordingly before jumping into the undertaking.

Take migration as an opportunity to level up your online business; It’s an opportunity to come up with a fresh design that takes into account today’s technology, design and UX standards that shape the way users ultimately use your website. If you’re on D7 and Commerce 1, it’s time for that site evolution conversation to begin.

How does a migration happen?

As mentioned earlier, migrating does require a number of technical steps. Time to get into some of the nerdy details…. Here’s a general approach that we’ve been using successfully.

  1. Get a source database dump from the existing Drupal 7 Commerce 1.x site. TIP: Potentially, get the site code too. It isn't strictly necessary, but helpful.
  2. Install a vanilla Drupal 8 site with no content and only the modules enabled that you want to migrate into. Enable Commerce 2, the date module, pathauto, Google Analytics, etc. TIP: Don't bother adding any content or configuring this site; You’ll end up losing all of the configuration after the migration.
  3. Using Drush, create all my migration configurations and export the configuration to yaml files. TIP: We use Drush, because the migration modules GUI is very simplistic and doesn't allow for any site re-architecture.

    If we need to collapse node types, combine product types, use media on D8, etc., it makes more sense to migrate the content directly from Drupal 7 into the new structure. However, this is only possible with a custom migration where we build the configuration, export the yaml files and start customizing and mapping to the new destinations.

  4. Now we would apply this patch (by heddn) and run all the migrations. In the future, we might not need this patch, but at the time of writing we do. This lets us see what migration errors exist and how much more work we have to do. If there are errors on this first migration, and there always are, we fix the errors and run the migration again. TIP: At this point, we’re only focusing on migrating configuration, not content. Getting the configuration migration solid is the first milestone and usually doesn't take that many hours.
  5. Next is the content migration. This is where we have lots of fun combining content types and move all the files into shiny new media entities, etc. We won't re-run the config migration at this point, so if we need to start tweaking the config on the site, flipping knobs and switches, we can do that now.

    The majority of the migration effort is spent making sure all content is migratable. Things that are notoriously hard are: field collection/paragraphs, multi-lingual sites and media, video, audio or file fields. TIP: Look out for the odd line item fees or product classes that take some extra work.

    Basically, anything that seems dirty, ugly, hacky, and wasn't in core in Drupal 7 or Commerce 1 is going to take some time to migrate cleanly. Make a list, check it twice.

  6. At this point we can setup a staging environment and compare the new site on Drupal 8 to the previous Drupal 7 site. If this is for a client, they can oftentimes become involved at this stage. We’re looking for missing content fields, malformed dates, missing files and anything else that seems amiss. We haven't run our final migration yet, just trying to gauge how close we are. We'll run the actual final migration later on.
  7. Now, or maybe a little earlier after we've landed on a stable Drupal 8 site configuration, we can also start doing other site building and theming work. We cannot place blocks or be certain about what node or product ids are going to be, since we haven't run the final migration. But we can use Recreate Block Content module and hope for the best.
  8. We’re getting very close now. Theming is now complete and we should have creative and client signoff of the site's appearance. We should now have a solid migration process and be able to schedule a go-live date.
  9. On, or as close to go-live as possible, we can start migrating files and data. For files, We like to rsync all the Drupal 7 files to the Drupal 8 destination beforehand. File migrations are quite slow, but rsyncing is much faster. For the remaining data, depending on its size, the final migration can take anywhere from minutes to several hours. Sometimes we can jump start the migration a little by running it a day or two in advance, but know that any new content or users that are created in those couple days are going to disappear once we take the new site live. The exact timing of the migration really depends on the site. TIP: Have a rollback available in case you need to take a second crack at this.
  10. After some final testing, backups, and other launch tasks, we can flick the switch and take the new Drupal 8 Commerce 2.0 site live! Break out the champagne and celebrate!

What if there are any problems after launch?

This is an important question. If we’ve all done our jobs correctly, with prudent testing, then there really shouldn’t be any (or many) problems after launch. However, with large migrations there are so many variables at play. It would be unrealistic and unwise to think that there won’t be any bugs; they may not be launch-gating but they will need attention and clean up nonetheless. Internal dev teams and external service providers should all have systems in place to deal with potential issues; it’s all hands on deck to test and report on the new setups success and issues.

How do we handle this step? Acro Media does this by providing a bug warranty for 90 days whereas we will fix any bug that arises within this initial timeframe, free of charge. We also offer various service level agreements (SLAs) for additional, ongoing support.

In conclusion

We hope that this article provides some insight into what’s involved with migrating your Drupal 7 Commerce 1 site to Drupal 8 Commerce 2, and gets the conversation started for your business. It sounds like a big job, because it is - but it’s totally worth it. Not only will you end up with the latest and greatest in Drupal and Drupal Commerce, but you’ll now be setup for proper eCommerce into the future. New revenue streams, new marketing directions, or just the “same ol’ thing” but faster and with a new coat of paint, the direction is yours to tak

Of course, if you'd like a hand we're always here to help.

Contact us to discuss your migration!

Sep 05 2017
Sep 05

It is very common that the shipping costs for delivering products ordered online depend on the weight of the packaged products and the number of packages. Sometimes, however, store owners determine that shipping service costs need to be directly related to the value of the order. It is for such cases that Acro Media has recently sponsored the development of the Commerce Shipping Price Matrix module.

What does the module do?

The Shipping Price Matrix module provides a new shipping method that can be added in Drupal Commerce sites. A price matrix is a list of entries that define how much the cost of a shipping service should be depending on the value of the order. For example, you can create a price matrix that says:

  • Orders with a value less than $30 should have a shipping cost of $5
  • Orders between $30 and $70 should have a shipping cost equal to 10 percent of of the order subtotal with a minimum $5 cost
  • Orders between $70 and $150 should have a shipping cost of 8 percent of the order subtotal to a maximum of $10
  • Orders over $100 should have free shipping

Our price matrix may look like the following:


Price matrices can be conveniently uploaded as CSV files so that store owners can manage them outside of the website.

Advanced functionality

Some more advanced functionality has been cooked into the Shipping Price Matrix module. What if an order contains many products, one or more of which are eligible for free shipping? The module allows you to calculate the shipping costs based on the order subtotal, excluding those products. This can be done in two ways:

  1. You can exclude certain product types from the shipping cost calculation. Say you have a store selling T-shirts and jeans, among other things. You want to provide free shipping for all T-shirts, but not for jeans and other product types. You can do exactly that.
  2. You can also exclude individual products from the shipping cost calculation based on a custom field that you can add to your products. By default, this field would be set to “No” (meaning don’t exclude) but store owners can set it to “Yes” when editing individual products. Products marked with a “Yes” in the field will be excluded from the order subtotal that will be used to calculate the shipping costs.

Here’s an example of what the module’s configuration looks like:


What’s next?

We have just released the first version of the module, and we certainly look forward to getting feedback from store owners and the Drupal community. One piece of functionality we are looking to add is the ability to configure whether taxes or promotional discounts should be taken into account when calculating the shipping costs.

If you are looking for a way to calculate shipping costs based on a price matrix, this module might be exactly what you’re looking for! Reach out to our team and we can help you determine whether it’s the right fit for your site.

Aug 08 2017
Aug 08

It’s easy to forget that lots of ecommerce platforms don’t have a content management system (CMS). It’s something we take for granted, because Drupal Commerce was built on a CMS. That’s how it started out. But that’s not usually the case. If you want to build a CMS with Magento, for instance, you have to add on a CMS (incidentally, the recommended CMS to pair with Magento is Drupal).

So with most other ecommerce platforms, to get CMS functionality you have to pair them with WordPress or you have to pair them with SharePoint. Ecommerce platforms handle products, and that’s about it. They don’t handle tutorials, how-to videos, blog posts, or any of that other stuff.

This leads to the problem where you have a shop, and you have a catalog or brochure site. So you have all these product pages that explain all about the products with videos and guides and stuff, and then you have the separate shop. It doesn’t really make sense for it to BE separate; it’s only done that way because of the limitations of the technology. Apple is a classic offender: the Apple store is completely different from the Apple product pages.

The majority of ecommerce sites are set up that way, with one site that tells you about the products and an entirely separate site that lets you actually purchase the products. Sometimes you can fake it on the front end to make it look like they’re coming from the same place, but that’s far more difficult than just doing it properly on the back end.

On the other hand, Amazon is an example of an online retailer that doesn’t really do content. They just have product pages. If you want additional information on an Amazon product, you go somewhere else, like to the website of the manufacturer. Amazon basically assumes you’ve already decided to buy the product, and you’re just purchasing it from Amazon.

To summarize: Having the product pages and cart functionality truly meshed (the way they are in Drupal) is super cool. They’re built on the same platform, so you don’t need to think about combining them. It’s already done.

To learn more, check out our High Five episode “Drupal Commerce 2.x – CMS.”

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

Aug 02 2017
Aug 02

To the average person on the street, a product is something you buy. Say Joe Blow is looking for a T-shirt. Specifically, he wants a blue T-shirt with the logo of his favorite sports team on the front. He goes to an online store, selects the T-shirt with the appropriate logo, chooses the blue color, and indicates the size he needs. Simple. He has now purchased a product.

But in the ecommerce world, a product is much more complicated.

Products: More Than Meets the Eye

If you’re the owner of that online store, you know that every size of that shirt is an individual product that has its own SKU. Knowing whether someone ordered a large or small shirt is important for inventory (so you know how many you have left in stock), pricing (maybe you sell different sizes at different price points), and processing (so you know exactly what has to be shipped). Different colors are also different versions of the same product. So a “product” is really a collection of a whole bunch of products. But when your customers are viewing it, they think of the collection as the single product.

How Drupal Commerce 2.x Handles Products

In 2.x, you have attributes that are used to make up these different products. Each different color is going to be a variation, and each different size is a variation, and each different size + color combination is also a variation. So when you build attributes (size, color, etc.), you actually build products.

You can also have customizations. If Joe Blow wanted his name on that back of that T-shirt, that isn’t really an attribute, because it doesn’t change the product stock. The store would just print his name on a standard T-shirt. That’s an option that gets applied to a product.

Commerce 2.x also lets you set product types, so you can handle physical, digital, and subscription products differently (you don’t need sizes and weights and things for a digital good, for instance).

How This Differs From Drupal Commerce 1

The main difference is that it’s more built in now. In Commerce 1, there were variations, and then you built your own product by making a node (which was actually pretty confusing to a lot of people). In Commerce 2.x, you set up a product, and add variations to it, and it’s a much more structured process that takes you through what you need to do.

The bottom line: products in Commerce 2.x are not vastly different; they’re more of an iterative improvement over Commerce 1.

To learn more, check out our High Five episode “How Drupal Commerce 2.x handles Products.”

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

Jul 26 2017
Jul 26

If a customer comes to your Drupal Commerce site and goes to the trouble of going through the checkout process and entering their payment information, you really need to make sure that whatever they ordered actually arrives on their doorstep. That’s what OMS and fulfillment are all about.

What exactly is OMS and fulfillment?

OMS stands for Order Management System. Order management and fulfillment are two sides of the same coin, but there are some key distinctions.

Order management means managing the order as a customer service person—checking that the order is valid, filling it out, answering any customer questions, etc. Fulfillment is the actual act of getting the product to the customer—taking it off the shelf, putting it into a box, and getting it shipped out (or in the case of a digital good, making sure the product actually made it to the customer).

So order management and fulfillment are closely related, but you might use different systems or even different people for each aspect.

How does Drupal handle order management and fulfillment?

Drupal has full order management capabilities out of the box. You can edit orders, change orders, add products, put notes in, change taxes, all that kind of stuff.

Fulfillment is where Drupal is a bit weak. This is a key area for integration with a third party. Maybe you don’t even do your own fulfillment—maybe you process the orders and send them to Amazon, who actually handles shipping them out. Maybe you ship from 20 different locations and have to move products around, so you need a system that can handle such complexities. Commerce 2.x has the basic framework for fulfillment, but it’s early days, and more work needs to be done. But you can integrate with other systems that can take care of that function.

Are any fulfillment systems easier to work with than others?

Fulfillment integration is not usually too complex; normally you’re just pushing the order information to the other system. That said, you’ll want a modern system that has an API that can be worked with (Amazon and Brightpearl are just two examples). Fulfillment has existed since the early days of print catalog ordering and some of the software seems like it’s from that same era—it might be difficult or even impossible to integrate with some older systems.

The bottom line:

Drupal Commerce has good order management out of the box. It has OK fulfillment out of the box, but it can integrate with anything you want (except some crappy legacy systems from the 1970's).

To learn more, check out our High Five episode “Drupal Commerce 2.x – OMS & Fulfillment.

Jul 17 2017
Jul 17

Once upon a time, people had to thumb through thick tomes of printed material called “catalogs” to find the products they wanted to buy. If you’re old enough to remember looking through the Sears catalog at Christmas time looking for toys to ask Santa for, you know what I’m talking about. (And if you aren’t old enough to remember that, I don’t want to talk to you.)

While print catalogs have largely gone the way of the dinosaurs, the concept of letting people browse a selection of products has not. That’s where online catalog functionality comes in.

What is catalog functionality on a website?

Basically, it’s a listing of products. You need to display multiple products on a page so people can browse through them and pick the one they want. There can be filters and categories and various other ways of going from thousands of products down to a manageable number that people can actually scan through.

How does Drupal Commerce 2.x handle catalogs?

In Commerce 2.x, everything is just search results that come up, but it appears like a catalog. So if you filter by a specific tag or parameter, it presents like a catalog with nice rows of products. But since it’s really just a search result, you can apply all the filters that you would for a search. You can do a keyword search in a category, for instance. Or you can filter by price, brand, color, or any other parameter you care to use. Think of the kind of shopping experience you get on Amazon (only more specific), and you’ll get what we’re talking about here.

How do you know what’s going to be displayed?

There are lots of different options. You can choose to display everything with the “television” tag, for instance. Results can be displayed alphabetically, or you can have the top sellers display first, or you can have products come first and have accessories listed lower down. You can add manual weightings to products, or you can have weightings based on other tags or even on dynamic data. There’s a lot of adaptability.

How is this different from Commerce 1.x?

In Commerce 1, you could use views and display products that way, which allowed for some filtering, but it was pretty basic. In Commerce 2.x, catalogs are now searches, so they’re cool and flexible, and they can do whatever you want.

To learn more, check out our High Five episode “How Drupal Commerce 2.x handles Catalog Functionality.”

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

Dec 29 2016
Dec 29

Ecommerce has come to mean much more than simply offering goods for sale online.  People don’t just consume web content anymore; they interact with it. They expect their digital experience to be engaging, personal, and seamless, no matter what device they use.

Hence the rise of the Digital Experience Platform (DXP). In most cases, a DXP is a collaboration of software products (owned by different companies) that are designed to integrate with each other to cover these bases:

  • Storage of all data (including images, content, product specs, and customer data) in one centralized location
  • Content management for delivering content and building customer journeys
  • Data delivery for all your business logic and service integrations
  • Personalization based on user, application, and device being used
  • Marketing automation, testing, and reporting

In our opinion, Drupal has long been a DXP. Drupal started as a world-class content management system; with the addition of Drupal Commerce several years ago, it became one of the first true DXPs. Drupal Commerce was never a stand-alone ecommerce platform -- it was built onto the content management system using the same architecture. And it was open source, so it could integrate with virtually any other service. This was powerful stuff.

But Drupal did have a bit of weak spot in the DXP framework: the area of point of sale (POS). Drupal had a simple POS module that worked, but in most cases integration with a 3rd party POS was required to cover all facets of the traditional POS functionality that so many other companies provide.

Until now!

For the past year, Acro Media has been developing an improved version of the Drupal POS with a full list of features and new functionality being added regularly.

There are major benefits to a POS that integrates seamlessly into the Drupal and Drupal Commerce framework:

Connect to your business information from anywhere and from any device. Access reports, troubleshoot issues, and check on any location without needing to be in-store.

Real-Time Data
Access up-to-the-minute sales and inventory data from any POS location without having to wait for the end-of-day consolidation.

Single Database
Store your inventory, content, product info, pricing, customer data, and digital assets in one system.    

Open Source
Control virtually every aspect of the source code and customize it to suit your needs.

React quickly to change and expand your business model by adding stores and distribution centers and taking advantage of multichannel retail opportunities.

With the Drupal POS system, we believe Drupal is even more of a Digital Experience Platform than it once was. Drupal offers true content management, a powerful commerce engine, and now a complete point-of-sale system that will seamlessly align your digital experience across all channels.

Aug 24 2016
Aug 24

We all know as business owners that time is money. The more time we can save, the more time we have to work on other tasks for our business.

This is common sense, and is something every business owner should be looking to improve on every single day.

How can you save time?

What can you automate?

What type of processes can you create to become more efficient?

What systems and softwares can you use to become more organized?

These are things that you need to be looking at to not only save time for you and your staff, but so you can get things done right the first time. Having solid processes, automation and efficiency is how you create a smooth running business, that's why we decided to help out.

How Acro Media is Contributing to This

While it’s hard for us to know what specific needs, systems and processes your business would need in order to save time, we have been looking for a solution to help the majority of our clients.

One category we know every business could use some help on, and by help I mean automate, is accounting and bookkeeping. 

This can be a huge time suck.

From manually inputting product orders, customers, refunds, credit memos, invoicing… you name it. If you use Quickbooks and don’t have any type of automation or integration setup with your Drupal site, these tasks can eat up a lot of time each and every month.

Not to mention, if you are doing all of these tasks manually, there is always a chance for human error, and we know, humans make mistakes.

This is why Acro Media has made an effort to develop a module that can integrate and connect your Drupal site straight to your Quickbooks account. This module eliminates any chance of human error and will save you a HUGE amount of time each and every month as all your data from your Drupal site will be automatically pushed into your Quickbooks account.

Oh yah... and if your business is a little unique or you require functionality that our module doesn't currently have, we can build it for you… gotta love open source!

To get a better visual idea of what our new Quickbooks module can do, view our product page or have a look at the infographic below.


How Much Time Can You Expect to Save?

While there is no way for us to determine how much time you can save each month. We have put together a rough formula to see how this module can help you and your team save countless amounts of hours every single month.

We calculated the median time spent in manually creating following bookkeeping essentials:

  • Creation Of Invoice / Sales Receipt : 2.5 min/order
  • Manual Credit Memo / Note: 1 min/order
  • Payment: 1 min/order

Time saved = [amount of orders each month] X 4.5min

What’s Next?

If you're looking for ways to save time in your business and focus on what matters most, reach out to our team and let’s see if this module is a right fit for your business.

Talk soon, and remember... time is of the essence.

May 30 2016
May 30

f you’re a business owner with an ecommerce site, you’ve almost certainly been a victim of fraud in the form of credit card chargebacks.

acro.blog.cat-youtube.narrow.pngA chargeback is when a retailer must pay a credit card provider for the loss on a fraudulent or disputed transaction. So if someone complains that their credit card was used without their permission to buy one of your products, and you can’t prove it was a legitimate transaction, you have to cover the cost of the item and pay an additional fee.

Chargebacks can be five to 10 percent (or even higher) of sales depending on what you sell. If you sell PDFs, you’re relatively safe, because PDFs don’t have much resale value. But if you sell things like video games and tablets and laptops that can be resold easily, you could be a big target for fraud.

The kicker is that you can’t stop people from doing a chargeback. You have to stop yourself from accepting fraudulent orders in the first place. And Drupal Commerce can help.

Minimizing Risk

The key is to assess the risk of an order. Acro Media developed a fraud scoring module for Drupal Commerce that looks at what increases your risk of fraud.

But in order for the module to be effective, you need to tell it what orders you’ve had that were fraudulent. That means looking at what you get chargebacks on and going into the module and marking those orders as fraudulent. The module can use that data to extrapolate what other orders are likely to be a problem.

You can then set certain rules, like orders over a certain price or orders from certain categories or orders containing certain combinations of products are more likely to be fraudulent and need to be dealt with.

What to Watch For

Was this the same email/shipping/billing address as a fraudulent order? That’s a pretty good indication that this order is likely fraudulent as well. You could opt to just decline orders like that and not even look at them.

In other cases, you might flag orders as dangerous (maybe fraudulent, maybe not) and investigate a little more — maybe call the person or put them through a credit check or talk to the bank.

Hopefully, in most cases you can note the order as being really safe and send it through automatically.

At the start, you won’t have much data. But the more you go through your orders and mark which ones caused you grief, the better your results will be. It actually doesn’t take that much — if you process even a few hundred orders, you’ll start getting some better results.

Is it Just Me?

The module currently only looks at your specific data on your specific site. There was talk of doing a global version where everyone who uses the module could share the data (i.e. “What’s the score you have for this email address?”) but privacy and licensing concerns have yet to be worked out.

To learn more, check out our High Five episode “Ecommerce Fraud Prevention With Drupal Commerce.”

Subscribe to our YouTube Channel for more Drupal Commerce goodness!

May 25 2016
May 25

Many people have been bugging me to write about Drupal Commerce performance, because when you Google “Drupal Commerce Performance” you pretty much get nothing. While Commerce 2.x for Drupal 8 is arriving shortly, we’re all still running lots of Commerce 1.x Drupal 7 sites. So with this first performance post I will attempt to explain the common locking problems you encounter in Commerce 1.x and clear up the misconceptions with them.


There are two different common locking problems you will likely encounter and it is very common to assume you have a single locking problem. Since these two locking problems are actually completely unrelated, it causes a lot of confusion as people look for the solution to “the locking problem” and get stuck on the wrong fix or a combination of the two.

Field Locking

You will notice “deadlock” messages spamming out in your database logs. These will be related to fields and are actually not a Drupal Commerce specific problem, they are just particularly problematic when using Drupal Commerce. This comes from the default transaction settings Drupal uses in MySQL, which locks the rows around a record being inserted in an attempt to have slightly faster inserts. This doesn’t work well in Drupal though, as field inserts don’t need speed, field reads do. This causes field loads to lock fields around them, which leads to this big mess of locked fields and nothing loading. Since Drupal Commerce is a lot heavier on entities than your average blog site, this becomes a real problem even on a medium sized commerce site.

Luckily, the solution to this is pretty simple, you just need to change your transaction isolation level to READ-COMMITTED, which is a wee bit slower on inserts but will give you much better overall performance.

See all of Mike Carpers great work on this https://groups.drupal.org/node/415883 and if you want to learn about transaction isolation levels, the MySQL documentation page is a good primer https://dev.mysql.com/doc/refman/5.6/en/innodb-transaction-isolation-lev...

Order Locking

You may get locking issues where you see UPDATE FOR commands piling up in you query logs. This is also a locking problem, but completely unrelated to the problem mentioned above. The problem here is that Drupal Commerce uses pessimistic locking, which means that while an order is being loaded, it is locked until the process finishes. This is to prevent 2 processes from editing an order at the same time and overwriting each other. If only 1 process is ever loading the order at a time, no problem occurs, if you have only a few, you will get a slight delay but no serious problems. The problem is that ANYTHING that loads an order will lock it, even if it will never be editing the order, but Commerce doesn’t know this so it locks it as a precaution. This means that things like order views or reports that list a lot of orders and take a while, will lock ALL the orders they are loading, which will bottleneck anyone else trying to load the order, such as a CSR or customer.

There is an ongoing patch that has not yet been committed that will help lessen this issue by allowing orders to be loaded without locking when locking is known to be unnecessary because no editing can take place. This doesn’t fully solve the problem as pessimistic order locking is inherently heavy handed, but it does significantly lessen problems with large loads which are the worst offenders, but usually not for editing.

Commerce 2.x will use optimistic order locking, which assumes an order does not need to be locked by default. In the event of a conflict where two saves occur without a reload, the latter save will error and be prevented from overwriting the first. If the data being saved is important, the order will have to be reloaded and saved to make sure no data is lost. The previous approach was immune to this problem but far too strict, as conflicts are not likely and possible to resolve in the event they arise with properly written code. In exchange for a bit more work writing the code, we eliminate order locking problems, which can range from a small delay in loading to a complete failure to load.

Hope this helps fix up a lot of the locking issues people are experiencing as I know they are difficult to solve and very confusing to research. Also thanks to Damien Tournoud, Matt Glaman, Bojan Živanović, Ryan Szrama and Erik Peterson for all their help working on locking issues.


May 05 2016
May 05

So back at MidCamp AndyG and I spent a lot of time talking about shipping, packages, fulfillment and basically anything revolving around actually handling the physical goods after the “ecommerce” part of things is finished. I also chatted with Matt, Ryan and Bojan from Commerce Guys on separate occasions, as well as some other developers here at Acro Media about how this should all work in Commerce 2.x. Below is a rough outline of where we are at so far.

In Drupal Commerce 1.x, there is no common shipping data, so everything is based off an order, this usually means everything just does it’s own thing and you can’t depend on much to do any fulfillment with, you have to go directly to the products themselves and generally it takes 10 modules to do anything. It feels like the bad old days of multi-language.

In Drupal Commerce 2.x a shipment entity will be the base that everything will extend and build off of, much like an order or product being the “base” for their respective sections. The shipment can control what products and stock are put into it and then everything can work off of shipments, for things like packaging, pricing and duty. Since once something goes into a box, no one cares what order it was attached to, it is what is in the boxes that matters. An order does NOT equal a shipment, as orders might be split into multiple shipments due to multiple warehouses, product sizes or stock levels. In short, one order can have multiple shipments.

Base Shipment

  • List of Products w/ Quantities
  • Ship To Address
  • Ship From Address
  • Order Reference
  • Status (using State Machine)

We’d then like to have a number of standard extendable options that other services can depend on to exist, but can be extended by additional modules. The idea is to handle these using Drupal 8’s new plugin system for swappable behaviour, so we know we’ll have some functionality, but how it works is configurable and extendible. I’ve detailed my first attempt at some standard plugin types below. It might also make more sense to just have one overarching plugin type, but I thought it might be nice to just touch certain parts.

The idea is to have all relationships be 1:Many, so they have flexibility even if they will most often just be a 1:1 ratio. I was also thinking we could cover some sort of active flag to handle options vs selected, for stuff like shipping rates or packaging choices.


How the order is physically packed, what size box, how many, where is this box located.


1 box for everything, the box has no specific parameters and is more of a conceptual “box”


Specific USPS compatible boxes of multiple sizes used to package up the order. Each box has dimensions and IDs attached to it and can be used both for rates and for the warehouse.

Packing Slips

Information such as a packing slip, this might be a generic one generated by commerce, or it might be specific to a warehouse or some inventory software. It might have additional information for international shipments or shipments with specific products.


A simple list of the products and quantities contained in the shipment.


A list of the products and quantities in the shipment, with NAFTA codes and values for international shipping and duties.


How much is it going to cost to send this shipment wherever it needs to go. We might set this by weight through calculations, or connect to a shipping carrier for real time rates. There might be many different rates from many different carriers all attached to one shipment, one of which can be picked as the “active” rate.


A single flat rate shipping price


A number of rates pulled from FedEx with different prices and delivery information attached to them.


Do we have to track additional charges based on the destination country, these might not be the same as the cost per order as they are based on the shipment and not the customer's order.


No duty applied


Multiple line items added covering specific duties for multiple good types specific to a country.



Also, we would like to open up the shipment creation itself to plugins, to allow for “intelligent” automatic sorting of products into shipments. By default we will just dump everything into one shipment per order that you can sort out manually, but we’d like to be able to have the ability for plugins to try and organize shipments based on box availability, pricing, size limits, etc.

What's Next?

We will be discussing and prototyping at DrupalCon next week. If you want to chat further about Commerce 2.x shipping or anything related you can hit us up at the event. Acro Media and Commerce Guys will be sitting side by side all week in booths #622 & #623. Not at DrupalCon? Sorry about your luck, but you can still join the convo on twitter @shawnmmccabe and @acromediainc

To learn more about Drupal Commerce visit https://www.acromediainc.com/drupal-commerce

Apr 08 2016
Apr 08

Drupal’s core search module is pretty good for a simple website, but when it comes to ecommerce, it just doesn’t cut it. The solution we use around here is Apache Solr, an open-source search platform packed full of customizable features. It gets your customers to the right products, quickly and easily.

Drupal Core — Why does it fail?

Drupal’s core search is really only good for small, text content based websites. Anything more and it’s pitfalls start to become noticeable.

How the core search indexes a website is pretty basic — it assigns an importance value to content titles based on the HTML heading tag (H1, H2, etc. - H1 being the most important), then it filters through the text of content to try and match keywords. It’s smart in that it will try to fix simple misspellings, such as removing letter accents (i.e. Québec City > Quebec City), but that’s about it.

These basic filtering techniques start to fall apart when unique, customized content is added. Take an ecommerce website for instance, if your website sells clothing you most likely have a variety of clothing styles — t-shirts, hats, shoes, etc. Each article of clothing is priced differently, and probably has options such as size, colour, material, etc. There’s no way the core Drupal search is going to be able to break out or filter this information in a way that’s useful.

Apache Solr — Everything core, and way more

Apache Solr (pronounced "solar") is a HUGE improvement over the core search module. You can take a look at the official full features list for more details, but here’s a quick breakdown:


  • Open source
    No cost to use or modify on any site.
  • Advanced full-text search
    Much smarter than default by recognizing phrases, wildcards, word groupings, etc.
  • Real-time help
    As you type, query suggestions, auto-completion, spell checking, and more dynamically narrow down results before you even hit search.
  • Near real-time indexing
    Makes new content searchable quickly with little delay.
  • Easily customizable
    A nice administration interface helps you set faceted search parameters and filters for any data type (colours, price ranges, categories, A-Z, etc.).
  • Highly configurable
    Setup multiple search configurations for different use-cases. You’re not limited to one search for all.
  • Geospatial searching
    Makes location-based search and results possible.
  • Scaleable with fast results
    From small to massive. Apache Solr is extremely fast in both cases.
  • Performance optimization
    Caching of search queries, filters, etc. to optimize performance and save user's search options.
  • Monitorable logging
    Search result monitoring and logging to provide insight into user search habits.
  • Common data types
    Supports JSON, CSV, XML and other common data types, no conversions needed.
  • Extendable
    Plugins further enhance Apache Solr for indexings rich content (i.e. PDFs, Word docs), language detections, result clustering, and more.

As you can see, Apache Solr rocks! It’s fully featured and powerful. Having these options at our fingertips lets us fine-tune how ecommerce stores are searchable, getting your customers to the right products quickly and easily, increasing sales. Good filtering options also create an overall better experience for your website visitors, making it more likely that customer would come back.

Apache Solr in action!

Soilmate — https://www.soilmate.com/soil-mate-search

Spark Ontario — http://www.findmyspark.ca/

Does your ecommerce site take advantage of good search and filtering techniques? If not, you might be missing out on some serious profit. We have a tonne of experience building ecommerce websites and would love to share that experience with you. Contact us if you’d like to talk!

Feb 23 2016
Feb 23

If you search Drupal’s module library within the ecommerce module category you’ll find there are two main solutions for providing a full ecommerce framework for Drupal — Drupal Commerce and Ubercart.


Creators: Commerce Guys’

Initial 1.0 Release: Aug 23, 2011

Current # of installs: 65,771*


Creators: Ubercart

Initial 1.0 Release: Jun 4, 2008

Current # of installs: 44,202*


At first glance, based on the current number of installs, it appears Drupal Commerce is the top choice. This is true! However, it wasn’t always this way. In June of 2008, way before Drupal Commerce entered the scene, there were a handful of options for adding ecommerce functionality to your Drupal website. Ubercart launched and took the Drupal community by storm.

*As of January, 2016. Based on usage stats gathered by the Update Status module which has been included in Drupal core since version 6.x. Actual stats may differ.


Ubercart gained popularity, with both users and developers, and quickly gained a large following. It had its flaws but was the clear choice for the time. By October, 2012, when usage stats became part of core Drupal, Ubercart had 46,062 installs. At it’s peak, in March, 2015, Ubercart had 61,063 installs. Since then, usage in the community and developer activity has gradually declined. As one of our senior devs put it, this decline is mainly attributed to Ubercart being “dead in the water, no new development being done [by the core Ubercart maintainers].”


SOURCE: https://www.drupal.org/project/usage/ubercart

Drupal Commerce

Drupal Commerce, maintained by Commerce Guys’, entered the scene with an initial 1.0 release in August, 2011. It quickly gained momentum as it had a dedicated core group behind it, hungry to make a name for themselves in the Drupal community. It appears that the community as a whole, both users and developers, liked what they were seeing. By October 2012, Drupal Commerce had carved out a name for itself with 18,506 installs. This number continued to grow and by June, 2014, Drupal Commerce had matched Ubercart in usage. Currently, Drupal Commerce enjoys approximately 65,771 installs, it’s highest number of users yet! It isn’t showing any signs of slowing and has both the user base and developer base to keep the momentum.


SOURCE: https://www.drupal.org/project/usage/commerce

A Bit About Open Source Solutions

“Open Source: Denoting software for which the original source code is made freely available and may be redistributed and modified.”

Drupal as a platform, as well as both Drupal Commerce and Ubercart, are open source software. This means that anyone can use, develop from, and modify any piece of the software freely, without restrictions. In the world of ecommerce websites this has a number of benefits.

From client point of view, this means that you own your data. To use this software there are no initial purchasing or licensing fees, no ongoing fees and no software limitations. You own your website and all of your data within it. Any customization to the software if well within your usage rights because it’s yours.

From a development point of view, this means that there are no barriers when building and customizing an ecommerce website for a client. If part of the software doesn’t quite do what is needed, we modify it. If a requested feature doesn’t exist, we build it.

The software maintainers also benefit, because any new features made, any bugs fixed, are usually given back to the maintainers. 

In essence, the maintainers and development community maintain and add to the software, while the client community helps drive the software’s evolution.

Choosing Your E-commerce Software

Choosing what ecommerce software to use on your Drupal site can be tricky if you’re not sure what to look for. When considering ecommerce software, the main things to consider are; open source, ease of use, extensive and developer friendly, and activity from both the community and maintainers.

Open Source

The benefits of open source software is explained above so we won’t repeat it here. Both Drupal Commerce and Ubercart are open source. Booyeah!

Ease of Use

This is focused on our clients — how easy it is to use the e-commerce software to manage your online store. Adding, maintaining and promoting products, receiving and managing orders, configuring shipping options — these are all key aspects for the store managers maintaining the website. We can build whatever they want, but if they can’t use it, it becomes useless to them.

Drupal Commerce initially has a steeper learning curve, but continues to evolve with end-user management as a core focus. It’s support for large, complex product variations is excellent.

Ubercart is more of a closed system and, being more matured, tends to be easier to use out of the box for simple stores. However, Ubercart struggles when complex product variations are required.

Extensive and Developer Friendly

It is very rare that e-commerce software is everything you need right out of the box. The need to add or modify existing features is important. Both platforms have a very good initial feature set, and a ton of additional modules to extend. We’re virtually limitless in what we can do with the software because what we don’t find pre-packaged we can add or create.

Drupal Commerce shines in its developer friendliness since it was built based on the existing Drupal API. Any Drupal developer would be comfortable extending it. The software has been built to Drupals standards with help from the community, so being developer friendly is part of its core culture.

Ubercart, although also extensive, has it’s own API instead of following Drupal’s. It’s more difficult from a developer standpoint to get started and therefore fewer developers would be available to add custom features.

Activity by both the Community and Maintainers

Simply put, the more activity by the community (users and developers) and the maintainers, the better the product. Based on the stats covered earlier, Drupal Commerce has the clear advantage here. The success of Drupal Commerce continues to build because of its active following and dedicated core group of maintainers.

Drupal Commerce Pros Uber Cart Pros Built to handle ANY e-commerce scenario and therefore better at handling product variations. Easier management of simple, singular products.

Best for large, complex stores.

Best for small, simple stores. New features can be developed by any Drupal developer. Payment and shipping fulfillment included. Drupal 7 native (Drupal 8 version in alpha release).

Better coupon management.

Basic and customizable admin interface.

Easier to initially set up and use.

Strong core and community developer support.



Drupal Commerce Cons Uber Cart Cons Newer and still evolving.

Lacking product management features for stock levels and product variations.

Requires technical know-how to setup. Steeper learning curve.

Drupal 6 native, later ported for Drupal 7 but not rebuilt for it (Drupal 8 version in alpha release).

Payment and shipping extensions must be added separately. Less third party shipping and payment integration (although more are continuously being added)

Custom API instead of using Drupal (meaning less Drupal developer friendly).


Core and community developer support is practically non-existent.


What Do We Use?

Many of the developers at Acro Media have experience working with Ubercart, but, as a development house we choose Drupal Commerce. We use it because it meets ours, and our diverse clients, needs. It’s customizability is a huge plus to us. Also, with the momentum that it has in the community, and now our vested interest in the platform, we believe Drupal Commerce is the future of ecommerce.


Additional Information

Drupal Commerce Website: https://drupalcommerce.org/
Drupal Commerce - Drupal Project Page: https://www.drupal.org/project/commerce

Ubercart Website: http://www.ubercart.org/
Ubercart Drupal - Project Page: https://www.drupal.org/project/ubercart

Dec 17 2015
Dec 17

Acro Media along with the Commerce Guys are designing the ecommerce checkout flow that will become the standard in the Drupal Commerce module for Drupal 8. The aim is to create a checkout experience that is easy, frustration-free and reduces checkout abandonment, thus improving conversions rates and the bottom line for site owners.  

Not to be confused with Cart Abandonment, Checkout Abandonment takes place when the user has entered the checkout flow and opted not to complete the conversion. Both are important stats for ecommerce sites to be aware of but for now we are only focusing on the checkout abandonment issues and how a proper checkout flow can combat these issues.

For more information about Cart Abandonment check out our previous blog post “Do You Know Why Your Cart is Being Abandoned”.

Problem: Additional Costs - Some users have no intent to buy but want to see the total price and will move as far through the checkout process as necessary. What they are looking for are any “extra” costs ie: shipping, tax, or any additional fees associated with the purchase. Keeping these costs hidden until the end of the checkout process is the #1 reason for checkout abandonments.
Solution - The Drupal Commerce checkout gives companies the opportunity to be as upfront as possible with all additional costs being outlined on the cart page BEFORE customers enter the checkout flow. This includes estimated shipping functionality that can provide a quote for customers based on their zip/postal code.

Problem: Forced account creation - The #2 reason for checkout abandonments is forcing users to create an account or login to an account before continuing the checkout process.
Solution - The Drupal Commerce module focuses on a no barriers checkout process while still ensuring the client has the ability to track and maintain customer information and purchase history. To do this all that is required of the user is an email address. Once the email address is submitted we use real time validation to check if there is currently an account associated to that address.

  • If YES, then the user has the option to login (the benefits of logging in will be clearly outlined) or they can continue throughout the checkout without logging in.
  • If NO, the user has the option of creating an account or they can continue throughout the checkout without one.

This gives the illusion that there is no need for account creation, however, behind the scenes the Drupal backend is automatically creating an account for every email address that is submitted.

Problem: Sense of Security- Customers need to feel comfortable when handing over confidential information otherwise they will take their business elsewhere. Some customers perceive the different parts of a page as being more or less secure; make the payment input look “more secure”.
Solution - The Drupal Commerce checkout flow focuses on visual styling, icons and accreditation badges that can raise the perceived security to non-technical customers.

Problem: Discount/Coupon codes - Let’s be honest, everyone loves a good deal. Coupons and discounts can be a very handy marketing tool but can also encourage customers to leave the checkout flow to go looking for a discount code if they are prompted to enter one.
Solution - With Drupal Commerce we didn’t make it an obvious step in the checkout process but we don’t totally hide it either. Its position is clearly marked and if a customer has a discount code they will be able to find the form field easily but it won’t be glaringly obvious for a user who doesn’t have one. Also the use of the word “discount” rather than “coupon” was a conscious decision, discount tends to give a more exclusive feel whereas coupon gives off the impression that everyone should benefit.


Problem: UX Issues - There is a fine line to walk when creating a checkout flow. You don’t want to over complicate the process BUT you also don’t want to make it so simple that it causes customers to question the company’s legitimacy.
Solution - The Drupal Commerce mantra “The customer should not have to think”. Once the customer enters the checkout flow they shouldn’t have to ask questions, the process needs to be an intuitive guide that doesn’t confuse or patronize the customer. To achieve this the checkout UX has been designed to reflect the comprehensive research we have done. Including the following key observations:

Data Input - Arguably the most important part of the checkout process is the gathering and processing of information from the customer which is required to complete the transaction. Filling out forms is a tedious process, many customers are worried (even anxious feeling) that they will make a mistake; to the point of filling out extra (optional) information (that they aren’t that comfortable providing) just to avoid “messing up” the form. Important to consider:

  • Shippings Address should be used as Billing Address by default
  • Do not ask for data that has already been provided by the customer
  • Indicate BOTH required and optional fields
  • Show examples of input format, yes even for simple data
  • Use concise descriptions placed next to or below each field.

Errors - Even with a solidly designed form, errors will still occur, how the system helps the customer recover from errors will do a long ways in terms of customer satisfaction and the overall impression of your site/brand.

  • Clearly, visually, indicate where the error has taken place
  • The error message must be in close proximity to the erroneous field
  • Avoid jargon, be clear and concise

Buttons - Be sure to avoid ambiguous button labels

  • Continue… what? shopping? to the checkout?
  • Use phrases that aren’t open to interpretation, like “Checkout now”, “Pay for My Order”, “Keep Shopping”

Layout & Navigation - The Drupal Commerce module will be a multi-page checkout with a top page navigation that clearly indicates which step of the process the customer is on and which steps are remaining. The beauty of Drupal is that it can be customized to the needs of the client so if a company needs a different layout due to the nature of the product that can be easily accommodated.


Acro Media is excited to be working alongside the team at Commerce Guys to create and design an ecommerce checkout flow that will become the new industry standard.

Nov 19 2012
Nov 19

What's a site worth if you can't ambiguously tell authors how terrible their articles are by rating them on a scale of 1 to 5 chili peppers? How can we segregate against nodes by only allowing the popular nodes to sit at the cool nodes table? Well lucky for us we're going back to high school in this blog post as I introduce you to a few cool Drupal modules that show us how to get organic results for popular content.


 is one of the more basic, but useful rating modules that adds “rating stars” to content. Users rate the node based on the number of stars you made available, then you can view the average rating of the node to see how popular it is. Simple right? Fivestar is based on , is officially supported in Acquia Drupal, integrates with Views, and is easily the quickest way to add ratings to nodes.

Want to extend Fivestar? Check out . Want your own custom Fivestar widgets? Drupal Ace can show you how in their .


 is pretty similar to Fivestar in the voting aspect, but it also allows for thumbs up/down, emotion ratings (funny, mad, angry), etc. It’s like Fivestar and  all in one, plus a bit more. Rate also has some interesting features, such as Rate Expiration, which disallows voting after a set period of time (for that one guy who wants to down vote an article... 3 years after it was posted). Rate doesn’t allow users to cancel their vote, whereas Fivestar does. Some will bicker back and forth about which one is better, but we’ll leave that to the drama nerds and their never ending debate between Star Wars and Star Trek... Which by the way, a Star Destroyer could take on the Enterprise any day. Just ask .

Want to add some visualizations? Mix it up and integrate with the  to show off those sexy bar charts. I can hear the ladies running already.

User Points

If you want to add a bit of narcissism to your site, look no further than . Okay I kid, healthy competition between users might be a better phrase. User Points allows users to gain or lose points by performing different actions on your site. This may be writing a product review or commenting on a node. With this module, the users are fighting for popularity instead of your content. User Points ties into Services, Rules, and Views which makes it even more site builder friendly.

If you’d like to extend User Points, check out this  to add even more functionality.


If this list of modules were your high school homecoming court, then it’s time to meet your King (or Queen). We’ve met the runner-ups, but  steals the show. This module will give you the most organic results for content based on popularity. Radioactivity provides more of a hotness meter. When an entity is getting attention (either by views or actions defined by rules), it will become hotter by an increasing energy that you set, while those that are not receiving attention are cooling down. Pretty cool, huh... er, I mean hot? You get the point.

So why the name Radioactivity? The cool down rates are based on the concept of half life, or the amount of time it takes for the quantity of something to reach half of the original value. Using Radioactivity, you create a decay profile that sets the cool down rate for the entities it is assigned. Want to know the current trending articles on your site? Set the half life to 3 hours and the granularity to 15 minutes (which is the interval of time to update the energy), and watch as the popular articles float to the top while the not-so-hots sink to the bottom in real-time. Have an ecommerce site? Integrate Radioactivity with Commerce using .

Of course there are a number of settings you can use in the module, such as using memcache for storing energy values, so it’d be nice if you had some direction. Though on the project page there’s a few links for tutorials or documentation, I think that Teemu Merikoski of Wunderkraut has an  for Radioactivity.

Know of any interesting modules that help showcase popular content on your site? Let us know in the comments below.

Apr 17 2012
Apr 17

The second Drupal Commerce session I attended was presented by another member of the Commerce Guys team, Pedro Cambra.  Pedro co-maintains several major Commerce contrib modules such as commerce feeds, commerce, Commerce Reorder and Commerce Extra Panes.

Many of these modules, while not technically required for the operation of a online store, make the online experience much better.  For example Commerce Reorder allows users to create a new order using the contents of an existing order.  For B2B online commerce, this is a killer feature, since many businesses order the same set of products over and over again.  Commerce VBO Views brings Views Bulk Operations into commerce, making mass deletion of products, profiles, and orders possible, this makes unclogging the order queue as easy as cleaning out old nodes from the content section.

Importing content from another system is a particularly thorny challenge.  Luckily there exists a pair of solutions for this issue.  Whether you're a Migrate or a Feeds user, Drupal Commerce has a module that imports data into Commerce automatically. One commerce contrib module that I have a particular fondness for is the Commerce Feeds module.  This leverages the feeds module, which takes a feed in an XML, RSS or CSV format and turns the data into products.  The feeds are exportable via features and new products can be added automatically as they're created.  This obviates the need to manually import products into Drupal Commerce.  Commerce Migrate takes a similar approach, but utilizes the Migrate module to create the product entities.

Another neat Commerce contrib module is the Commerce Physical module, which utilizes the Physical Fields module to give products physical characteristics such as dimensions and weight.  These can be used in shipping calculations to return the exact shipping cost calculated by courier APIs.  

Payment methods are probably the most important aspect of eCommerce.  Drupal Commerce has this particular part in spades.  The payment method modules run the gamut from PayPal to Purchase Order, and everything in between.

There also exists Commerce Contrib wishlists that adds a 'Add to Wishlist' button to products, coupons that offer discounts, addressbook that simplifies the checkout process, multi-currency support for international commerce, and so much more.

The Commerce sessions were just a few of the amazing and wildly varied panoply of concepts, companies and community that is DrupalCon.

It was quite the experience, especially with the backdrop of the sunshine and the warm weather.  I loved being able to introduce myself to people I've only met in IRC previously, and reconnecting with old Drupal buddies.

As said previously, this was my first DrupalCon and I was very happy to have gone. I now having a greater idea of the depth of the passion and the breadth of the community.  It's pretty amazing to pass groups of people between sessions speaking so many languages and yet, they're all talking about the open web, and Drupal's role in that ecosystem.  I've always been a big fan of Drupal, but going to DrupalCon has definitely added to that appreciation.

Apr 12 2012
Apr 12

Going to DrupalCon Denver was a welcome break from the cold and gloom of a northwest spring. The Rocky Mountain sunshine provided a backdrop for the largest DrupalCon on record.

This DrupalCon was especially notable since it was my first opportunity to attend in person. I've made it a point in the past to watch the keynotes, especially Dries, as close to real time as possible. As well as jealously following the Twitter feeds of those in attendance to glean any breaking news from the forefront of the Drupal community. As expected, there were too many good sessions to choose just one to attend.

One particular track that caught my attention was the eCommerce track. For sometime I've felt that Drupal's greatest untapped potential was in this sphere and it was a welcome change to see eCommerce receive the kind of attention given to other Drupal application classes. To complete my excitement for this particular track, I noted Ryan Szrama's Drupal Commerce session on Wednesday Morning. As a project lead for the very popular Drupal commerce project and long time Drupal eCommerce guru, sitting in on this session was my chance to get a sneak peak at arguably the fastest growing sector of Drupal.

All about Commerce

For a 30 second introduction to Drupal Commerce, it's important to know the past. Drupal Commerce grew out of UberCart, a highly successful set of eCommerce modules for Drupal 6, it provided a simplified eCommerce solution.

Shortly thereafter, Ryan Szrama started a new project, that expanded the horizons of eCommerce in Drupal. New to Drupal 7 was the concept of entities. Objects that behaved like nodes, but could be displayed and manipulated more flexibly.

Furthermore, entities could have fields placed upon them, and thus the Commerce concepts of using entities as components in a commerce website was born. With entities, products could be freely displayed privately, abstracting the stock keeping and managerial facets of commerce away from the display side. In addition, products could be uniquely identified by a Stock Keeping Unit or SKU, in Drupal much in the same way products are tracked by SKU in warehouses.

Since entities could be referenced in a node, creating a display page became as simple as creating a product display node and referencing the products that belonged to that particular display. Whereas UberCart was designed as a starter store in a box, more of a plug and play solution. Drupal Commerce provided a more fully customizable framework, that allows businesses to modify the framework to fit their particular business model. Drupal Commerce was designed to leverage the full potential of Drupal 7 for power and flexibility. 

As a framework, Commerce core is as lean as possible, so much so that the Commerce shipping module doesn't even ship with Commerce core. The rationale is that not all stores have physical products that need to be shipped. As a side note, there exists a Commerce shipping module, maintained by the same crew that work on Commerce core, that is easily download-able for shipping physical products. Since commerce is so flexible, there exists a myriad of neat and, possibly, ready to use solutions for nontechnical users. Contributed modules such as a wish-list, reorder functionality and stock keeping extend the power of commerce and make it easier for those new to Drupal and Commerce to utilize these resources, with the end result of increasing the adoption of the Drupal Commerce framework.

What's next in Commerce

While Drupal Commerce is receiving a lot of attention for the flexibility of the framework. The learning curve can be a little steep, especially for those new to Drupal.

One of the main initiatives to be undertaken by Commerce Guys to help increase adoption is to increase the overall amount of documentation, with a focus on how to do basic tasks like calculate a tax rate or how to create a discount for certain customers. There exists a fair amount of documentation both in the form of step by step guides and in screen-casts or video format.

Another sticking point in using Drupal Commerce is the lack of a clear, easy to use UI. One of the powerful things about Drupal Commerce is that it's built on existing Drupal tools and infrastructure. One such example is the pervasive use of the Views and Rules contrib modules that make it easy to create and customize data displays of products, shopping carts and lists of line items. The catch with using some of the more complex sets of contrib modules is that in order for store administrators to make simple changes, they must first learn the basics of things like Views.

One perfect example of this would be where a store administrator, someone who normally uses the middle part of the site to administer transactions, needs to adjust the percentage of a discount. This discount might be offered to individuals who purchase more than a set cost of items. Editing the discount amount requires no less than diving three levels into the commerce product pricing rules interface and then an additional two levels via the Rules interface directly. While this might be a trivial task for a lifelong Drupalista, for someone more at home in a WYSIWYG editor, this could be scary and confusing.

The aim is to make simple tasks that site managers do regularly more straightforward. That having a familiarity with Drupal not be a requirement for administering a Drupal Commerce site. In short, to drive adoption of the Drupal CMS via Commerce installs by introducing people to Drupal as a course of building a Commerce site.

To help accelerate the adoption of Commerce another initiative is to release a new version of Commerce Kickstart. Commerce Kickstart is an introductory install profile containing a basic store, with a trio of example products, an example payment method and not much else. In my experience I've used it more as a testing suite or a playground to get a feel for what Commerce is and what it can offer me in terms of tools and examples to build a commerce setup for a client. This focus on developers was helpful to me, but probably isn't for someone looking to setup a small eCommerce site with little to no custom code.   This will no long er be the case for Commerce Kickstart 2.0, who's focus will be squarely on site builders.

In that vein, Commerce Kickstart 2.0 will be redesigned from the ground up. Commerce core, by design, lacks anything not considered absolutely essential for eCommerce. This includes things like shipping, since not all stores sell physical products. However, Commerce Kickstart 2.0 will have the shipping module built in.

One other sticking point is appearance. Again as Drupalistas, we're used to seeing an unthemed site, something in perhaps in Bartik or maybe even -gasp- Garland. That said, the rest of the world may not share this understanding view of Drupal's theme layer. As such, Commerce Kickstart 2.0 will have its own Omega based sub theme that would function as an introductory theme for people just looking to get an eCommerce site up and running as quickly as possible.

To make this even more exciting, Commerce Guys has of pledged to release Commerce Kickstart 2.0 by DrupalCon Munich this August, quite the ambitious time line.

Needless to say I'm very excited in the direction Drupal Commerce is taking, I'd love to see Drupal take off in the eCommerce, much in the same way it has taken off in government and the NGO space. 

Mike Nielson - nielsonm


About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web