Zappos.com and Drupal
Zappos - Company Info
Established in 1999, Zappos.com has quickly become a leader in online apparel and footwear sales by striving to provide shoppers with the best possible service and selection. In 2008, the company’s gross merchandise sales exceeded $1 billion. Zappos.com currently stocks millions of products from over 1000 clothing and shoe brands. Zappos.com was recognized in 2009 by FORTUNE MAGAZINE as one of the “100 BEST COMPANIES TO WORK FOR”, debuting as the highest-ranking newcomer to FORTUNE’s 2009 list. More information about the company’s customer service philosophy, unique company culture, and job openings can be found at About.Zappos.com.
First Steps
By 2008, Zappos.com's group of sites had grown to over 10 sites including:
- an international site Canada.Zappos.com
Lifestyle driven vertical sites like
Powered By Zappos (PBZ) Sites, which are white label brand partner sites, like:
The increasing maintenance of non-ecommerce portions without any kind of CMS was stretching the small front-end development team’s resources thin. This maintenance was forcing code deploys for simple wording updates. The need for some kind of tool or CMS was a priority.
At SXSW '08, I attended a session called Content Management System Roundup where SharePoint, Expression Engine, Collage and Drupal were presented. Jeff Eaton, from Lullabot gave a great presentation on Drupal, including a showcase of some higher profile sites that were running Drupal. I was impressed with the variety of sites running Drupal and the fact that they were high-traffic sites. I had a chance to talk to Jeff Eaton and Mike Essl after the sessions about the strengths and weaknesses of Drupal and Expression Engine and both agreed for the things we'd use a CMS for at Zappos, Drupal would be a solid solution.
First Drupal Project
At the end of 2007 we implemented Blogs.Zappos.com using Jive's Clearspace software. We considered using Clearspace to be our CMS of choice but by early 2008 the absence of certain features and other issues made us consider other options. About.Zappos.com was a project that had been discussed by Tony, CEO of Zappos, as a central place to put all culture and company related content. Since this site would be a standalone site, it gave us a great opportunity to try Drupal with little risk. We already had a front-end developer working on adding more blogs to Blogs.Zappos.com and a new hire, Geoff, who we assigned to the About.Zappos.com project. The idea was to let each work on their projects and occasionally switch places and work on the other CMS so they could compare and contrast the features and development time. Drupal ended up being superior in terms of templating and development as well as adding new features and ease of use for the end user. About.Zappos.com successfully launched and Zappos had its first Drupal powered site.
More Drupal
With one Drupal site under our belt we turned to the new Zeta site (the Beta version of Zappos.com), which had quite a few Customer Service and FAQ pages that could be managed inside of Drupal. So began our next project of moving those CS and FAQ pages into Drupal. Other projects included a term glossary and various mini-apps that were more easily done with Drupal than writing them from scratch.
One of the issues we had to overcome involved the maintaining of two separate platforms (the Zeta platform and the Drupal platform). The two platforms often had the same header and footer content, which would require us to make dual updates whenever there were updates to the header and footer. To alleviate this, we ended up pulling in a static layout file allowing us to inject content and remove regions which may not be needed on a per page basis. As for JavaScript, Zeta is using Mootools. Instead of loading both jQuery and Mootools, we decided to only use Mootools when an unauthenticated user as well as another set role is viewing the site. Therefore, to make things more centralized, we decided to keep all CSS, JavaScript, and template related images on Zeta and the rest would appear in Drupal (this included admin specific static assets).
Advanced Landing Pages
Advanced Landing Pages and Powered By Zappos customer service pages were the next initiatives. With Advanced Landing Pages (Ex. Shoes ) it's the first time Drupal is being used on an e-commerce portion of the site. Given the short-time frame for this project, leveraging Drupal's powerful CMS tools while simultaneously querying the Zappos product catalog and displaying it with Drupal was a quick and effective way to give the User Experience team the control they desired in a robust system customizable fashion. The Advanced Landing Page project again made use of pulling in template data into Drupal from non-Drupal parts of the site. This allowed for changes to be made in one place rather than multiple places.
This project really showcased Drupal’s flexibility needed for the landing pages. The landing pages are comprised of a number calls to internal APIs (including SOLR). Combined with these internals calls and contributed CCK related modules, we have nice balance of both flexibility and automation.
Modules Used
As for modules, we utilized some of the more prominent modules such as Admin Menu, CCK, Contemplate, Devel, Nodehierarchy, Notifications, TinyTinyMCE, Views, and so forth. For more of a break down of modules as seen on Advanced Landing Pages - (Ex. Shoes, Clothing, Sunglasses, Bags)
- CCK
- FileField
- Link
- Nodehierarchy
- Views
FAQ/CS Pages – General Questions, Shipping and Delivery Questions, Privacy Policy
- CCK
- Nodehierarchy
- Views
- Taxonomy
- Taxonomy Manager
- Views
- Views Datasource
Drupal and Powered By Zappos (PBZ)
We are also using Drupal for portions of the individual Powered by Zappos sites. A big proponent for the new PBZs is Domain Access. We have a number of CS/FAQ pages that are consistent across all PBZs, allowing us to publish certain pages to all sites, while at the same time allowing us to create site-specific pages.
2010...
We started off 2010 by completing our migration of our Blogs (Blogs.Zappos.com) to the Drupal platform. So far things have been running smoothly and it's been a big improvement in terms of stability compared to our old platform. More to come in 2010.
Final thoughts
Although we have overcome a few bumps along the way, Drupal has assisted us with evolving from tasks that have once been code deploys into easily maintainable CMS editable pages. This has been a big win for the front-end team and the larger Zappos company. The Drupal community has also been a very open and welcoming community, both via online communications and in-person meetings. We saw this first hand when a few of the Front-End team attended DrupalCon DC '09 and met some great Drupal developers, who were both passionate and helpful in all things Drupal.
Zappos is also hiring for various full-time on-site development positions in Henderson, Nevada a suburb of Las Vegas. Positions include Front-End Developers, Drupal Developers and Software Engineers. Click here to see them all.
Written by Alex Kirmse (@alexkirmse) and Geoff Berger (@geoffberger)
Drupal version: Drupal 6.x