Why ExpressionEngine?

In my years of experience with ExpressionEngine I can tell that if you are reading this then you are probably one of 3 people:

  1. Someone in marketing or leadership at a company that has been pitched on using ExpressionEngine and you want to know what it is
  2. Someone at a digital studio that is not happy with their current content management system and looking for alternatives
  3. An end user that has struggled with making updates to your current site and is hoping someone can provide you with a solution that makes it easier and you stumbled on EE

If you are any of these people the you have landed on the right page. This is going to be quite a lengthy post on why you would want to consider using ExpressionEngine. I'll even cover situations where you may not want to use EE.

If you are the type that would rather watch a video then you are in luck!

Let's get started...

ExpressionEngine, at the time of this writing, is in the top five content management systems in use. But I’ve found there are so many that have not heard of it. EE, like many other CMSs, powers some very powerful websites, and helps companies all over the world communicate with their customers.

So let’s start with some basics about EE.

Channels aren't just for TVs

ExpressionEngine uses a concept called channels to store content. In layman’s terms a channel is nothing more than a bucket that holds a specific type of content. That content can be videos, images, information about your services or staff. It can be anything. When you install ExpressionEngine you start with a blank slate. It makes no assumptions about your content or site or the structure of either. This is what makes it kind of unique.

So the person responsible for implementing ExpressionEngine defines the channels you will need for your website. After they create the different channels for your site you can define the fields that are assigned to each of the channels, individually. This is where the power and ease of use come from.

In non-technical terms an example would be a staff channel. You might want to assign custom fields for:

Image of ExpressionEngine Control Panel

And so on. Whatever the content you want to display you can create a custom field for it. This makes it much easier for non-technical folks to make updates as they are not responsible for any code. In fact they may not need to even resize images to specific sizes as there are add-ons that can do that for you on the fly.

This also makes ExpressionEngine extremely powerful. If used correctly ExpressionEngine makes the concept of Create Once Publish Everywhere much easier. C.O.P.E. is a concept originally put forth by some folks at NPR. They created their own CMS in an effort to gain more granularity over their content so that they could dictate how that content was published. So if affiliate x had paid for a certain tier of acces then NPR could reveal the custom fields that were appropriate to their level of access to them.

ExpressionEngine works this same way, but this is not just handy when dealing with affiliates like NPR. If your content is more granular then you can use that content on your own website in different ways and not have to repeat that content in different entries.

Using the example of a staff member from above, if you have a blog and you want to display information about the person that wrote the blog post then you can add a relationship field to the blog. The relationship field would allow you to choose the staff member that wrote the article. Once a staff member is related to the post you have access to all of the information contained in their entry in the staff channel from within the code that will be outputting the blog content. So you can pull in their image, name, bio and more if you like. That information no longer has to be repeated in both the staff and blog channels.

Image of ExpressionEngine Control Panel

Keeping your content in small reusable chunks also means that EE can output that content with no additional markup. You have ultimate control of the cleanliness of the code. Which leads us to...

A blank slate

As I mentioned before, when you install ExpressionEngine you start with a blank slate. There are no templates, no code dictating a certain structure to your site. This is empowering. It means there is nothing to get in the way of you creating the site that you want.

It also means that some of you will need assistance in setting up your site. Because of the flexibility of the system it is not something you will find templates or themes for. If you are on a budget or a short timeline and can live with a non-custom site then it is quite a simple task for an ExpressionEngine developer to integrate ExpressionEngine into an HTML template (which are quite readily available).


The default URL structure of ExpressionEngine is dictated by how you define the template groups and templates so let’s talk about those for a minute. When you log into a new ExpressionEngine install you will have nothing under Template Manager (unless you installed the sample site). In the Template Manager you have the ability to define both template groups and templates. You can have many template groups and many templates per template group. So you may have the following:

and so on. Notice that some Template Groups have a couple of Templates in them and some only have the index. Using the blog as an example of URL structure. If I have a Template Group called blog and a Template named article that displays the whole blog entry then my url structure is as follows:




The URL structure is clean and definable. You can even override this natural structure if you want but that is a post for another day. Suffice it to say that is fairly easy as well using the provided tools.

Another thing you’ll see people do to boost the SEO ease of use of EE is adding custom fields for things like Title Tags and Meta Tags. Then you just output all of that stuff in the appropriate template. All of that is infinitely configurable because of ExpressionEngine’s Channel/Custom Field capabilities.

So you can see that EE is great for SEO. No one should ever doubt that it has the skills needed to excel in this area.

Members only

One other nice feature of ExpressionEngine is the membership capabilities. If you need to you can create different member groups with different permissions. You can then associate a member to the appropriate member group. This is helpful in limiting what a user has access to in the control panel. Perhaps they need access to the staff channel but not the blog channel. You can control it to that level of granularity. One limitations I feel is important to point out is that you cannot have a member in multiple member groups. But that functionality has rarely come up in our years of working with EE.


I have been involved in the EE community since 2007 and in that time I have not heard of a single ExpressionEngine exploit. I used to work for EllisLab and even then there was not a single valid instance of someone reporting their ExpressionEngine site had been hacked due to a security exploit with EE. Does that mean that there are no security exploits with ExpressionEngine? No, all software can be exploited. But I can say that EllisLab takes security seriously. Many high profile target websites have used ExpressionEngine without getting hacked.

Help! Please!

EllisLab recently added different support levels. I think this is a smart move. Most of you will probably have someone build out the ExpressionEngine portion of your site so you won’t really have a need for support. You will more than likely just interface with your digital studio and communicate issues or needs to them. But the fact that they have a direct line to the development team at EllisLab is a huge win. Other CMSs (yes, even the free ones) don’t often provide this type of support. Most of the time you are left to fend for yourself in some forum. You may or may not get help and when you do it may be someone knowledgable or it could be a fellow noob. With EllisLab’s support plans the digital studio you are contracting can have direct access to get help on issues for a reasonable price. Support plans range from $49 a month with 1 business day turn around to $1999 a month and 1 hour turn around times on Support Tickets. So no matter your need they are there to help.

Rubies and diamonds and sapphires not needed

In the land of free ExpressionEngine might seem costly at $299. But if you look at the cost vs time saved to build out similar features with other systems then it is a winner.

If you have any other questions or feel something needs to be added to this page then drop us a line.