Planet Ubercart

Reporting Ubercart Orders to Google Analytics

Ubercart 2.x comes with a module that allows you to report completed orders to Google Analytics. The data reported is very useful there, where sales information may be combined with traffic reports and customizable goals to gauge the effectiveness of your web marketing and inform your future marketing efforts.

Getting Ubercart to report orders requires installation and configuration of the Google Analytics module using your account information and site ID. Once that is working properly, you simply need to install the Google Analytics for Ubercart module found in the Ubercart - extra category on your module installation page.

The module will then automatically inject the necessary Javascript on the standard checkout completion page to report the general transaction and item information to Google Analytics. If you need to alter the information sent at all, you can use a pair of simple alter hooks as necessary: hook_ucga_trans_alter() to alter the header information for the transaction and hook_ucga_item_alter() to alter the information sent about an individual product on the order.

There are plenty of payment modules out there, though, and not all of them end up at the default checkout completion page that the UC Google Analytics module is looking for. This is primarily a problem for modules that integrate payment services requiring redirection away from Ubercart to collect payment information. As a result, we made the function that governs the addition of the Javascript to the page extensible via hook_ucga_display().

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

Drupal Commerce Alpha 1 Announced at DrupalCon Copenhagen

Drupal 7 is just around the corner. Drupal project lead Dries Buytaert announced an estimated mid-October release for the next major version of Drupal in his keynote address at DrupalCon Copenhagen.

Drupal already powers many e-commerce websites – currently over 24,000 and counting. Its position as an e-commerce platform will be further strengthened by the release of Drupal 7 and Drupal Commerce, a complete enterprise e-commerce solution for Drupal.

Drupal Commerce is a completely new module package, providing all the systems necessary to build any kind of store on Drupal. It is being developed specifically for Drupal 7 by a group of six software companies, independent developers and lead by Commerce Guys, the leading Drupal e-commerce company.

Commerce Guys is happy to announce the first alpha release of Drupal Commerce at DrupalCon Copenhagen. All the major core systems are in place and will be fleshed out during the project’s alpha life-cycle. Our goal is to deploy Drupal Commerce on the same timeline as Drupal 7 itself.

Key improvements of Drupal Commerce over existing Drupal e-commerce solutions include:

  • Built to sell anything: Core set of e-commerce tools enabling the sale of physical products, digital downloads, site memberships, event registrations, and more.
  • Built to be international: Product management system developed with international businesses in mind accommodating multiple languages, currencies, tax systems, and payment methods.
  • Built to be customized: Fully configurable user interface that can be extended and customized without coding. The UI can be themed like any other Drupal component.
  • Built to integrate: Underlying APIs and data models based on Drupal 7’s Entity and Fields systems that simplify the tasks of importing, exporting, and synchronizing sales and product catalogs with any type of external systems – major ERPs, CRMs, and fulfillment systems.
  • Built for developers: Developed adhering to strict set of development standards, fully pluggable systems, and alterable data definitions.
Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

DrupalCon Training: Building a European Store with Ubercart

DrupalCon Copenhagen is a few short days away, but there are still tickets available to several of the trainings scheduled for August 23, 2010. Attendees who register for training receive a discount on the price of their conference admission, and those whose trainings have been canceled can consider transferring to an alternate training instead.

We've updated our training description with the help of our training coordinator to include the training agenda. While we'll introduce e-commerce on Drupal 7 with Drupal Commerce, the bulk of the training will focus on building a European store using Ubercart on Drupal 6. Every attendee will work with our trainers to build a community swag store during the training as we go through lessons covering everything from product creation to VAT and multilingual concerns.

Check out the updated description for more information, and sign up now for the conference discount and a great time of learning by example.

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

From Ubercart to Drupal Commerce (pt. 2)

This article is the second of a four part series. It was born out of the DrupalCon San Francisco session by the same name and has been fleshed out through internal interviews with Ryan at Commerce Guys. We use the material to help the whole team understand how Drupal Commerce will improve the way we build sites on Drupal 7, and we hope it whets your appetite, too!

Check out part one first if you missed it for points covering our API and UI development principles.

Packaged distributions of Drupal aren't the future of "Drupal as a product", they're the present. Our community home now helpfully packages Drupal distributions based on installation profiles (with more features in the works), and Moshe et al. and Development Seed continue to rock drush and a collection of contributed modules that power distributions like Open Atrium. Acquia is aggressively targeting its social enterprise competitors with their Drupal Commons distribution and provides a software publishing program that enables their partners to develop distributions to compete in their own markets. To cap it all off, Boris Mann, erstwhile champion of the Drupal installation profile, has come back on the scene to keep the discussion moving forward for the sake of an improved user experience.

The bottom line is developers and companies are actively pushing Drupal forward as a platform for building and marketing complete, targeted distributions of Drupal. This makes it essential for modules like Drupal Commerce to be developed in such a way that packaging them into distributions is as smooth as possible. Drupal and e-commerce are individually two very complex things to learn, and the adoption of a project like Drupal Commerce will be spurred in large part by its ease of use for newcomers. We believe Drupal Commerce distributions will be the starting point for many new users who know how to install, use, and customize software but don't have the experience or knowledge to build an e-commerce website from scratch.

The following two points about this focus for Drupal Commerce come from our experience with UberDrupal and internal projects where developing and deploying distributions based on Ubercart were painful:

1. Strict separation of the core systems from plugin modules.

We built Ubercart on Drupal for its modularity and were quickly rewarded. Contributed module developers produced dozens of modules that provide new features and third party service integration. However, we also baked into the core module set a number of modules that were plugins to core systems. For example, the core Ubercart payment module exposed an API for modules to define new payment methods and interact with payment gateways. We then included modules that could be easily installed for PayPal, Authorize.Net, and a handful of other services. Unfortunately, this produced a maintenance problem that we didn't foresee: it slowed down our development cycles to the point of near stagnation.

Because you can't roll a new release of your project until bugs are worked out in all the modules, we had to introduce core system changes and update all the plugin modules at the same time. Furthermore, if a bug was found in one of the plugin modules, it had to be fixed and released as soon as possible, but this wasn't always easy if the core systems were in flux. With Drupal Commerce, we're keeping the core project as slim as possible so the development cycle isn't artificially prolonged. This means our core systems will be free to mature much faster while the plugin modules will also be free to add new features and interact with other modules at their own pace. Again, this may not seem like a huge deal to non-developers, but one look at the release cycle history of Ubercart should be reason enough to applaud this shift.

2. Focus on packaged distributions of Drupal Commerce.

The reason we included plugin modules in the core Ubercart package is because we needed them to achieve a good user experience out of the box. The community architecture for Drupal distributions wasn't in place at the time, and we wanted an easy way to ensure someone could simply install Ubercart and start selling. This means we needed some basic plugins (like for the popular payment and shipping quote services) and some installation configuration code (like automatic product image configuration). However, the new distribution consensus serves this purpose in a much better fashion.

What we're doing with Drupal Commerce is developing with Drupal distributions and Features modules in mind. We won't solve specific use cases with the core modules, but we will encourage people to create Installation Profiles on drupal.org that can be packaged into full Drupal Commerce distributions that do so. Installation profiles can inject steps into the installation form to speed up the store setup process and can specify any number of contributed modules to include and configure automatically. This will be a huge win for development shops who routinely build a lot of a specific type of site.

Our vision is to see a whole buffet of Drupal Commerce distributions that store builders can use as starting points for t-shirt sales, event registration, donation collection, etc. Additionally, by making the various configurable entities and systems of the modules exportable (i.e. product types, checkout configurations, etc.), individual Features modules can be created to meet the needs of users already running sites who don’t have the capacity to build the features from scratch themselves.

Part three will cover our use of Drupal 7's entities and fields APIs and how they will enable a sharper focus on the e-commerce site as a conduit of information, not just a container. To follow along with development, start by visiting the project page at http://drupal.org/project/commerce.

To experience our internal training firsthand, join us in our Drupal Powered E-commerce training at DrupalCon Copenhagen.

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

From Ubercart to Drupal Commerce (pt. 1)

This article is the first of a four part series. It was born out of the DrupalCon San Francisco session by the same name and has been fleshed out through internal interviews with Ryan at Commerce Guys. We use the material to help the whole team understand how Drupal Commerce will improve the way we build sites on Drupal 7, and we hope it whets your appetite, too!

When we first developed Ubercart, we had an idea of what we wanted it to be based on our past experience (mostly with osCommerce) and our perceived future needs (specifically modularity). We had freedom to craft a system that met our business needs within the Drupal framework, but we had a noticeably limited pool of experience and a "best guess" vision of the future. It wasn't until developers and companies like Commerce Guys started to deploy Ubercart to meet a wide variety of business needs that we learned where our vision fell short, especially as Ubercart was pushed to perform for larger and larger sites requiring greater interoperability with external services.

Some specific experience with Ubercart that is shaping Drupal Commerce development includes:

1. Enforcing from the beginning a strict set of development standards based on Drupal's own coding / documentation standards with some extra specifications to standardize our API function naming, form definitions and handlers, module directory and file structures, and test coverage.

While this won't seem like a big deal to your average user or non-developer decision maker, it actually represents one of the most significant changes from my development on Ubercart. We weren't entirely ignorant of the standards and best practices with Ubercart, but we didn't enforce the standards strictly and definitely failed to comment a lot of the code. This makes it harder for third party developers to support the software and write modules to interact with the core APIs. It also makes it harder to maintain the code moving forward. The lack of test coverage in Ubercart made it difficult to introduce API patches of any size, as we never knew what might be inadvertently broken.

I predict the strict standards of Drupal Commerce will result in cleaner code that has less bugs. The bugs that do appear will be easier to fix, and when they're fixed it will be easier to avoid introducing new bugs as a result. This all bodes well for users who have strict standards for the reliability of the software they deploy. I also predict that more developers will find it easier to work with Drupal Commerce than Ubercart, as they'll find the files easier to navigate and the code easier to read. The abundance of comments in the code (currently nearing 30%) will make it easier for developers to write third party modules that interact with the Commerce APIs and should foster a greater pool of contributors to the core modules themselves.

2. Strict separation of the core APIs from the default user interface.

Ubercart's default administrative interfaces were designed with small businesses in mind, and trying to deploy it for larger clients resulted in Commerce Guys having to build our own administrative interfaces from scratch. Unfortunately, because the Ubercart APIs are inseparable from the UI, there was no way to turn off or build on top of the existing interfaces.

There's no way to predict who will be using the software, so we are taking the following approach to UI design for Drupal Commerce: separate API from UI and provide default user interfaces using simple forms, core interfaces, and Views that may be easily altered and extended. Users that don't need the UI at all can simply not enable the pertinent modules. We're setting the tone from the beginning that our interfaces are meant to serve as customizable starting points.

Furthermore, we're using the Views module to provide almost every list in the default UI, including product and order lists, customer order histories, shopping cart contents, and more. Because most Drupal developers will be familiar with Views, they won't have to learn anything special to alter the default user interfaces in Drupal Commerce.

Part two covers keeping the core slim and the project's vision for taking advantage of installation profiles and Features. To follow along with development, start by visiting the project page at http://drupal.org/project/commerce.

To experience our internal training firsthand, join us in our Drupal Powered E-commerce training at DrupalCon Copenhagen.

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

10 Tips for E-commerce on Drupal

I wrote this article for a general web development blog, but it ended up not being published. It constitutes a simple checklist of tips and reminders for people building e-commerce websites on Drupal that I hope can still be useful published here. Feel free to contact us if you'd like to use the information / article in the attached PDF elsewhere.

  1. Know your tools.

    

Drupal is notorious for its abundance of modules written to address thousands of minor and major features.  E-commerce on Drupal is no exception, and the tool you use depends on your business needs and timeline.  Sites launching in the near future will be using Drupal 6 and have two e-commerce systems to choose from:

    

Ubercart - This is a full fledged e-commerce system designed to "just work" out of the box.  It offers the standard shopping cart features, integration with several payment and shipping quote services, and the ability to automate your order workflow without writing any code.  Additional features can be added by dozens of related contributed modules, and with over 18,000 live sites and hundreds of users and contributors, you're bound to find support for the functionality you need.

    

e-Commerce - The most recent version is a trimmed down e-commerce API that defines the components you'll use to build the e-commerce functionality you need.  The pool of contributors and users is relatively small compared to Ubercart, so you should feel comfortable doing some heavy lifting on your own and possible Drupal module development if you go this route.

    

For future sites targeting the upcoming Drupal 7, users should keep an eye on the Drupal Commerce project.  Spearheaded by the former project lead of Ubercart, the project is joining the attention to detail of the e-Commerce API and the attention to usability of Ubercart with the latest and greatest features of Drupal 7.  Drupal Commerce got some stage time at DrupalCon San Francisco and the CMS Expo and has attracted the attention of some of the top contributors to Drupal 7 with expertise in core API development, usability, and security.


Read more...

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

Bringing Better E-commerce to Drupal - Commerce Guys Goes International

af83 SAS and Commerce Guys LLC are announcing the launch of a joint venture. The new company will retain the Commerce Guys brand (www.commerceguys.com), and devotion to Drupal as an e-commerce platform.

The new team’s goals include a new e-commerce platform for Drupal 7 aiming at global leadership on e-commerce open source solutions. Commerce Guys will continue to help Drupal’s growth through full-time community contributors, and build international support offering for the more than 17,000 e-commerce web sites built with Drupal.

fredplais's picture
Frédéric Plais

Frédéric has been working in the IT world, managing teams and launching products for 10 years. Before Commerce Guys, Frédéric was General Manager of af83, an open source company specialized in social web and digital media that reached 5M$ in sales in less than 3 years. Before af83, Frédéric was managing the Music and Games business of SFR (Vodafone Group) and started his career as Product Manager with L'Oréal after his graduation from Paris Business School of Management (ESCP Europe).

Commerce Guys presenting and sponsoring DrupalCamp Austin

DrupalCamp Austin November 14-15

DrupalCamp Austin is to take place November 14 and 15 in Austin, Texas. All the events will be held at the Norris Conference Center. DrupalCamp Austin is an “unconference” aimed at being slightly more casual than a regular conference, and allowing those in attendance to decide what is important. The schedules are lax and the environment is accommodating, perfect for the novice Drupal user.

What is included:

  • 20 sessions (10 each day)
  • Two keynotes (one each day)
  • Session tracks include: development, design, and business
  • Dedicated Birds of a Feather (BoF) space
  • Breakfast and lunch are included each day
  • …All for only $40!

Commerce Guys, an e-commerce firm out of Jackson, Michigan, is a Longhorn sponsor of DrupalCamp Austin and will also be presenting at the event. Our area of expertise is in the Drupal Ubercart project. Ubercart is a contributed module adding e-commerce functionality to your Drupal site, allowing for easy transactions on the web. Although the project has a multitude of tools and functions, it is deceivingly simple to install and operate. “This session will show off just how easy it is to start selling through your Drupal site with Ubercart,” says Commerce Guy Ryan Szrama. The Commerce Guys will be at the conference all weekend to answer any questions about Ubercart.

DrupalCamp Austin is being organized by the Drupal shop Four Kitchens. Four Kitchens works exclusively with large-scale Drupal websites. The Commerce Guys would like to thank Four Kitchens for hosting the event, and are happy to sponsor and attend the conference.

Tim's picture
Tim Hill

Tim was the co-founder of Commerce Guys with Mike in 2008. Tim considers himself an EntreLeader by having the drive and motivation of an entrepreneur and the strength and vision of a leader, all rolled into one. Tim first got into e-commerce by working his way up in a large e-commerce company and then helping launch a new company selling retail products online. Tim has immersed himself into e-commerce on Drupal since 2006. Tim works within the company to manage the HR, travel and events, and accounting departments.

Understanding and Using Ubercart’s Payment API

Ubercart has a fairly straightforward API for processing and logging payments that is quite similar in both the 1.x and 2.x branches. As a developer, you may run into a situation where you need to make manual note of external payments or trigger the automatic processing of payments based on your business rules. In Ubercart, there is a difference between processing a payment with the function uc_payment_process() and just recording a payment with the function uc_payment_enter(). To explain the difference, you should first understand a few concepts related to the payment system in Ubercart and how payment data is displayed to customers and administrators. After covering the terms and concepts, a full description of both functions mentioned above will be given followed by a section on using the API to process credit card transactions in your own code.

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

Presenting and Sprinting at Ubercamp 2.0

Ubercamp 2.0 at Drupalcamp Colorado is winding down. The camp(s) brought together 200+ Drupal / Ubercart users and developers from all over the U.S. Commerce Guys brought a truckload (a Suburban, to be exact) of people to the conference to spread some Ubercart wisdom, train our newcomers, and acknowledge the efforts of major contributors to the project.

The schedule for the weekend included seven Ubercart specific sessions and many other general Drupal sessions of interest to Ubercart users and developers. Commerce Guys was represented by Ryan Szrama, presenting The Uber-Update and Ubercart Discounts (co-presented with Lyle Mantooth), and by Tim Hill, presenting Google Analytics with Ubercart and Ubercart and Views. Other Ubercamp sessions focused on increasing conversions and sales in your Ubercart sites and using Ubercart for hotel booking.

The sessions were well-received and raised good questions and insights from attendees. For those not in attendance, slides, notes, and video will be attached to the pages linked above as they become available.

With the Drupalcamp schedule coming to a close in a few minutes, Commerce Guys will be keeping the Ubercamp party going by hosting a meaty Uberdinner in downtown Denver followed up with an all-day code sprint at the Warwick Hotel on Monday. Those interested in attending can find us in the Capitol IV suite on the second floor roughly between 8 AM - 4 PM. We'll be working furiously to finish up those final issues blocking an Ubercart 2.0 release. Hope to see you there!

Ryan's picture
Ryan Szrama

Ryan got his start in web development through an online sales company based in Louisville, KY, his home of over 10 years. It was there that he nursed Ubercart through its infancy to its use on over 20,000 websites as the Project Lead and community face of the project. Ryan joined Commerce Guys in 2009 and continued to lead Ubercart until branching out into Drupal Commerce, a new initiative focusing on empowering users to build e-commerce sites with the best new features that Drupal 7 has to offer. He focuses most of his time developing the code base, growing the community of contributors to the project, and training new users online and at community events.

Syndicate content