Development and implementation of Wagtail CMS for editorial projects

Editorial projects break down when content processes hit a universal CMS. We develop and implement Wagtail turnkey: we design the content model, permissions, and integrations for your editorial process. We reduce time to publish materials and eliminate manual operations.

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Frequently Asked Questions

Wagtail development: where editorial projects break

Wagtail development almost always starts the same way: the editorial platform comes up quickly, editors are happy, and content publishing flows steadily. Problems begin later — when the archive passes tens of thousands of pages, and not one but five editors work on the site. This is exactly where bottlenecks appear that are invisible at the start.

The first typical failure is publishing conflicts. Two editors edit the same page, the second saves over the first, and part of the work is silently lost.

The cause is not the people, but the fact that the draft and the published version live in a single record without separation or locking. The fix is explicit revision separation and a warning about concurrent editing.

The second failure is degraded output as the archive grows. While there are hundreds of pages, everything is fast; at tens of thousands, listings and search begin to slow down because queries pull entire relationships and are not cached.

What helps here is rebuilding the relationship structure, indexes for specific queries, and caching at the page-fragment level.

The third and most expensive failure is manual edits directly in production. Someone fixed a template on the server, forgot to move it into the repository, and the next publication overwrites the fix. We break down how this is closed off with release discipline and environment separation.

What a managed editorial platform delivers

Separating content from presentation is not an abstract architectural dogma, but a direct lever for editorial speed.

A piece of content is stored as a structured entity with fields, rather than as a "page with markup," so an editor fills in meaningful blocks instead of wrestling with markup.

Publishing stops depending on a developer: the typical scenario — approve a draft, set a date, and hit "publish" — takes minutes instead of days waiting for template edits.

Editorial automation is built on checks that run at the point of saving, not after a piece goes live.

The schema validates required fields, headline and description lengths, the correctness of internal links, and the presence of alt text on images — invalid content physically cannot make it into publication.

This eliminates an entire class of manual edits: an editor does not return to a piece a week later to fix metadata, and an SEO specialist does not have to proofread the output by hand.

The resilience of the output is ensured by caching at several levels. Finished pages are served from cache, and invalidation is tied to the publication event of a specific entity, not to a full site rebuild.

As traffic grows or a single piece spikes, response time remains predictable, and the editorial team keeps publishing — read load does not block writes.

A separate effect is structural predictability for search engines. Unified metadata templates, automatic sitemaps, and correct canonical URLs are generated by the platform rather than assembled by hand for each page.

Taken together, this gives the editorial team a measurable result: the share of content published without developer involvement grows, while the number of post-publication edits falls.

Content delivery modes: comparing approaches

Wagtail can deliver content in three fundamentally different ways, and the choice between them determines how the editorial process will be structured and how much effort will go into refinements. Below are the options that teams realistically choose between at the start of a project.

Option When it fits Limitations
Classic Wagtail admin Content and markup live on the same domain, editors work only in the browser The frontend is tightly coupled to templates, making it hard to reuse content in a mobile app or on a partner site
Headless delivery (API) Content is needed by several channels: website, app, landing pages, partner storefronts The built-in "as on the site" preview is lost — it has to be built separately for each channel
Hybrid: server-side rendering + API for individual blocks The main site is served as ready-made pages, while part of the content goes to external systems Requires discipline: you need to agree in advance which models are available via the API and which remain internal

The key trade-off is preview.

In the classic setup, the editor sees a draft exactly as a visitor will see it, and this greatly reduces the number of edits "after publication." In headless mode, preview has to be rebuilt from scratch: a preview page pulls the draft via the API and is rendered by the same frontend as production.

In practice, a hybrid is most often chosen: the editorial process stays familiar, while integrations with external systems are handled on a case-by-case basis. We analyze your publishing scenario and propose a scheme that won't require rewriting models when adding a new channel.

Implementation stages: from audit to handover

Implementing Wagtail is not "install a CMS and upload content," but a project to design the editorial team's data model. We run it in fixed stages so that at every step the client has a verifiable result, not "almost done."

  1. Platform audit. We analyze the current site: URL structure, page types, content volume, relationships between entities, external integrations, and bottlenecks. The output is a map of sections and a list of what is migrated as is, what is rewritten, and what is retired. This removes the main risk: transferring chaos into a new system.
  2. Content model design. We describe page types, blocks, fields, and the rules for their reuse. The editorial team gets a clear structure: where a news item goes, where a longread goes, where a landing page goes, and which blocks can be inserted into any piece of content. This is also where we design roles and permissions: who publishes, who edits, who approves.
  3. CMS setup. We spin up Wagtail on the current branch, configure the admin panel for the editorial team's real scenarios, connect search, media storage, drafts, and scheduled publishing. Separately, we handle content migration from the old system — preserving URLs and setting up redirects.
  4. Verification. We run through the editorial team's scenarios: creation, approval, publishing, version rollback, working with images. We check performance under load and the correctness of redirects. We catch errors before launch, not after.
  5. Acceptance and handover. We show the client a checklist for each item, train the editorial team on live content, and hand over access credentials, documentation, and instructions. After launch, we stay on for support — fixes, new blocks, updates.

Each stage ends with an artifact: a content map, a page type schema, a configured staging environment, a verification report, a documentation set. This way the project moves forward predictably, and the editorial team works from day one in a system it understands.

Content model, permissions and integrations

The content model in Wagtail is described by code, not by settings in the admin panel: page types, fields, blocks and the relationships between them are fixed in the repository and go through review like ordinary code.

This means that the structure of a section cannot be "accidentally broken" from the interface, and changes reach production through the same process as the rest of development.

Editor permissions are built on roles and groups: who creates drafts, who approves, who publishes, who sees only their own section.

Publication rules are set explicitly — mandatory review before release, scheduled delayed publishing, versioning and rollback to a previous revision.

  • Page type schemas: fields, blocks, repeatable sections, "parent — child" relationships and nesting restrictions.
  • Editor roles: access groups, separation by section, rights to create, approve and publish.
  • Publication rules: mandatory checks, delayed publishing, versions and rollback, change log for each item.
  • Integrations: exchange with external systems via API, reference data synchronization, receiving data from related services.
  • Media library: a single repository for images and documents with automatic processing for the required output formats.
  • Search: content indexing and results taking into account section structure and access rights.
  • Localization: multilingual page versions with independent editing and shared media.
  • Content migration: transferring existing materials while preserving URLs and setting up redirects.

Each integration is described by a contract: what comes in, in what form, and what happens if the external system fails. If a related service is unavailable, the editor sees a clear state rather than a "frozen" page, and can continue working with the saved version.

The delivery includes the schemas themselves, the configuration of roles and permissions, publication rules, integration descriptions and instructions for editors.

All of this is handed over with documentation and a walkthrough — the client's team then manages the content independently, without contacting us for every edit.

Case: editorial platform for a media project

An editorial team of 40+ authors published materials through a custom-built admin panel: drafts, approvals, and layout lived in different systems, and moving text into the template was done by hand.

Releasing an issue took up to two hours, and almost every major publication ended with edits being made on the live page. During peak loads — the morning news edition, breaking topics — delivery sagged because the cache was flushed entirely on any change.

We migrated the project to Wagtail: editorial content began to be described by page models rather than free-form fields, so the structure of a material, the linking of authors, rubrics, and related publications is validated at the schema level rather than by a proofreader's eye.

Drafts, approvals, and scheduled publishing now run as a single flow inside the admin panel, and cache rebuilding affects only the changed branch of the page tree.

What changed in the metrics

Metric Before After
Time from finished text to publication up to 2 hours 10–15 minutes
Manual operations per material 6–8 1–2
Share of edits after publication regular isolated cases
Behavior under peak load sagging delivery stable serving from cache

Access control was addressed separately: the roles of editor, author, and release manager are separated, the revision history is stored for each page, and rolling back to a previous version takes a single step.

Six months after launch, the editorial team roughly doubled its publishing frequency with the same staff — the platform was no longer the bottleneck.

How is Wagtail different from universal CMSs?

Universal CMSs build a page as a set of blocks that an editor assembles manually: the builder is flexible, but the structure of each section lives in the database, not in code.

Wagtail takes the opposite approach — the content model is described in code as a tree of pages, and the editor works within predefined types.

This is the key architectural difference: in universal systems, the rendering logic is smeared across templates and settings, while in Wagtail it is fixed in the model and therefore predictable.

The editorial model is structured differently as well.

Wagtail has drafts, moderation, scheduled publishing, and page-level versioning — the editor sees what will go live and when, rather than "saved and hoping." Permissions are assigned by roles and sections of the tree: an author edits their own section without touching the rest of the site.

In universal CMSs, this is usually an add-on built with plugins, and when the core is updated, it has to be fixed.

Predictable rendering is a direct consequence. URL structure, breadcrumbs, the sitemap, and search markup are derived from the page tree rather than assembled manually. Fewer manual connections mean fewer broken links and duplicates after sections are reorganized.

The cost of maintenance over the long run is determined by where the logic lives. The plugin ecosystem of universal CMSs saves money at the start, but every core update entails checking the compatibility of dozens of extensions.

In Wagtail, the core and the project's models are updated together, and there are fewer third-party dependencies — updates are more predictable, and maintenance comes down to evolving the models rather than fixing someone else's code.

Common technical concerns

Wagtail is a framework on top of Django, so compatibility and migration here are handled at the level of the Python ecosystem, rather than by rewriting content from scratch.

Below are the four concerns that most often come up with clients at the evaluation stage, and how we address them from an engineering standpoint.

How is existing content migrated from another CMS?

We migrate the structure via a converter: pages, the section tree, media files, and metadata are mapped onto Wagtail models through StreamField and the Page hierarchy.

First we run the migration on a copy of the database, verify the page count, nesting, and redirects, and only after a control check do we switch over the production domain. We cover old URLs with a map of 301 redirects so as not to lose accumulated search visibility.

What about compatibility and version updates?

Wagtail evolves in the same branch as Django, so updates are predictable: major releases support current LTS versions of Python and Django, and deprecated APIs are flagged in advance.

We pin dependencies in a lock file and update step by step, running tests at every step — this rules out a "jump" across several versions, which is usually where a project breaks.

How secure are editorial permissions and publishing?

Wagtail is built around a role-based model from the start: view, edit, and publish permissions are separated by groups, and drafts do not become publicly available until approved.

Additionally, we secure the admin panel with two-factor authentication, restrict network access, and keep an audit log of editors' actions — who published a page and when is always visible.

How long does the project last and how is support structured?

Support is built around a schedule: security updates, backups with restore verification, monitoring of availability and response time.

We separately keep an incident log and a rollback plan to the previous release — if an update breaks publishing, we return to a working version in minutes, not days.

If you still have questions about your current platform — describe the task, and we will come back with an estimate and a migration plan.

Let's discuss your task

To make the conversation substantive rather than "tell us what your project is about," it helps to gather the inputs in advance.

An estimate for a Wagtail project is built on the content structure, editorial roles, and integrations — without this data, any figure will be a "from and to" range that gets rewritten later.

What's worth preparing before the discussion:

  • A list of page types and blocks: which entities exist now, which will appear, where content is reused across sections.
  • A role scheme: who writes, who approves, who publishes, whether drafts, scheduled publishing, and revision history are needed.
  • A list of integrations: CRM, search, analytics, payments, external APIs — indicating what already works and what is only planned.
  • The current platform: the CMS the project runs on, the volume of content, the URL structure, and redirect requirements for the migration.
  • Language and region requirements, if the content is multilingual: how many locales, who translates, how page versions are linked.
  • Constraints on timelines and load: peak publishing periods, expected traffic, availability requirements.

Based on these inputs, we estimate the scope: data models and StreamField blocks, access rights in the admin, content migration, and the amount of frontend work.

Then we come back with a plan — in stages, with a rollout order and what can be launched earlier without waiting for the full scope.

If some of the data hasn't been gathered yet, that's not a blocker: we'll go over it on a call, record the assumptions, and refine them as we go. Describe the task in free form, attach whatever you have — and we'll come back with an estimate and a launch plan.

Our competencies:

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1368
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1139
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1152
  • Website development for SBH Partners
    Website development for SBH Partners
    1231
  • Website development for Red Pear
    Website development for Red Pear
    641