From Expression Engine to Craft

Moving on from Expression Engine to Craft

Ee To Craft Cms

We've built on some of the most popular Content Management Systems (CMS). We tried several fringe systems and even built our own. When we start a project, we always examine client requirements to ensure the end solution meets clients needs. We have our favourite applications, and our current go-to is Craft CMS.

We don’t take a major technology shift lightly but recommend certain clients migrate off Expression Engine. We are going to outline the main reasons why we initially selected Expression Engine, what has changed, and what shifting to Craft CMS means. 

What is / was Great about Expression Engine

In 2011, we selected Expression Engine as our main platform for the majority of our projects. The CMS was truly compelling as it had many features not readily available in more common CMS’. It was far more open and flexible than other options at the time. To provide some perspective, Wordpress was primarily a blogging platform and could be used for websites but was considered "lightweight" at that point.

Strong CMS Basics

Expression Engine has most of the basics one would expect baked into a decent CMS: 

  • Content editing (WYSIWYG) 
  • Asset uploading and viewing
  • Robust user system with commenting & moderation
  • Drafts & versioning
  • Timed entry publishing / expiration

It lacks a few basics such as a site tree, but these are readily available add-ons. The back-end takes the user for a walk-through the first time. Once basic concepts are understood, completing tasks can be simple and streamlined. 

Pro Level Development Community

Expression Engine is an affordable paid licence, which is good for two reasons. The development team has a financial reason to be available, so there is guaranteed support. This also sets a precedence that plugins should be paid for; therefore, developers tend to maintain their created plugins. 

Furthermore, Expression Engine has a smaller community and is more difficult to gain entry to (for licensing and developer skill requirement), which means the community is of high calibre. 

Flexible Entry Types

Rather than modify a fixed set of entry types (page and post), Expressions Engine has custom entry types, which can be useful for various entries such as a "hotel" entry type or an "activity" entry type. Entries don't even necessarily need to be pages at all, which means there is more flexibility with what the end product will look like.  

By having custom entry types, the developer sets up all the content management fields and there is no need for unnecessary fields. Content management is greatly streamlined for site admins. In regards to long-term use, the site is easier and cheaper.  


For complex sites, relationships are essential to allow users to tie entries together. A good example would be something like a festival with stages and artists. An artist could be related to the stage they play on. Both the artist page and stage schedule can reflect changes if the set was to be moved last minute. 

On almost every Expression Engine site we ever built, we have used the plugin Playa (originally developed by Pixel and Tonic) to allow clients to easily visualize and manage relationships. 

Content Management vs. Page Management

The combination of custom entry types and relationships means that content management is more reflective of the content structure, than the page structure. In general, the topic of “separation of presentation and content” has been a popular one in the web development community in the last few years. Although not completely separated, Expression Engine has had this concept right from inception. 

Some Expression Engine pain points

Plugin Soup to Some Extent

As mentioned earlier, certain standard CMS’ features were initially missing. Similar to most Expression Engine developers, we were consistently using a handful of baseline plugins. More plugins leads to more failures and things to keep updated. Most Expression Engine plugins were well maintained but conflicts were always a concern when making system updates. Note, this is one of the primary reasons we are not and never have been a Wordpress shop. 

Development Headaches

In general, our developers were often wrestling with Expression Engines’ unique programming challenges like Parse Order, Embeds/Snippets/Global Variables and Conditionals. Components are not easily reusable. Content components would be locked into the template they were developed in, and could not be made available in other templates. 


Although the dashboard has a quick learning curve, we usually needed to show clients around. Even simply editing an existing page needed an explanation the first go around.

User System

Expression Engine has a really robust user system. However, it is more rigidly defined than other aspects of the system. In several cases rather than extending the user system, we had to build out our own to enable users to create/save content. 


Expression engine has multi-site management built in. It efficiently shares CMS users, but virtually nothing else. After working with this system a few times, we concluded that the efficiencies gained were smaller than those lost. 

Why we switched to Craft

We try not to tie ourselves to a particular platform or mind set, and are aware that no system is perfect. For the moment, we are really big fans of Craft. We’ve got a pretty solid review of why we love it over here.

We started testing with Craft back when it was in preview. Our commitment to the platform grew with it's completion. When 1.0 came out, we were hesitant to commit large scale jobs to it. We built a few smaller sites when 2.0 launched, and felt it was more than capable of what we would consider a “standard” build. 

We have converted several large scale sites from Expression Engine to Craft and built direct comparables to past projects large and small. The experience for developers and clients has been overwhelmingly positive. 

Craft has ALOT in common with Expression Engine

Pixel and Tonic (the plugin developer that made the great Expression Engine plugins) is also the same company that has created Craft. All of the concepts that made Expression Engine great exist in Craft. The core plugins we needed to make Expression Engine better are also the core systems of Craft. The systems have become more refined and intuitive for both the developer and end user. 

Ultimately, Expression Engine was the testing ground for the core Craft features. There is an interesting story about an eventful Expression Engine conference where the keynote speaker (Pixel and Tonic) announced Craft, but we weren’t there, so we won’t weigh in on ethical implications. If you want Expression Engine's side of the story, it’s here.

Some Key Differences 

Again, lot’s of great features about Craft, so this is what’s different from Expression Engine.

Lower Development Effort = Lower Costs or Better Product

We can move the needle farther, with less effort. When rebuilding / refactoring sites originally built in Expression Engine, we discovered we could add significantly more features in less time. There are many reasons for this, but the big ones are:

  • Less plugins required to learn, install, & maintain 
  • Twig templating is simpler to use
  • One click updates
  • Great custom routing

More Refined Control Panel

The control panel is beautiful. The user-interface is very strong, the system is highly organized and contains great features like live preview. The interface is as good as it gets today. It’s so simple our “CMS walkthrough meetings” get somewhat awkward after 30 seconds where we show the user where to login.  

Matrix + Relationships = Ultimate Content Builder

Craft’s website has a great explanation of what "Matrix" is. But the description barley scratches the surface of what it CAN do. Over the course of several of our projects, we’ve really fine tuned a “content builder” that is out of this world. The content builder needs it's own dedicated post to explain, so stay tuned for that. 

Craft Commerce

Craft has an e-commerce component that looks fantastic. So far we’ve only tested internally, but we like what we see. Building transactional sites in the past, we’ve found standard e-commerce platforms with defined checkout flows can be limiting. Defined check-out flows are not the best option, especially when a product isn’t well suited for a typical shopping cart. Craft’s open ended structure will likely make a unique, and compelling online shopping experience.

No Multi-Site Manager, Yet.

Multi-site has not been a documented or promoted feature in 2.x, but the process has been formalized for Craft 3.0 (coming soon)

Shorter List of Plugins

Craft is a relatively young system. The inventory of plugins is a bit smaller compared to what is available on Expression Engine. Again, this can be viewed as a perk or a strike. 


If you would like a Craft project created by our team of experts, please feel free to drop us a line

Are you a Craft developer living in the Calgary area? We are currently getting geared up for our first Craft CMS meetup and are always looking to expand our in-house team or contractor network. Feel free to send your resume and portfolio to