QuickBooks is one of the most popular accounting software packages in the world, backed by enterprise powerhouse Intuit. The domain quickbooks.intuit.com is not only the gateway to purchasing the software but it also houses QuickBooks’ content strategy, aiming to engage current customers and acquire new ones.
Portions of quickbooks.intuit.com use WordPress, namely the Quickbooks Resource Center, Quickbooks University, and the Official Product Blog. According to Sr. Web Architect at Intuit Jake Martin, the sites are hosted in roughly 15 different locations and languages.
“These sites are hosted on WordPress because our team (SEO/Content Marketing) needed a tool that was easy to use, easy to modify, and empower us to quickly author and publish complex content without having to rely (much, if any) on developers,” Martin said.
Quickbooks’ journey to WordPress is unique, but offers a clear overview of some of the challenges faced for enterprise-adoption of the CMS and how to overcome them.
The WordPress backstory
Intuit first started using WordPress roughly three years ago when the team inherited a WordPress blog filled with content but with no active strategy.
“It had been largely neglected and was the byproduct of an aging content strategy that was far and wide, with little cohesion behind the underlying content themes,” Martin said. “A decent sampling of the articles were irrelevant, either with old news or with content that was ambiguous or “thin” and thus not truly actionable.”
The team worked to bring new life to the blog by developing a new strategy, removing low-value content, and reclassifying the majority of blog posts on the site. They audited content and reworked it to align with their new content strategy that focused primarily on thought leadership, consideration, and awareness beyond the “accounting,” Martin told Torque.
At that time, Intuit had also recently acquired the electronic document repo and online store, DocStoc. They leveraged DocStoc’s expert content directly on the new site and gained equity through 301 redirects.
“As the technical optimizations were in the mix, we concurrently set out on a massive redesign, taking the once neglected blog and transforming it into the “Small Business Resource Center,” Martin said.
The first version of the Small Business Resource Center ran powerful WordPress plugins Advanced Custom Fields and Visual Composer. The new blog also leveraged custom post types and page templates. This empowered the content teams to have total control over the publishing experience.
After the site overhaul, the team implemented a content strategy to elevate the resource center and provide site visitors with a more dynamic content experience.
“This came in the shape of content campaigns (a central theme with many pieces of supporting content) and from interactive content – namely micro-experiences,” Martin said.
Paycheck Calculator and Free Invoice Generator are two examples of apps included in the resource center. “These apps are generated in various technologies, ranging from traditional PHP/server-side experiences, to more recently, React and AngularJS apps,” Martin said.
Fast forward to present day
Years into the development and maintenance of their WordPress sites, “it was time to update the sites’ appearance to our new brand guidelines and refresh our content strategy once again,” Martin said.
Martin set out an journey, roughly eight months ago, to build a WordPress framework that would enable his team to move faster and require the least amount of dev involvement possible.
“While I consider my end-user to be our content producers (writers, editors, and creative), I also wanted our content to be served and consumed in various other systems or channels, such as in emails, in product, in apps, or even in other sites,” Martin said. “I also wanted to create a system that would be fun for our developers and leverage more modern technologies such as Handlebars and SCSS/SASS.”
The challenges (and their solutions)
“Lots of hardcore developers tend to not like WordPress” Martin said. While some of these reasons are valid, many of them are misconceptions. To kick things off with the development a new WordPress framework, Martin first collected feedback, both internally at Intuit and amongst the forums on what developers and engineers thought was missing, broken, or incomplete in WordPress. He wanted to understand specifically why developers did not like WordPress.
The primary feedback he received centered around the following:
- It wasn’t considered to be enterprise
- It’s a “gum and paper clip” system
- The lack of a MVC framework
- PHP was dated and no longer competitive
- And most importantly, security concerns
“After collecting this feedback, I went off to see how we could address these causes of concern,” Martin said.
At this time, the REST API V2 plugin had just announced it would be integrating into the WordPress Core. Martin, who was a huge advocate of APIs and the notion of “content as a service,” realized just how integral the REST API would be in the future state of WordPress.
“After many weeks of planning, deliberation, and consideration, our team had a solid idea on how we felt that WordPress could respond to the criticisms,” Martin said. Here’s what Martin and his team compiled:
Misconception: WordPress isn’t considered to be enterprise
Reality: WordPress was built to scale to billions of pageviews per day. Not only that but it provides a flexible content authoring system with customizable content models and associated meta data. In addition, it can model all forms of content and serve them to every device, app, and service, and it integrates seamlessly with other systems via the REST API and XML-RPC.
Misconception: It’s a “gum and paper clip” system
Reality: WordPress’s codebase is well organized, coherent, and constantly improving with ample documentation; and maintains 100 percent backward compatibility. The CMS is maintained and improved upon by tens of thousands of developers around the world, and is constantly evolving to modern best-practices.
Misconception: The lack of a MVC framework
Reality: The Themosis Framework, which amongst other handy features, leverages Symfony2 components to create true MVC WordPress routing.
Misconception: PHP is dated and no longer competitive
Reality: PHP is an easy to learn, object oriented language that is highly supported in every operating system. Because it’s such a widely adopted language, it’s easier to source engineers. Moreover, PHP7 and HipHop VM (HHVM) provide massive performance improvements over traditional PHP5.x.
Martin and his team also brought up a few more technologies to help strengthen their case;
- WordPress REST API, v2 — for full REST API capabilities
- Twig, Blade, Mustache and Handlebars templating (or use traditional PHP) – our front-end developers can design in the templating system that they prefer and the back-end “just works”
- SASS and SCSS support – keeps CSS styling easier to maintain and modify
- Git provisioning — automatically deploys developmental code into our staging environments
- Composer and WP-CLI integration — for faster application management and updates
- Vagrant and a Dockerfile — for our devs to quickly spin-up new sandbox environments
- React.js — for building more dynamic sites on WordPress
Martin noted that while they did a ton of work on debunking the security misconception, he is unable to talk about his findings at this time.
Urban Nomad is born
After compiling the critical feedback and discerning a clear response for each issue, the team started building out a framework.
“Armed with a ton of critical feedback, we had a mountain of work in-front of us to deliver upon,” Martin said. “We started our efforts by building out a framework, Urban Nomad, which would serve as the parent theme to all of our future work.”
The team leveraged React in an unorthodox way, in which, once the page fully loaded, their React app “hijacks” the page and injects its views on the page: the header, the main content, and the footer, Martin said. When a user navigates the site, the app requests data from the REST API and updates the views on the page.
“We spent a great deal of time polishing all the corners of the app, making sure that our custom URL routing structure works, redirections work both in the app and at the server, all app requests are minified and cached into local storage, and that SEO meta values are updated in the app as well as the backend,” Martin said.
REST API pitfalls & learnings
The REST API was a big part of the site redesign, and as such Martin learned a great deal about its complexities and some of the challenges faced when leveraging the API. For Martin, the most complex part of the React-powered site is two-fold.
The REST API doesn’t invoke the same WordPress classes and isn’t able to process shortcodes. The team tried several hack-and-slash solutions, including loading the classes and instantiating the_content(). This failed on recursive shortcodes, which accounted for more than 90 percent of the site’s content, Martin told Torque. They then tried to do a wp_remote_get http request on the permalink, which worked great in staging.
“Since we have full HTML DOM, we would scrape the page and store it into the transient cache,” Martin said. In production environments, however, this led to huge performance bottlenecks.”
The other issue was performance. “For the http request, we used longer-term caching for a smaller site; however it would not handle our larger content site without significantly bloating the database,” he said. They attempted to address the issue by using a transient cache plugin. While this helped significantly, “it was a much more elegant solve to spin up a cluster of prerender.io services (node.js) behind a simple php app (Xpath + security and logging), leveraging an nginx reverse proxy for micro-caching to the node.js app.”
This removed a lot of the overhead of pre rendering the page, isolating our WordPress instance from this process and keeping everything nice and secure.
“Even more so… moving the pre-render content out of the database was the greatest perf gain,” Martin said. “Since each page is 7kb on average, and WordPress doesn’t do a great job managing transients, we ended up with a very bloated transient cache. We now use the database to store a pointer to a flat JSON file and include that as the response from the REST API.”
WordPress & the enterprise
WordPress is without a doubt a suitable solution for enterprise sites. Not only does the CMS power more than 27 percent of the entire internet, but a whopping 60 percent of the top-100 sites on Inc’s 5000 list are also built on WordPress, demonstrating its dynamic use, ability to scale, and ubiquity among leading websites.
The continuous modifications and improvements made to the CMS, like the inclusion of the REST API in the core software, PHP 7, and more, make it increasingly attractive to the enterprise. QuickBooks provides a perfect example of the fact that although WordPress is equipped for the enterprise, there’s still a long way to go in terms of debunking misconceptions about the CMS. Moreover, there is still work to be done to streamline the use of the REST API.
“It’s been a long, sometimes frustrating, but very rewarding journey,” Martin told Torque. “I am sure I missed some details here or there, but I certainly could not have done it without our team of content producers, web developers and support from our senior leadership team.”