Directus CMS integration for content management

Editors wait for developers for every edit, and content goes out late. We set up turnkey content management: the editorial team publishes materials itself, without contacting the team. Time to prepare a publication is reduced several times, while roles and access rights remain under control.

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

Why Directus integration breaks at the content stage

Typical situation: content lives in the admin panel, while pages are assembled by a separate layer.

The connection between them is configured once, "to make it work," and then it rests on agreements — the editor does not know which fields actually reach the page, and the developer does not see what changed after the last edit.

This is exactly where the gap between content and frontend shows up. The structure of collections and the way the template reads them are described in two different places: rename a field or change its type — and the value silently goes into the void.

The error does not get logged, the page still renders, but with the previous text, and it can only be noticed by eye.

Next comes manual publication of materials. An edit is made in the database, but the page continues to serve the old variant from cache until someone rebuilds the site manually.

The more sections there are, the longer the chain "editor — developer — deployment," and the more often content on the site lags behind what has been agreed.

Data discrepancies on the site almost always come from the same place. Copies of the same text lie in several sections and in mobile layout, and each is updated according to its own scenario.

As a result, in the main version the specifications are already new, in the catalog they are previous, and on a narrow screen there is a third revision.

Each such CMS integration error costs not so much money as trust: support looks for the cause in the layout, although the source lies in the data schema. We break down how Directus integration is closed — from a single content model to predictable publication.

What Directus integration gives: measurable effect for the team

Directus stands between the editorial team and the site as a single source of content: the structure of materials is described by collections, relations, and access rights, while pages read it directly.

Layout stops being a storage for text — an edit is made once in the database and appears everywhere this data is used.

Publication speed is determined by the length of the path from draft to live page. The editor fills in fields, checks the preview, and moves the entry to "published" status — the developer is not involved.

Editor and reviewer roles are configured at the collection level, so access to sections is granted precisely, and the change history shows who edited what.

Manual operations are reduced where there used to be copying between environments, page rebuilds, and "on-site" edits in the template.

Media and metadata lie next to the material, not in folders on disk, so a whole class of errors goes away: broken links, desynchronized language versions, lost fields during transfer.

Release predictability rests on the content schema: structural changes go through migrations, not through manual edits in the admin panel.

Deployment stops depending on who managed to fix what in the database, content and code rollbacks go independently, and the site receives data in a stable format.

CMS connection options: interface, notifications, synchronization

The connection method determines where caching logic lives and what happens when the CMS is unavailable.

Directus serves content through a programmatic interface and sends event notifications when a record is edited — the choice between options depends on how quickly an edit should appear on the site and what reliability margin is needed in case of a connection break.

Mixing options in one project is normal: fresh materials go through notifications, while sections that change once a quarter are pulled by static export.

It is important that each channel has a fallback path — if the notification handler did not work, the discrepancy is caught up by a scheduled reconciliation.

Option When it fits Limitations
Programmatic interface Dynamic pages, personalized blocks, content changes constantly Response time adds up with the request to the CMS; when it is unavailable, the source returns an error — caching on the site side is needed
Event notifications Catalogs and sections with frequent edits, publication is needed immediately Delivery is not guaranteed: an idempotent handler and catch-up on missed events are required, otherwise some edits remain stuck
Scheduled synchronization A publication delay of a few minutes is acceptable An edit is visible only after the next run; load comes in spikes, and if a run fails, the discrepancy accumulates
Static content export Delivery speed and minimum runtime dependencies are more important than instant publication Publication only through a rebuild, and its time grows with content volume; forms and personal accounts require a separate layer

Practical rule: one primary channel plus one reconciliation. This way publication remains predictable, and an incomplete run of handlers does not turn into a silent loss of content.

Implementation stages: from data schema audit to handover to support

The order of work is structured so that each decision relies on verified data, not assumptions. First we understand how content is organized now and how editors will work with it — this determines the storage schema and the scope of further edits.

  1. Data model audit. We gather entities, relations, and reference lists, mark duplicate fields and places where the structure hinders queries. The result is a data map and a list of bottlenecks that are most costly to leave as they are.
  2. Collection schema design. We lay out entities across Directus collections, define field types and relation rules, and immediately include drafts and publication versions. The editor gets predictable forms instead of free text.
  3. Content migration. We transfer materials while preserving identifiers and attachments, and close old addresses with redirects. We repeat the run until discrepancies between source and destination become zero.
  4. Roles and access rights. We describe author, editor, and administrator roles, restrict fields and sections by areas of responsibility, and check each role with test accounts.
  5. Testing on a database copy. We deploy the full environment and run publication, rollback to a previous version, attachment upload, and section delivery. We find discrepancies before switching, not after.
  6. Acceptance and handover to support. Editors go through typical scenarios on their sections, and we address comments before launch. Then we establish the backup regulation, update procedure, and escalation point.

Configurations, access roles, and regulations: what remains in the project

A project is handed over not as a folder with files, but as a set of artifacts by which the client's team continues to work without us.

In Directus, the content schema is stored as code, access is described explicitly, and publication follows a prescribed route — this is the difference between "works at the contractor's" and "works for you."

  • Collection and field schema — migration files that bring up the content model on a clean environment with one command.
  • CMS configuration: environment settings, connections to file storage and external services, variables for local, test, and production environments.
  • Access policies: a matrix of roles and rights by collections and individual fields — who reads, who edits, who publishes.
  • Data filtering rules: an author sees only their own materials, a regional editor — only their segment of the tree.
  • Publication regulation: material stages, who approves at each step, how an erroneous release is rolled back.
  • CMS documentation for editors: scenarios for typical tasks — a new page, banner replacement, scheduled publication.
  • Documentation for engineers: migration order, integration points, exchange formats, and a list of external services.
  • Backup regulation: frequency of database and user file snapshots, retention period, and restoration verification on a separate environment.

We accept each item based on fact, not description: we deploy the project from scratch on a clean environment, restore from a copy, and go through the editor's path from draft to publication.

Case: content migration and launch of the editorial process

A corporate site in four languages with a catalog and a materials section: edits went through the developer. Marketing queued a task, a release came out once a week, and an urgent text fix waited up to two days.

A separate class of errors involved discrepancies between language versions: an edit was made in one, and the others were forgotten.

What was changed

Content and structure were moved to Directus, preserving page addresses and setting up redirects from the old ones.

The schema was assembled by subject collections — pages, materials, authors, product categories — with relations and required fields: an empty title or a link to a nonexistent author simply does not save.

Roles were separated — an editor sees only their language, the release manager publishes; the developer was removed from edits. Draft and published state live in parallel, and preview opens via a private link before the material is released.

Metrics before and after

Indicator Before After
Text edit time 1-2 days 20-30 minutes
Edits through the developer about 80% a few
Discrepancies between languages reproduced regularly do not reproduce
Release of the materials section once a week on the day of readiness

A month later, the editorial team manages content on its own: the developer gets involved with new block types, not text.

What to do if the CMS is already deployed and populated?

A deployed and populated Directus is already an asset: collections are described, editors add content, roles are configured. The problem is usually different — the site is still assembled from the old source, while the content management system lives a separate life.

A full migration in such a situation is not needed and is often harmful: refinement goes on top of the existing instance, without export and re-population.

We start with an inventory of the schema: which collections are actually being filled, which fields are required, how relations and record versions are arranged.

This shows whether the current data model is sufficient for the site pages or additional fields and computed values are needed. We do not transfer content over — the database remains the single source of truth.

The second layer is access and publication. A separate service role is created for the site with permission only to read published records, so the storefront cannot accidentally change or delete materials.

Status logic remains in the content management system: draft, review, publication, scheduled release by time.

Next is the connection to the site: the build reads data through the programmatic interface, and the publication event triggers a page rebuild and cache reset.

If some fields are not yet brought to the required form, we set up temporary mapping and refine it in iterations, without stopping the editors' work.

We do not touch the collection structure, edit history, or editor accounts — they continue to work as before. Rollback is also predictable: we return the site to the previous source, because the data in the system has not changed.

Technical concerns: access rights, cache, data migration

Access rights in Directus are described at the level of collections, fields, and record filtering rules, not only in the interface.

The news editor role sees only its collection and cannot open drafts of the neighboring department; the contractor role is limited by a filter on record ownership.

Read rights through the API are granted separately from panel rights — the storefront can be opened without opening the admin panel.

Caching and data transfer are addressed before the start.

Content is served from cache or a static build, so under peak load pages do not wait for a response from the management system, and its unavailability does not bring down the site: the visitor receives the last valid version.

During migration, record identifiers, relations between collections, and media files are preserved, and import is idempotent — a repeated run does not create duplicates.

An editor accidentally deletes someone else's section — how is this closed?

The role receives only the needed collections and fields, deletion is disabled, and every edit is written to the version log. A record can be compared with the previous state and restored — the edit is not lost and does not overwrite someone else's work.

What will a visitor see if the content management system is unavailable?

Pages are served from the cache of the last valid build, so the site remains available. After recovery, changes are applied automatically, and manual rebuild is not required.

How is content transferred from the current system without losing relations?

First the collection structure is exported, then records and media files while preserving identifiers. On the test environment, relations and nested blocks are checked by count and selectively by fields — the transfer can be repeated without deleting already accepted data.

Let's discuss the task: what data is needed for an estimate and plan

For the integration project estimate to be substantive and the work plan feasible, we need inputs on the project. List what you already know — we will clarify the rest ourselves: some questions are resolved in one conversation.

  • Current content management schema: where materials are stored now (files, tables, an editor on the site), how they are published, and who makes edits.
  • Content structure and volume: what types of materials, how many language versions, whether there are relations between entities and media files.
  • Roles and rights: who edits, who approves, whether restrictions by sections and fields are needed, whether edit history and return to a previous version are important.
  • Delivery channels: site, app, separate services — what should receive data and in what form.
  • Hosting and security requirements: where data may be stored, what regulations exist for access and backup.
  • Timeline constraints: hard launch dates, seasonal peaks, dependence on other work.
  • Acceptance criteria: what we consider the result — publication speed, the share of materials updated without a developer, test coverage.

Based on these inputs, we will return with an estimate and work plan: stages, team composition, control points, and data transfer order. Describe the task in free form — that is enough to start the review.

Our competencies:

Latest works

  • B2B ADVANCE company website development
    B2B ADVANCE company website development
    1542
  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Website development for BELFINGROUP
    Website development for BELFINGROUP
    1081
  • 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
  • Website development for FIXPER company
    Website development for FIXPER company
    1060