Craft CMS Developer Agency

Craft CMS Specialists

It's the only CMS we use

Craft CMS Agency

Official Partner Network

Expert Developers

We don’t outsource

Honcho Logos White Mobile

A Craft CMS development team you can trust

Have your web developers gone AWOL again?

Need a web development team you can trust?

Is your Craft site slow and in need of an update?

Not getting the best out of your Craft site?

Hit the limitations of WordPress?

Are your developers unable to support Craft web design?

Craft CMS Dev 2

New Craft CMS websites & rebuilds

New Websites

End-to-end Craft CMS design and web development.

Front-end conversion and back-end author experience.

Craft Development

Simple brochure sites through to complex integrations.

Craft Comm

Craft Commerce Developers

eCommerce with Craft CMS

Sell your stuff online.

Extend and integrate

Hook into Stripe, Xero, Klaviyo and more.

Subscriptions, Discounts, Customisation

Custom user-flows with Craft's unlimited flexibility.

Custom solutions

For complex and unique problems.

API Integration

Hook Craft into existing applications.

Seemless Workflow

All your systems aligned.

Ongoing collaboration for your web development roadmap.

Agency Partnerships

Extend your team’s development capacity.

Front and backend debugged and demystified.

Always upto date, secure and error-free.

Major version upgrades for Craft CMS and Plugins.

Craft Consultancy

Strategically plan for the best outcome.

Craft partner

Craft CMS Partner

We're proud members of the Craft CMS Partner Network.

Brandon Kelly Love New

Brandon Kelly said... 'Seriously impressive article'

Craft CEO called our post Why We're Craft Developers, "seriously impressive" 🙌

Craft Benchmark

The Craft CMS Developer Benchmark

We run the Craft CMS web developers' global survey.

Trusted by 180+ businesses

Client logos colour mobile

Start your next Craft CMS project with us

Step 1


Share your Craft problems.

Step 2


Planned and aligned for success.

Step 3


Piping hot. On-time. On budget.


Why Honcho?

There are 234 other Craft CMS Partners out there. So why choose Honcho?

Using Craft CMS since 2015

100+ Craft projects

We only use Craft CMS

WordPress-free Zone

Inhouse development team

We don't outsource

Get in touch with Craft CMS experts

There's a good reason why we're Craft CMS developers. Before we get into that — take a look at these stats:

According to data — there are a mind-bending 617 CMSes powering the top 10,000,000 websites.

The top 10 look like this:

Top 10 cmses

We’ve used our fair share of CMSes.

Six from the top ten list above — and perhaps another five or so from further down.

For the past three years one CMS has really stood out for us:

Craft CMS.

It may be far from the top of the popularity charts — but here’s a whizz stop tour of what we think is so good about Craft CMS — and why we believe it’s worth investing in.

Insight CTA Image Pink

Looking for a Craft CMS partner for your next project?

A (very) brief history of Craft CMS

Craft CMS is built by software development company Pixel & Tonic.

Originally formed by Brandon Kelly — they gained recognition for creating a set must have add-ons for ExpressionEngine.

You’d be hard pushed to have built an ExpressionEngine website without using one of their brilliant add-ons:

  • Wygwam
  • Assets
  • Playa
  • Matrix
  • Field Pack

Then rumours started circulating that Pixel & Tonic (at the time just Brandon Kelly) was also working on a top secret side project: Blocks CMS.

There was unrest in the ExpressionEngine community as developers had begun to push back against decisions EllisLab (the makers of ExpressionEngine) were making with the CMS.

Ellislab tweet about competition ethics addons

The Blocks CMS name was a little uninspiring — but the premise of the creator of the best ExpressionEngine add-ons releasing a content management system to compete with ExpressionEngine was tantalising.

Blocks CMS was announced via Twitter in 2012 and soon after Pixel & Tonic published a blog to shed more light on their ‘little side project’.

Pixel and tonic tweet about craft cms

In March 2013 the official announcement came:

After 27 months of about 12,500 total man hours, 3,483 commits, three product strategies, 31 redesigns, 7 major architecture shifts, countless code refactors, one name change, and approximately 327 liters of consumed Jameson, it is my very great pleasure to introduce you to Craft.

Brandon Kelly  – Pixel & Tonic

The name change was due to legal implications — and they felt they’d built something greater than they’d originally intended.

The CMS is for people who like to take their time and do things right. It’s for those of us who truly approach our work with the utmost skillfulness and craft. We craftsmen actually like writing every last HTML tag by hand, and we wouldn’t touch an off-the-shelf theme with a ten-foot stick. It’s for web agencies that strive to make their clients happy by delivering the best solution possible. And it’s for site owners, who just want a simple tool to keep their website updated with fresh content, without going up a steep learning curve.

Brandon Kelly – Pixel & Tonic

We love the ethos — but it sure can make Googling support articles difficult.

“Craft websites”, anyone?

Craft is hard to google

As the popularity of Craft CMS grew, so too did the Pixel & Tonic team. Brad Bell joined in 2010 as ‘Chief mixologist’.

We’re not sure what it means either ¯\_(ツ)_/¯

Then a slew of other top tech talent, including former EllisLab CEO, Leslie Camacho as CCO.

Unsurprisingly, Pixel & Tonic sold all their ExpressionEngine plugins to EE Harbour — which allowed them to focus purely on Craft CMS.

Craft is currently on version 4 — and the popularity of the CMS has grown year on year since it’s original release.

Brandon shared stats in his State of Craft keynote from last year's Dot All conference.

You can check out his presentation here.

Who uses Craft CMS?

In terms of popularity, BuiltWith tells us there are over 43,000+ live Craft websites on the internet.

Some high-profile Craft users include Netflix, Intel, Sonos, Salesforce, Moz, Atlassian, Reddit, Oakley and the Dalai Lama.

There's no real discrimination between the size of the organisation or website project. Craft has been adopted, across countless industries and sectors – from international business, SMEs, and websites for startups – to mom-and-pop shops.

Companies that use Craft cms

But what makes Craft CMS so good?

It’s difficult to pinpoint one exact thing that makes us want to be Craft CMS developers — but as experienced website consultants, if we were pushed for an answer we’d boil it down to these 2 points:

1. Craft CMS makes no assumption about the content

At its core Craft CMS makes no assumption about what the site needs to do or be.

We’ve yet to find a situation where Craft CMS can’t easily give us exactly what we want on the front-end; something you may be unfamiliar with if you’ve ever used ‘theme builders’ on other CMSes.

Pixel & Tonic sum it up nicely on their website:

Build exactly what you want from the ground up, rather than wrestling with a pre-built theme.Craft CMS Website

The admin area takes the same approach too. It assumes nothing about what the content is or how it’s structured and simply lets us manage the content.

2. Built-in features

Craft CMS comes with a solid set of built-in features.

Many of Pixel & Tonic’s ExpressionEngine add-ons were repurposed and built into the core of Craft CMS.

That means that there’s scope for achieving more of what you need to do natively — rather than relying on plugins to bridge a functionality gap.

But that’s not all...

Insight CTA Image Pink

Craft CMS web developers for your next project

A brilliant Control Panel

Craft CMS is not only brilliant for developers, but content administrators are taken into consideration too.

The beautiful Control Panel ensures a slick content authoring user experience.

Setting up sites, changing settings and managing content is intuitive and… dare I say fun?

As you’d expect, the Control Panel is responsive and the mobile user experience is beautiful on smaller screens. It's a great feature for time-pressed content writers who have to create content on the move (or on the toilet).

Craft 3.6 brought a huge focus on accessibility of the Contron Panel, where many aspects including icons and focus states were updated to make sure everyone can use the system. The release of Craft 4 came with a new batch of accessibility features with a focus on screen reader compatibility, so you know Pixel and Tonic take accessibility seriously.

For web developers, the Utilities section of the Control Panel will regularly come in handy.

Craft cms assets

PHP info is right there — as well as a report showing you whether your server is meeting all of Craft’s server requirements.

There’s even a Deprecation Errors page to flag up any issues you might have with future versions of Craft.

Author drafts

When writing content, an author can choose to save an entry as a draft rather than publish it straight away.

Though in itself that's fairly standard, Craft CMS once again takes it to the next level, by offering change tracking.

This allows multiple authors working on drafts to merge each other's changes, which is incredibly useful to make sure you don't overwrite your colleague's work.

Advanced filters

With the release of Craft 4, Craft CMS introduced advanced filters to the entries panel. This means you can filter for entries based on the value of any custom field you've created - with and/or logic built in. This will make finding entries on large sites much simpler than before.

Use the Matrix for repeating content blocks

The Matrix allows you to define repeating blocks of content within an entry — and each repeating block can be made up from one or more of Craft CMS Custom Fields.

A simple example of where to use a Matrix block is a web page showing team members in a company. You would set up a Matrix block with just the fields each team member needs:

  • Name
  • Role
  • Photo
  • Bio

Content authors can click the ‘+ Team Member’ button to add a new team member — and the correct Custom Fields would appear, ready to be filled in.

Matrix blocks can easily be rearranged. In the context of the team members page, promoting a person is as simple as dragging and dropping the blocks into a new order.

Craft cms control panel

But the Matrix really comes into its own when using multiple block types.

A simple webpage could have the following sections:

  • Text
  • Image
  • Testimonial

We’ll call these the Block Types.

Within each block type, we can define the Custom Fields it needs.

For example, the Testimonial block could have:

  • Testimonial
    • Name
    • Quote
    • Photo

And the Image block could have:

  • Image
    • Photo
    • Description
    • Photographer

With the block types defined, the content author can start to build up the page in the order that best suits the article.

The article could start with a block of text and then show a sequence of images. Or start with a Testimonial, move on to a block of text and then back to another Testimonial.

It’s totally up to you.

The Matrix gives authors freedom to create engaging content without them having to code HTML or paste in [shortcode]s.

The Matrix can be as simple or complex as you need it to be.

We’ve used it for team profiles and blog articles — right through to full landing page builders which allow authors to design complex pages from a set of content types like; image galleries, contact forms and videos.

Developers have complete control over the template markup and content defined in a Matrix block will output exactly the way you want it to.

Again, no more wrestling with pre-built themes or code.

At present it’s not possible to have a Matrix within a Matrix, however this is coming in Craft 5. Pixel & Tonic have published a Roadmap of upcoming features, which can be commented on and contributed to on their public Github.

Until then there are a couple of plugins that will do the trick.

Craft CMS Tip:

The Matrix isn’t just for entries. You can get creative and use Matrix fields in categories, tags, globals, assets and users too.

Edit images in the Control Panel

Editing images for websites can be a laborious task. The less time you need to spend in Photoshop the better!

Craft CMS's baked-in image editor won’t replace Photoshop — but does come with some handy editing tools:

  • Rotate
  • Flip
  • Crop
  • Focal Point

Set the focal point for mobile-friendly images

In the age of responsive web design, getting the image to look great across all screen sizes can be difficult and time-consuming.

Previously, we’d need to create a different image crop for each screen size to make sure the main elements of the image were positioned in the right place.

It. Was. Tedious.

Craft CMS allows you to set the focal point, or gravity, on a single image.

In conjunction with Image Transforms, Craft CMS uses the focal point setting to resize and crop the image — keeping the main subject the centre of attention.

Craft cms image editor

Build beautiful (data) relationships

Craft CMS makes it easy to connect and cross reference entries.

Need a ‘Related Blogs’ section? No problem.

Adding a set of Speakers to an Event? Easy.

Craft CMS’s handling of relationships is first class. You can even create new related entries from within the parent entry.

There’s no need to save, create a new entry, go back and add then add the new entry — it can all be done from the same place. A lovely feature and a great time saver.

You can choose which entries can be related to each field, for example only Blog entries can be related to the Related Blogs field. As of Craft 4, you can add more advanced limitations here including only allowing entries with a certain category to be relatable.

Craft cms create content within content

Craft CMS Tip:

Editing lots of content? You can use a keyboard shortcut cmd + S on Mac or ctrl + S on a PC to ‘Save and continue editing’.

Preview your content before publishing it

Live Preview does exactly what you’d hope; it shows you a live preview of your content on the front-end of your web page — updating in real time as you add and edit it from the Control Panel. In Craft Pro, you have controls to change the viewport to mobile, tablet, and desktop views.

Craft cms live preview

Many other CMSes allow you to preview the entry before it’s posted — but I’m not sure if this has ever been executed as well in a content management system as it has in Craft.

It’s a killer feature — and one that usually gets an ‘oooh’ from clients when we demo it to them for the first time.

Custom fields for custom content

Custom fields are the backbone of a great and true CMS.

Content can come in many guises; text, images, video — and everything in between.

Out-of-the-box Craft CMS comes with a healthy set of Custom Fields with which to build the admin interface your client will create their content with.

— Assets fields allow you to relate assets (such as images) to other elements.
— Categories fields allow you to relate categories to other elements.
— Checkboxes fields give you a group of checkboxes.
— Colour fields give you a hexadecimal colour input with a preview of the current colour, and on browsers that support input type="color", clicking on the preview will open the browser’s colour picker.
— Date fields give you a date picker, and optionally a time picker as well.
— Dropdown fields give you a dropdown input.
— Email field allows you to add a plain text field with automatic email validation attached.
— Entries fields allow you to relate entries to other elements.
— Lightswitch fields give you a simple toggle input for times when all you need is a “Yes” or “No” answer.
— Matrix fields allow you to create multiple blocks of content within a single field.
— Money field gives you a plain text field with automatic money formatting.
— Multi-select fields give you a multi-select input.
— Number fields give you a text input that accepts a numeric value.
Plain Text
— Plain Text fields give you either normal text input or a multi-line textarea, where plain text can be entered.
Radio Buttons
— Radio Buttons fields give you a group of radio buttons.
— Table fields give you a customizable table, where you can create multiple rows of content.
— Tags fields allow you to relate tags to other elements.

— Time field allows you to select a time, for example a start time for an event, but without an attached date


— URL field gives you a plain text field, with automatic URL validation. This can be for a website, phone number, or email address.

Insight CTA Image Pink

Looking for Craft developers for your next project?

Customise the field layout for each section

To assign Custom Fields to sections in the Control Panel, Craft CMS provides you with an intuitive drag-and-drop editor to build up fields for different types of content your client needs.

In addition to being able to order the fields how you'd like, Craft CMS also allows you to add UI elements such as headings, tips, warnings, line breaks, and even custom templates to each section's field layout. This greatly enhances the authorship user experience and makes sure admins understand how to create the content they need to.

You're also able to relabel fields and add custom instruction text depending on the section it's in. This can be useful if, for example, an image should be square in one section, but widescreen in another — you can change the instruction text without having to create two separate fields! Equally, you might want to have different field names for developers and authors, such as "Masthead -- no image" for developers, but just "Masthead" for authors.

Craft cms drag and drop custom fields

As of Craft 4, Craft CMS supports native conditional fields. For example you could only show the "Image Caption" field if the "Image" field has an image attached.

From here you can also group information for the entry page into tabs. We often use one tab for the main entry content and one tab for the entry's SEO data.

It’s completely optional — but does help group content together in logical chunks.

Craft cms tab switching

Place content in the right place with Section Types

In Craft-land, content falls into one of four types:


Perfect for Homepage, About us and Contact pages. Basically, anything that’s a single page that doesn’t need to be ordered or have a date associated with it.


Channels are great for date based content like Blogs, News or Events.


Structures are for content that has to be in a specific order. Ideal for resource sections, people profiles, or services your business offers.

Structures can be hierarchical too — and are perfect for something like services, which might have sub-services below them.

It’s up to you how to organise the content — but the Section Types in Craft give you more than enough freedom to make it feel like you’re never shoehorning content into somewhere it doesn't belong.

Screenshot 2019 04 15 at 15 12 48

For everything else, use Globals

For smaller chunks of content, developers can also set up Global fields which have a dedicated section in the Control Panel.

This is where you might add site-wide setting that aren't necessarily part of an entry — such as the cookie policy popup text, your site logo or a favicon.

Multiple types of entries

Entry Types is a magical setting that can transform the way you think about creating content.

Each Channel and Structure can have multiple Entry Types — effectively extending or completely altering the type of content available within that entry.

Confused? Yes, me too at first.

Imagine your website needed a News section. Not uncommon. The most simple approach would be to create a News Channel and have one Entry Type called News.

Now imagine there are two different types of news; articles, and announcements.

You could create a new Announcments channel, but this doesn't feel like the right decision since they're both types of news.

This could be achieved with Categories. But where having a new Entry Type shines is that you can post Event and News in the same Channel and have a unique set of Custom Fields for each Entry Type.

The Announcements Entry Type could include the same or completely different custom fields as the News Entry Type.

Entry Types can have their own front-end template. The design, layout and content the visitor sees can change according to which one is being displayed.

It’s a flexible system that you can get super creative with. Add Categories and Tags into the mix and you’ll end up with several ways to build and administer content in a logical, easy to manage way.

Powerful, PHP-free templating language

One major factor that sets Craft apart from other content management systems is that it uses a templating language called Twig, rather than PHP.

There is no inline PHP allowed in the templates. This means that your templates stay beautifully clean, and any complicated logic is deferred to the Craft application.

Templates are easier for everyone to understand. It also prevents poorly written code from clunking up your site — an issue that can affect performance, security and maintainability.

To add your own custom PHP, Craft CMS allows you to easily extend its app by adding your own modules and plugins.

This might seem restrictive at first, but forcing web developers to structure their PHP properly rather than dumping it into the template is great for the long term health of the project.

Organise front-end templates however you like

You can set up your Craft template folder structure however you want.

With the use of Twig’s include(), you can segment your templates up into reusable chunks. For example on the News page, you could include a news-preview partial.

This is a great way to keep coding DRY, reusable and maintainable.

Within Twig you can write macros, which are essentially little functions that generate bits of templates for you.

One of the macros we’ve written called navLink() generates the markup for a navigation link, so we only need to update it in one place.

{% macro navLink(params) %}
 <li class="nav__primary__item nav__item{% if %} nav__item--active{% endif %} f_semibold">
 <a class="u_no-dec nav__primary__link" href="{{ params.url }}">{{ params.title }}</a>
{% endmacro %}

Having to write this every time would be inefficient and more likely to be inconsistent — thus saving us time and headaches!

Insight CTA Image Pink

Need a Craft CMS development team for your next project?

Easy custom URL routing

Routes allows you to manually choose the URLs for all of your sections, eg: News article URLs should be /news/{article-title}.

That’s a powerful feature when you want your News Index to be called News Index in the Control Panel but you want the URL to be /news/.

Anything more complicated than that is super easy too.

You can set custom routes with a simple pattern matching system that can be done through the Control Panel or in the routes.php config file. It's also possible (and simple) to include variables in your routes.

We always recommend using routes.php because then everything is safely saved in version control.

For example, if you're building a property website, you could set up a custom route like so:

return [
 'properties' => ['template' => 'properties-index']

And you may then also want to pass a variable into your template:

return [
 'properties/<propertyid>' => ['template' => 'property-details']

which will expose the propertyid variable to the template, so you can use it like any other variable:

{{ propertyid }}

Really simple and super useful!

Multisite CMS from one Craft installation

Craft CMS comes with multisite straight out the box. You can run and manage multiple sites from one Craft CMS install but share data, templates and assets across them all. Boom!

We worked on a project for The Church of England which needed 20 individual sites, with different user access permissions, running on different domains — but they shared the same templates and themes.

Craft CMS's built-in multisite feature worked perfectly in this situation. There was no need for 3rd party plugins.

Multi-lingual support

Craft CMS's native multisite is also how multi-lingual sites can be created. You can set your (for example) French website to use exactly the same templates and entries as your English site, and use the language switcher within the Control Panel to write the French content.

One-click updating via the Control Panel

Craft CMS allows admins to update Craft and any plugins through the Control Panel with a handy update button.

A database backup is automatically created before performing any updates, and will automatically roll back if the update fails for any reason, so we have no anxiety around clicking update. This hasn't been the case with other CMSes.

Craft cms one click updating via control panel

...Or update from the command line

Whilst non-major updates can be installed with one-click through the Control Panel, you might not want to do that for a variety of reasons; testing, risk of failure, clients clicking it when you don’t want them to, etc.

Luckily, Craft CMS has a solution for this too.

You can update Craft — and any plugins — through the command line and disable the ability to update them via the Control Panel with a config setting.

Run ./craft update from the command line and it’ll list all available updates for your version of Craft.

Then run ./craft update all will update everything for you and save the changes into composer.json, so everything is stored in Git.

This means you can update locally, test everything out, then deploy to production and have the updates run as part of the deployment process.

Migrating from Craft 2 to 3?

Check out our guide to migrating from Craft 2 to Craft 3.

Storage for all your media assets

Assets are where you store the sites media — such as images, documents and videos.

When stored as Assets, items can be assigned to entries to populate the website content.

Like Section Entries, Assets can use Custom Fields to enhance and customise the information stored within the asset.

A video asset could have Director, Length, and Year Custom Fields assigned to it to help filter the entries on the front-end or in the Control Panel.

Assets are stored within Filesystems, each of which can even have their own user permissions; helpful if you have a set of assets that should never be deleted by click-happy admins.

Filesystems can local folders, or external storage such as an Amazon S3 or Digital Ocean Spaces.

From a user administration point of view, the Assets drag and drop functionality is easy and intuitive to use.

Craft cms assets

Craft CMS Tip:

Need more storage or want to keep your assets off the server? You can connect Craft to Amazon S3 with the Pixel & Tonic Amazon S3 plugin.

Image manipulation on the fly

In addition to the built-in Image Editor, there’s also a more programmatic way to manipulate images using Image Transforms.

Instead of forcing content admins to upload images at specific dimensions, Craft CMS lets you define custom image resizing rules.

Image Transforms let you set the final image output's width and height — along with whether the image should be cropped or stretched to get to the final dimension.

You can define where the crop should start from using pre-set parameters:

  • Top-Left
  • Top-Center
  • Top-Right
  • Center-Left
  • Center-Center
  • Center-Right
  • Bottom-Left
  • Bottom-Center
  • Bottom-Right

Image Transforms allow you to set the image quality on-the-fly; helpful when trying to shave off kilobytes from images to improve page loading speed.

The Image Format setting lets you specify the image output type as either JPG, PNG or GIF.

We’ve found this immensely helpful thwarting content admins who insist on uploading high-res photos saved as PNGs!

No matter what image settings you apply, the original image will stay intact on the server — so you’ll always have that available if you need to reuse it at a different size on the site.

You can also set a maximum image upload size in the site configuration, to prevent large photos from being uploaded in the first place.

Image Transforms can be defined in the Control Panel or directly in the code. We tend to take the latter approach so that the transforms (along with Routes) can be version controlled.

Craft CMS Tip:

We love Spacecat Ninja's Imager X plugin - well worth the licence fee - which adds more image transformation options into the mix. This combined with the image service Imgix is our preferred way to transform and serve images.

Multi-environment config file

An overlooked but incredibly important and powerful feature of Craft CMS is the use of an environment file.

The environment file lets you specify things like database settings, site URL, and API keys for third-party services.

The important point here is that settings in this file will be environment-specific.

One developer’s database settings will be different from another’s, which will be different from the staging site — and should definitely be different from the production site.

Keeping these settings in an environment file eliminates the need to edit app files directly on the server, reducing the risk breakages due to human error.

Because environment files are not stored in Git (they shouldn't be, anyway!), it’s also an added security measure as your passwords aren’t saved anywhere but your own computer.

It also has the added bonus of reducing Git conflicts and developer headaches, if, for example, Alice prefers to develop on example.local, but Bob prefers

Keep projects in sync across different environments with Project Config

One of the biggest headaches with any CMS is keeping development and production databases in sync.

Craft CMS has solved this issue perfectly by having Project Configuration files (a folder full of .yaml files), which saves the structure of the project, without saving the content.

The Project Config allows us to keep in sync:

  • Asset filesystems and named image transforms
  • Category groups
  • Craft and plugin schema versions
  • Craft edition
  • Email settings
  • Fields and field groups
  • Global sets
  • Matrix block types
  • Plugin editions and settings
  • Routes
  • Sections and entry types
  • Sites and site groups
  • System name, time zone, and status
  • Tag groups
  • User settings and user groups
  • essentially everything that isn't content

The Project Config can be deployed directly when going to production. By clicking the “Sync Changes” button in the Control Panel the database is then updated according to the project config data.

This saves us loads of time.

The previous option was to either tell clients to not make any changes while we develop (content freeze!) — or to manually replicate any database changes we made when adding a new feature (hassle, prone to error).

It also means the project config can be checked into Git, so Alice and Bob can both develop without having to email or Slack their database to each other.

Craft cms sync changes

Craft CMS Tip:

You can also sync project changes automatically on deployment, with the command ./craft project-config/apply or ./craft project-config/rebuild if you need to rebuild from scratch.

Logically group content with categories and tags

Categories and Tags help keep content organised.

Set up as many Category Groups as you need and then apply Categories to any element (Entries or Assets) with a Categories field.

In a similar fashion, Tag Groups can contain their own unique set of tags — which can be created on the fly from a Tags field.

Using either or both together — Categories and Tags are a powerful and logical way to group content into meaningful sets.

Users, User Groups & Registration

On installation Craft CMS sets you up as an Admin with full permissions to do everything you’ll need to as the site creator.

If more people need access to the Control Panel you can set up and assign them to User Groups and give Users specific Permissions.

Users within User Groups share the same permissions and can be updated en masse. Permissions, on the other hand, allow you to fine-tune individual Users' access.

You can also decide which users can see which Globals, to avoid a client accidentally changing important settings.

Craft user permission are extensive and incredibly flexible.

  • Access the site when the system is off
  • Access the CP
    • Access the CP when the system is off
    • Perform Craft and plugin updates
    • Access [Plugin Name]
  • Edit users
    • Register users
    • Assign permissions
    • Administrate users
  • Delete users
  • Edit [Site Name]
  • Edit entries
    • Create entries
    • Publish entries
    • Delete entries
    • Edit other authors’ entries
      • Publish other authors’ entries
      • Delete other authors’ entries
    • Edit other authors’ drafts
      • Publish other authors’ drafts
      • Delete other authors’ drafts
  • Edit [Global Set Name]
  • Edit [Category Group Name]
  • View [Asset Volume Name]
    • Upload files
    • Create subfolders
    • Remove files

Front-end user registration forms

Public Registration is off as default — but if required visitors can self register as Users through a front-end form.

The User Group and Permissions can be assigned on form submission — making Craft perfect for membership sites, guest posting opportunities and member-only content.

Keep developer teams in sync using Composer

With other CMSes, plugins were a big mess of unsorted ZIP files downloaded from various unmanaged places on the internet and then uploaded to the server.

This nightmare is over with Craft CMS.

The CMS itself, any plugins you’re using, and their dependencies are all managed through Composer.

The version-controlled composer.json knows the exact version of Craft you're using, and the exact version of any plugins you're using.

All your web development team needs to do is run composer install from the command line and composer will download all the correct bits and bobs you need.

Again, no more sending ZIP files to fellow developers. Yay!

Craft cms composer

Graph QL and Headless Mode

Out the box, Craft CMS has full support and functionality in place to use Craft as a headless CMS.

Through the CMS's Graph QL area you can test queries, and create access tokens and schemas for security.

This is super useful if you're creating a project with a JAM Stack approach, as your database and content is decoupled entirely from your front end code.

Craft Cloud

Though Craft Cloud isn't released yet, we're keeping an eye on their blog for updates.

The idea is that you could pay for a subscription to have all your database and content managed on the Cloud, and use Graph QL and Headless Mode to access the data in your JAM Stack project.

This will certainly make hosting less complicated!

Dev Mode for testing and debugging

When Dev Mode is enabled, Craft will react slightly differently and makes developing with the CMS even easier.

With Dev Mode on, if there’s an error in your Twig template code, Dev Move will display a full stack trace in the browser showing you what’s gone wrong and where abouts.

Dev Mode will display PHP errors and exceptions, template syntax errors and extra logs will be created in the craft/storage/runtime/logs folder to help you work out what’s going wrong and how to fix it.

Dev Mode is on by default.

You’ll know it’s active by seeing a strip of construction tape along the top of the Control Panel.

Craft cms dev mode

Craft CMS Tip:

Dev Mode should always be turned off for production environments.

Error messages look ugly to visitors — and the full stack trace could potentially expose a vulnerability to visitors with malicious intent.

We set Dev Mode on or off automatically depending on if we're in production or not with 'devMode' => getenv('ENVIRONMENT') != 'live'. This helps us reduce human error.

Further Reading

Super helpful Yii Debug Toolbar

Craft CMS is built on the Yii PHP framework and baked into Craft is the Debug Toolbar.

By the flick of a user preference, the Debug Toolbar can be configured to appear at the bottom of the browser window of your Craft CMS site — whilst viewing the Control Panel or the front-end.

It shows statistics and information about the page you’re currently viewing — including:

  • Timeline
  • Block and macro rendering time
  • User
  • Router
  • Requests
  • Logs
  • Deprecation Errors
  • Database Queries
  • Memory Usage

You can drill down into each set of data to see more information to help debug your site.

Or use the data to streamline your page loading speed by seeing where the database queries are coming fro, and where performance bottlenecks are.

Craft cms yii tool bar

Plugin Store one-click installation

Admins can install plugins directly from the Control Panel using Craft’s built-in Plugin Store.

There are over 370+ plugins to enhance Craft’s functionality and integrate with 3rd party services like Stripe, Mailchimp and Amazon.

Plugins range from Free to $99. With the exception of Pixel & Tonic’s own Craft Commerce plugin at $999.

Plugins are available in the following categories:

  • E-commerce
  • Templating
  • SEO & Accessibility
  • Performance
  • Security
  • Control Panel
  • Forms
  • Fields
  • Widgets
  • Assets
  • Utilities
  • Mailer Adapters
  • Social Networking
  • Integrations
  • Development

You can see the full list of plugins on the Craft Plugin Store page.

Craft CMS Tip:

Try before you buy! As long as you’re running the site on a domain Craft does not consider to be public you’re free to try plugins out before shelling out hard cash for them.

Craft is Google PageSpeed 100 fast

Yes, yes, yes — it’s mostly thanks to our super front-end skills.

Speed is a Google Ranking factor



PHP 7 & Speed

Link to hosting…

Craft has it's own web development environment: Craft Nitro

Though you can run Craft CMS with whatever development environment you want — MAMP, Vagrant, DDEV, or a custom LEMP stack — Pixel & Tonic also have a dedicated Craft option for you called Craft Nitro.

Powered by Docker, Craft Nitro will get you up and running without hassle and make developing with tools such as Redis and PostgreSQL a breeze.

Craft is brilliant for SEO

The fact that Moz use Craft CMS for their website should tell you pretty much everything you need to know about how good Craft is for search engine optimisation.

Out the box, Craft assumes nothing — even when it comes to how you roll your SEO.

Because you mark up template HTML you have complete control over the on-page SEO.

There are typically two approaches you can take: 1) Install a plugin or 2) create your own search engine optimisation custom fields.

We use SEOmatic, which is one of the most popular paid plugins in the Craft CMS Plugin Store. It's very feature rich and does the leg work for you in terms of creating the core set of search engine optimisation fields you’ll need, including structured data. We’ve used SEOmatic several times and have been impressed with the depth of options available.

Thanks to the default Asset fields it’s easy to output image Alt and Title Tags (another SEO win).

Routes should get another mention here too — as adding keywords to your sites URLs is simple with Craft and is just one of the many (alleged!) Google ranking factors.

Craft CMS is secure 🔒

Simply put — Pixel & Tonic take security seriously and as far as we’re aware there’s been no reported security incidents.

Off the back of a detailed StackExchange answer about Craft CMS security, the team wrote a Security Q&A post which follows on and expands from Brad Bell’s (Pixel & Tonic CTO) StackExchange post.

Further Reading:

Also see the Securing Craft Guide: a guide to making your Craft installation secure.

A community of Craft CMS developers

The growing Craft CMS community is one of the most talented groups of developers we’ve ever come across.

There’s a regularly updated list on the Craft CMS Awesome page where Craft peeps go.

Some of the most frequented Craft CMS developer community hangouts are:

Craft CMS Conference:

Pixel & Tonic put on a Craft CMS developer conference each year called Dot All Conference.

Host Craft CMS everywhere

With the increasing popularity of Craft CMS it's inevitable that hosting companies have started to offer Craft CMS specific server setups - including:

There are also guides for setting up Craft on:

We’re currently using DigitalOcean servers — which have been fast and reliable and easily meet the Craft server requirements.

How much does Craft CMS cost?

Craft originally came in three pricing bands:

  1. Personal (Free)
  2. Client ($199)
  3. Pro ($299)

But since Craft 3 this has been simplified to just two tiers:

Solo — FREE

For when you’re building a website for you or a friend.

  • All core CMS features
  • Single admin account

Pro — $299 Per Project

For when you’re building something professionally for a client or team.

  • Unlimited user accounts
  • System branding features
  • Developer support
  • Includes one year of updates
  • $59/year for updates after that

Just like plugins, the Pro version of Craft can be tried before buying as long as your not developing on what Craft considers to be a public URL — it will let you test on URLs such as localhost,, mysite.test, etc.

Upgrading Craft from one version to another is done in the Control Panel. It’s a simple process — click to upgrade and then enter your (or your clients') payment details.

There’s also the option to create a Craft Console account which connects to a separate website where you can view your order history and manage your Craft and plugin licenses.

Try the Craft CMS demo

If downloading and installing Craft locally seems like too much effort to test it out — there’s a Craft CMS demo you can take for a spin.

Enter your name and email and Pixel & Tonic will automatically spin up a full-featured installation for you to try out.

Limitations, downfalls and criticism of Craft CMS

There’s a lot to love about Craft — but it does come with (and it would only be fair to mention) some caveats.

Craft is not free

This is usually the first reservation developers have about trying Craft CMS.

In a world of open-source CMSes it does seem a tough pill to swallow — especially if you’re a lone Craft CMS freelancer.

But for the amount of functionality and features — and if you’re pricing projects correctly — IMHO the fee is nominal.

You can think of the licence fee as a guarantee that Craft CMS will continue to be actively developed by a first-class team of developers and a passionate community.

PS: If you think $299 is expensive for a content management system you should check out SiteCore's pricing:

Craft cms sitecore price

It can be a steep learning curve

Getting your head around Craft’s Section and Entry Types can be daunting. It’s a different way to approach content than many other CMSes.

Due to Craft’s flexibility, there are similar ways to achieve similar outcomes  —  but finding the best way is something only time and experience (and Googling) will tell you.

Developers coming from CMSes where you can just paste in PHP wherever you feel like it may struggle with Craft CMS's rigid structure for adding modules, but it's for the greater good of code quality and maintainability.

You could be effectively learning Craft and Twig for the first time at the same time.

The documentation can be confusing — especially when you’re unsure if it’s a Craft or a Twig issue you’re searching for — though the docs are definitely improving.

It has a smaller developer community than other CMSes

The Craft CMS StackExchange community currently has 6800+ users — which is dwarfed compared to the 124,000+ users in the WordPress StackExchange group.

We’ve had clients specifically request that we do not use Craft.

Being the only Craft CMS developers they knew — they were fearful of not being able to find replacement developers if Honcho fell off the face of the internet.

I did point them towards the StackExchange and Slack groups to give them confidence in the growing communities of Craft CMS devs — but it didn’t help swing the deal.

For reference, the top CMS based StackExchange’s are:

  1. WordPress — 124,000 users
  2. Drupal — 57,000 users
  3. Magento — 56,000 users
  4. Joomla — 7400 users
  5. Craft CMS — 6800 users
  6. ExpressionEngine — 5900 users
  7. SiteCore — 4800 users

Not bad considering Joomla has been going since 2005.

Checkout our 'VS' articles

Lego vs Craft CMS

Just for context (and the fact that I love Lego) — ‘Bricks’ the question and answer site for LEGO and building block enthusiasts has 8,000 users.

The Craft community may be comparatively small — but as mentioned earlier in the article — it is mighty.

Members of the StackExchange group answer 91% of all questions posted there, compared to 72% on the WordPress StackExchange. (Source: StackExchange)

The Official Slack group (recently ditched in favour of Discord) has over 7600 members who have collectively sent over 1,600,000 messages.

That’s a lot of cat gifs!

Lack of Plugins

The plugin ecosystem is infinitely better now than it was before Craft Version 3 with the addition of the Official Plugin Store.

But with ‘only’ 500 plugins available it does look like a ghost town in comparison to the 54,000+ plugins available to WordPress users.

Two reasons for this could be

  1. Craft does more out of the box than WordPress, so fewer are needed.
  2. A more developer-based community may just write their own custom modules without publishing them.
  3. That same developer community could mean people contribute to open source plugins - rather than write their own - so you don't end up with 10 plugins that do the same thing!

Lack of themes

Craft doesn’t come with themes in the same way other CMSes do.

There’s no theme installer or theme switcher.

Craft is very much geared towards developers creating their own bespoke front-end templates — which harks back to Craft’s philosophy:

For craftsmen who wouldn’t touch an off-the-shelf theme with a ten-foot stick.

But... is Craft CMS better than WordPress?

As you can hopefully gauge from this article — we’re big fans of Craft.

But no article about the CMS would be complete without at least attempting to answer everyone's burning question: is Craft better than WordPress?

Craft CMS vs Wordpress

I’m sure this argument discussion will run until the end of the internet. There’s already been a tonne of 'Craft CMS vs WordPress articles written already... including ours: Craft CMS vs WordPress: Which is the Best CMS for You?

But for what it’s worth — here’s our 2p on the topic.

DISCLAIMER: We used to use WordPress.

Plugin Mentality

We’d never attempt to build a WordPress site without Advanced Custom Fields.

Straight out the box we’re relying on a third party plugin.

In Craft CMS, Advanced Custom Fields type functionality comes built into the core courtesy of the Matrix.

It’s more than likely that you’ll use plugins on a Craft CMS build — but I believe there’s a different mentality to plugin use in the WordPress development world.

Rather than taking a step back and asking what tool is right for the project — WordPress developers ask: “What plugins can I use to make WordPress behave like I need it to?”.

When a client asks for new functionality on a WordPress site — the immediate response is often: “is there a plugin for that?”.

“Is there a plugin for that?”Every WordPress developer ever

We’re guilty of this too.

There’s nothing wrong with plugins — in fact, they’re a good thing! They’ll save you development time and effort, as well as making you part of the open-source community on the internet.

But the problem is when you have to rely on using plugins to make a content management system behave how you need it to.

For even simple CMS functionality in WordPress, you can soon end up swimming in a deep murky sea of plugins.

WordPress was developed as a blogging platform — not a content management system.

But if you throw enough of the 54000 available plugins at it - you can cover up its lack of functionality, bloated and outdated code base  —  and it'll masquerade as everything and anything it was never really intended to be.

WordPress security

The more plugins you rely on — the more susceptible you’ll be to the unsettling array of poorly developed and maintained WordPress plugins.

Poorly developed plugins can lead to security issues — and security issues can lead to hacks — which is one reason why WordPress is the most hacked CMS in the world.

90% of hacked CMS sites in 2018 were powered by WordPress
– Keumars Afifi-Sabet -

If you’re planning on using WordPress and you’re not a developer — then you’ll need to factor in the cost of regular maintenance to keep your website and plugins up to date and out of harm's way.

Remember the Mossack Fonseca data breach — aka The Panama Papers leak?

Thousands of confidential financial documents were stolen and exposed to the public.

That allegedly happened via an out-of-date WordPress plugin.

To date, there have been no reported security incidents with Craft.

Functionally vs Plugins vs Cost vs Sanity

There are some fantastic – and brilliantly developed – plugins for Wordpress: Advanced Custom Fields for example (most likely an inspiration for the Matrix). Yoast SEO and Ninja Forms too.

But even though WordPress is open source and free — the cost of plugins you’ll need can soon add up.

You’ll definitely want to use Advanced Custom Fields.

But what about contact forms?

Proper caching?

Search and filtering functionality?

Membership login areas?

You’ll most likely need paid plugins for all those.

This is partly why the price of Craft doesn't bother us. The missing functionality listed above (and more) comes as standard with Craft CMS.

The Craft CMS plugin landscape may have a fraction of the number of plugins available — but with good reason: what you can do out of the box is vastly more than you can with a WordPress site.

From our experience so far the quality of the plugins from the Craft CMS community is brilliant.

The BYO front-end approach cascades down into Craft plugin-land.

Customising the output is easy — rather than going through the familiar WordPress dance:

  1. Search for plugin
  2. Install plugin
  3. Test plugin
  4. Uninstall plugin
  5. Cry
  6. Repeat

All whilst trying to find the elusive solution that:

  1. Does what you need it to
  2. Works on WordPress Version 5.0 and
  3. Is still supported and maintained by the developer

WordPress decline

Wordpress powers 30% of the internet.

But according to Google Trends — the Google tool that visualises search terms — WordPress is on a steady decline… and has been since 2013.

Wordpress decline on google trands

We're a Craft CMS agency

If a client is just looking to clothe the site in a generic theme for a run-of-the-mill blog — then there’s absolutely no reason not to use WordPress (or other CMSes).

But if they need something more bespoke — more flexible, with custom web design — and an admin user experience tailored to the way you need to administer content — then you owe it to your clients and their business to try Craft CMS.


Insight CTA Image Pink

The perfect Craft CMS agency for your next project