Drupal

Drupal is built for sites that have to hold a lot: many kinds of content, several languages and editors with different permissions. We plan the structure first, then build a site your editors find easy to use.

We find out who writes what on your current site and who has to approve it. Then we set up the editing screens around those tasks, so each role gets the forms and buttons it needs.

How a Drupal site fits together

A Drupal site has more moving parts than a WordPress one. They are what let it serve many teams and languages, and what make it cost more to build.

The parts of a Drupal site
PartWhat it does
Drupal coreContent types, fields, users, roles, languages, revisions and Views, the tool that builds lists and pages from your content.
Contributed modulesFree add-ons from drupal.org for forms, search, SEO and security. Each one is a separate project with its own maintainers.
Custom modulesCode written for your site, such as an import from another system, a dashboard or a single sign-on bridge.
The themeHow the public site looks, written in Twig templates. Editors work in a separate admin theme.
ConfigurationSettings, from fields to permissions, exported to files and moved from the test site to the live one with the code.
HostingA database, Composer to manage the code and, on busy sites, Redis for caching.

Day to day, editors fill in forms made for each kind of content and build pages from ready-made sections: a text, a gallery, a map, a form.

For those sections we use Paragraphs, a widely used way to build pages on Drupal sites, so editors pick from parts designed for the site instead of laying pages out by hand. Drupal also has Layout Builder in core.

Changes are built and tested on a copy first. Because Drupal exports its settings to files, a new field or permission reaches the live site together with the code, so nobody has to click through the admin twice and hope they matched.

The content model comes first

Events, for example, can get a content type of their own, with fields such as a date and the department that runs them. Enter an event once, and Views, part of core, lists it on the events page and on the department’s page without anyone copying it.

Diagram: an editor writes an event, a second role approves it, and Drupal stores it once with its date and department. Views then lists it on the events page, the department page and the home page, and a mobile app reads it through JSON:API.
One event, entered once and shown in four places

Drupal tags each cached page with the content it shows. When the event changes, every page showing it leaves the cache at once, so nobody sees the old date on one page and the new one on another.

The same event can reach other systems as data. JSON:API, part of Drupal core since version 8.7 in 2019, serves your content types in a standard format once it is switched on, so a mobile app or another of your systems can read them without custom code.

So every Drupal project starts with a content model: the content types, their fields and how they connect, agreed with your team before any design. It is the cheapest moment to get the structure right.

Many owners, one site

Each role gets its own permissions for each kind of content. With content moderation switched on, a page goes from draft to review to published, and only the roles you choose can publish. Every edit is saved as a revision, and any earlier version can be restored.

Drupal can also prepare a bigger change, such as a new section of twenty pages, in a workspace and publish it in one go.

Translation is part of Drupal core, in four modules: one adds languages, and the other three translate the interface, the content and the settings.

Why governments build on Drupal

Not every government site is on Drupal, but several governments build their shared platforms on it.

Part of the reason is cost and control. Drupal is free under the GPL, with no licence to renew, and any Drupal team can take a site over, which leaves the next public tender open to all of them. One Drupal codebase can also run many sites, each with its own content, editors and address, and one round of updates covers them all.

The rest is predictability. Drupal’s Security Team releases core fixes on one Wednesday a month, usually the third, between 16:00 and 22:00 UTC, so an IT department can book the time. Only a highly critical hole that is already being exploited may be fixed outside that window.

Core aims for WCAG 2.2 AA, and we check the rest

The theme and the content decide the rest, so accessibility is checked on every page we build.

Pros and cons of Drupal

Pros

  • Roles, review steps, revisions and translation, all in core
  • Enter an event once and Views lists it on every page that needs it
  • Major upgrades have been updates, not rebuilds
  • A Security Team that warns before critical fixes come out

Cons

  • Costs more to build than WordPress, the better pick for one team
  • Fewer developers to choose from
  • Contributed modules get security cover only if their maintainers opt in

Where Drupal is the wrong choice

For a site one team runs, a shop or an app with rules of its own, we’d point you elsewhere: to WordPress, Shopify or Laravel.

Which platform fits which project
Your projectOur pick
Many teams, sign-off steps and languagesDrupal
A department or project site run by one teamWordPress, simpler to run
An online shopShopify, which runs the hosting and card payments for you
A booking system or portal with rules of its ownLaravel

From content model to launch, in six steps

A Drupal site for many teams takes longer, mostly because of the planning and the content move.

  1. Content model and roles

    We sit down with the people who write, approve and publish. Out of that come the content types, fields, roles and, where you need them, review steps.

  2. Design and sections

    Page templates and the section types editors combine, designed and checked for accessibility.

  3. Build on a copy

    Modules, theme and custom code on a development site, with the configuration in version control. Every change runs a dependency audit, a secret scan and a security scan, and only a person can start a release to the live site.

  4. Migrate and rehearse

    Content comes across from the old site with Drupal’s Migrate tools. We rehearse on a copy and check the results before the final run.

  5. Train and launch

    Before launch we show your team how it all works, every old address redirects to its new one, and the site goes live.

  6. Look after it

    Security updates on a website maintenance plan, and each major Drupal upgrade planned ahead.

Modules we rely on, and how we pick them

These are the contributed modules we use, grouped by the job they do.

The Drupal modules we use, by job
JobWhat we use
EditingGin and Paragraphs for building pages from ready-made sections
FormsWebform, with its own submissions, access rules and exports
Search enginesMetatag for titles and descriptions, Pathauto for readable addresses, Redirect for old ones and Simple XML Sitemap
Search on the siteSearch API
SecurityTwo-factor login (TFA), Password Policy, Admin Audit Trail, Honeypot against spam, Security Kit and ClamAV to scan uploads
Single sign-onOpenID Connect or SAML Auth, so staff log in with the accounts they already have
Deployments and speedConfig Split for settings that differ between test and live, and Redis for caching
Moving contentMigrate Plus and Migrate Tools
CookiesKlaro, which asks before analytics run
DevelopmentComposer for the code, Drush on the command line, DDEV for local copies and GitLab CI for the checks

We prefer modules with a stable release that the Security Team covers.

What to do with the Drupal site you have

What to do with an existing Drupal site, by version
Your site runsWhat to do
Drupal 7Build a new site: on Drupal 11 if you still need its roles, review steps and languages, on WordPress if you don’t.
Drupal 8 or 9Update to Drupal 11 one major version at a time. Versions can’t be skipped.
Drupal 10Update to Drupal 11 now.
Drupal 11Keep it current.

Questions we hear

Can you upgrade our old Drupal site?

Yes. From Drupal 8 onwards, moving up a version is an update rather than a rebuild, and your content and URLs stay as they are. From Drupal 7 it is a move to a new site: on Drupal 11, or on WordPress if the site no longer needs what Drupal does. Either way we plan the move first and clear out what you no longer need.

Is Drupal harder for editors than WordPress?

Out of the box, it can be. We set up the editing screens around your team’s tasks, so each editor gets plain forms for their kind of content and only the buttons their role allows. Text is written in CKEditor 5, which works much like a word processor.

Can Drupal use our single sign-on?

Yes. With single sign-on through OpenID Connect or SAML, staff log in with the accounts your organisation already runs, and nobody keeps a separate Drupal password. When someone leaves, closing their main account stops them signing in here too.

Is Drupal more expensive than WordPress?

Usually, yes, to build. The cost grows with the number of content types, roles and languages, how much content moves across and how many systems the site connects to, and fewer developers work with Drupal than with WordPress. To run, it needs Composer and regular updates, which our maintenance plan covers.

Is Drupal secure?

Drupal’s core is looked after by its Security Team, which publishes fixes and warns in advance when a critical one is coming. Add-on modules are covered only when their maintainers opt in, which is why we check each one before it goes in. We run core and module updates on a maintenance plan, with monitoring and backups. We look after your website’s security to reduce the risk of hacking and data leaks.

Is Drupal still worth choosing?

For a site with many editors, several languages and sign-off steps, yes: roles, review steps and translation come with core, and the Security Team announces critical fixes in advance. For a site one team runs, WordPress costs less.