Custom & headless CMS
Some links on this page are affiliate links: we may earn a commission at no extra cost to you. Our approach
A custom CMS answers a concrete problem: your site publishes content that no longer fits a standard CMS. Catalogues with variants, articles linked to products, multi-brand sites, approval workflows or distribution to a mobile app all require structuring content, not just choosing a theme. ## What "custom" and "headless" mean "Custom" refers to a system developed for your case. "Headless" refers to a CMS that separates content from display. The two meet: most SME projects do not need full development but an existing headless CMS (Strapi, Sanity, Directus) whose content is modelled. This approach often divides the cost by three or four compared with full development, while keeping the flexibility of a custom model. ## The real cost: modelling The most underestimated budget line is designing the content model. How many content types? Which fields are mandatory? How do you link a case study to a sector and a city? How many languages? This workshop work determines everything else: the editing interface, development time and ease of use for teams. A CMS that forces an editor to call a developer to publish a page has missed its goal. ## When to prefer a simpler solution If your need comes down to publishing articles and a few pages, WordPress with custom fields will do the job very well. Custom builds become relevant when complexity is real: several distribution channels, structured content with strong relationships, high performance requirements, or a need to integrate the site with an ERP or an existing application.When this guide is for you
- WordPress or a standard theme no longer covers your needs (related content, approval workflows, multi-brand)
- You publish on several channels (site, mobile app, screens, partners) and want a single content source
- Your editorial team loses time working around the limits of the existing CMS
- You need strict control of roles, rights and publication traceability
- You are preparing a trilingual French, English and Arabic site with identical structured content
Step by step
- Mapping content and channels — List content types (articles, product pages, case studies, pages), their relationships, languages and the channels that consume them. This work determines the data model, the most costly part of the project.
- Choosing the architecture — Decide between a custom CMS (fully developed), a ready-made headless CMS (Strapi, Sanity, Contentful, Directus) and WordPress with custom fields. Most SME projects gain from starting with an existing headless CMS rather than building everything.
- Modelling and administration — Create content types, fields, validations and user roles. Keep the interface simple: a badly designed model costs teams hours every year.
- Front-end development and integrations — Connect the CMS to the site (often Astro, Next.js or Nuxt via API), to the mobile app or third-party channels, and set up preview, search and redirects.
- Acceptance, training and handover — Test editing journeys, train teams to create and publish without a developer, document the data model and prepare API hosting, backups and updates.
What it costs (in MAD)
| Service | Indicative price | Good to know |
|---|---|---|
| Content modelling workshop | 8,000 – 25,000 MAD (≈ 730 – 2,300 €) | Deliverable: site map, content types and field schema |
| Ready-made headless CMS (Strapi, Sanity, Directus) | 25,000 – 80,000 MAD (≈ 2,300 – 7,300 €) | Installation, modelling, roles and front-end connection |
| Fully custom CMS | 80,000 – 250,000 MAD (≈ 7,300 – 23,000 €) | Justified only if your business demands unique editorial logic |
| Cloud headless CMS subscription | 0 – 1,500 MAD / month (≈ 0 – 140 €) | Limited free plans; cost rises with volume and users |
| Maintenance and enhancements | 2,000 – 8,000 MAD / month (≈ 180 – 730 €) | Security updates, backups, small model changes |
| Migration from WordPress or Joomla | 15,000 – 50,000 MAD (≈ 1,400 – 4,500 €) | Content, media and 301 redirects from old URLs |
Indicative ranges for the Moroccan market in 2026, excluding tax. Prices vary with scope and provider.
Mistakes to avoid
- Building a fully custom CMS without comparing with an existing headless one: multiplied cost for often equivalent results
- Designing the data model in a rush: a poor schema affects every page and is expensive to fix
- Forgetting preview mode: editors publish blind and errors reach production
- Not planning 301 redirects during migration: existing SEO collapses within weeks
- Leaving the API without strict authentication: a poorly protected public API exposes all your content
Frequently asked questions
What is the difference between a classic and a headless CMS?
A classic CMS manages both content and site display (like WordPress). A headless CMS only stores content and distributes it via an API: the site, the app or a screen can each consume it their own way. You gain in performance and multi-channel capability, you lose in installation simplicity.
Do I need a headless CMS for a simple brochure site?
No. For a presentation site with a small team, well-configured WordPress or a static site with a lightweight editor is enough. Headless is justified when you have several channels, complex structured content or high performance requirements.
How long does a custom CMS project take?
A headless CMS connected to a brochure site takes 3 to 6 weeks. A fully custom CMS with a complex content model and several channels takes rather 2 to 4 months.
Can a headless CMS be hosted in Morocco?
Yes. Strapi and Directus can be self-hosted on a Moroccan or international VPS. SaaS offers (Sanity, Contentful) are hosted abroad: check data storage terms if you process personal information.
What happens to my SEO after moving to a headless CMS?
It can improve thanks to faster pages and cleaner code, provided you keep the same URLs or redirect with 301s, keep title and description tags, and regenerate the sitemap in Search Console.
Updated on
Related guides
Version française: /services/developpement-web/cms-sur-mesure/ · AR · NL