For most teams, a Headless CMS is juuuust a tool. Plug in content, pull it out via an API, and ship it to the frontend. Done.
But for the team at De Voorhoede, DatoCMS goes beyond just a content database. It's a platform they actively extend and shape, because, as they’ve learned, the last 10% of project requirements are always where the real friction lives.
That’s where Victor comes in.
Victor has been with De Voorhoede for over six years, and alongside his colleagues, he’s worked on a long list of DatoCMS powered websites, each with its own quirks and needs. Over time, he realized that many of the missing pieces, those pesky little things that slow down editors or force developers into unnecessary workarounds, could be solved not by changing the CMS itself, but by building on top of it.
Plugins were an easy way to make the project just that little bit more special for the client, but also for us.
That’s how Victor became the “plugin guy” at De Voorhoede. He’s now authored or contributed to the majority of the plugins De Voorhoede has released for DatoCMS. And these aren’t just for fancy showcase projects, they’re practical, purpose-built tools that came directly from real-world problems.
The best part?
They ain't even private! They're there for everyone to use.
Why Plugins?
What Victor and his team love about DatoCMS is how cleanly it separates developer needs from editor needs. On one hand, developers can model content exactly how they want, structured, modular, API-driven, you know, all the things a Headless CMS is supposed to do. On the other, editors get a straightforward, user-friendly UI that doesn’t require technical knowledge.
That clean split is why De Voorhoede uses DatoCMS on many of their projects. But that same flexibility also means that the core product can’t possibly cover every niche requirement (I mean we're pretty open about how we don't throw in too many bells and whistles to make things overdone). So when specific client needs arise, or when small frustrations repeat across projects, plugins are the natural solution.
For Victor, plugin development started small, literally copying some CSS and button styles from DatoCMS to make an internal tool look native. But the more projects they delivered, the clearer it became that they could package these small fixes as proper plugins. Not just to solve the problem once, but to make it easier for other teams facing the same issues.
And not just for their clients.
They started open-sourcing them, contributing back to the DatoCMS community and giving other developers and editors access to the solutions they’d built.
A good plugin, for me, is one clear problem, one clear solution.
But we're not here to talk about alllll of them, this is about Victor and his contributions, so let's stick with that, and dive in to his 3 faves, and not all the ones he's help bring to life.
The JSON Table, Computed Fields, and Translate Fields 👇
The JSON Table
One of the first plugins Victor worked on (and one of the very first in our marketplace) was the JSON Table plugin. Like most of their plugins, it wasn’t born out of a side project or a theoretical use case. It came from a real client need.
The problem was simple but annoying. Several projects involved editors managing key-value data in JSON fields (think translations, settings, or configuration pairs). For devs, a JSON string was fine. For editors, it was a nightmare. The raw JSON view was intimidating, technical, and prone to errors.
I think the JSON Table was one of the first plugins made for DatoCMS when there weren’t really any plugins yet.
Victor and his team realized that what editors needed wasn’t raw data. They needed a clear, simple table view where they could see and edit key-value pairs without worrying about all the messy JSON syntax.
So they built it.
The JSON Table plugin turns a standard JSON field in DatoCMS into an interactive table. Editors can easily add, edit, and remove key-value pairs without touching any code. It’s visually clean, intuitive, and editor-friendly. No more explaining how JSON works to non-technical users. No more copy-pasting curly braces and worrying about missing commas.
It immediately made their clients' content management smoother. But they also knew this wasn’t a niche problem. So they open-sourced the plugin, making it available to anyone using DatoCMS.
Over time, the plugin evolved. As the DatoCMS plugin system matured, so did the JSON Table. It moved from hacky beginnings, to a proper, well-documented, community-supported tool. Today, it’s one of the more widely used plugins in the ecosystem, live in 750+ projects, precisely because it solves such a common problem so well.
Check out the JSON Table plugin on the DatoCMS marketplace →
Computed Fields
The next major plugin Victor worked on was Computed Fields. And like the JSON Table, it came from repeated frustration.
If you're unfamiliar with the approach, Computed fields are inspired by computed values and props that you see a lot in frameworks. Somewhere some values change, and the subsequent computed value changes because of that. This is nifty given how often the use case might arise for a variety of reasons given that developers and editors often needed to generate field values based on other fields.
A classic example from Victor's own experience? Combining a date and title field to create a unique page title. Sometimes it was about generating slugs. Other times it was about creating internal IDs or labels. You get the idea.
The problem was that, traditionally, this kind of logic lived outside the CMS. You’d write a transformation function in your frontend code or in your backend API layer. That worked, but it also meant editors had no visibility or control over how those values were generated. And worse, small content model tweaks often meant dev involvement.
Victor wanted to bring that logic inside DatoCMS, so editors could see and control what was happening without needing a developer.
The Computed Fields plugin does exactly that. It allows editors (or developers setting up the CMS) to define small functions that generate a field value based on other fields in the same record. It’s flexible enough to handle simple concatenation but powerful enough to pull in data from related models, combine images, or even generate dynamic content snippets.
Computed Fields is made to do anything you like. You can even pull in content from other models or combine fields.
For Victor, the flexibility is the point. Computed Fields is designed to be as broad as possible. It’s a little engine inside DatoCMS that lets you wire up content logic without leaving the CMS.
One of the more advanced use cases the team implemented involved pulling in data from related models, using images and content from one model to generate a field in another. But the real power of Computed Fields is how open-ended it is. Editors and developers are constantly coming up with new ways to use it.
Talking about it, we keep coming up with new ideas for Computed Fields—that’s why we built it the way we did.
The plugin is a toolkit, not a rulebook.
Victor likes it that way.
And so do we.
And so do you, evidently, given how it's live in over 1,200 projects!
Check out the Computed Fields plugin on the DatoCMS marketplace →
Translate Fields
And thirdly, of all the plugins Victor worked on, Translate Fields is probably the most complex.
Anyone who’s worked with multilingual content knows how tedious and repetitive translation workflows can be. Copying and pasting content between languages, managing consistency, and avoiding human error, it's a chooooore.
Victor and his team had clients who needed to speed this process up. So they built Translate Fields, a plugin that integrates translation services directly into DatoCMS. Editors can click a button to auto-translate specific fields, cutting down hours of manual work. The sweet bit? Works on modular content and blocks too!
With the Translate Fields plugin, editors can translate entire fields with one click. It’s easy to use, but hard to build.
The technical challenge wasn’t small. DatoCMS’s content structure is modular and flexible. Fields can be nested, relational, or part of complex models. Figuring out which fields needed to be translated, which ones to skip (like images), and how to handle different content types was tricky. Victor ended up writing a whole system to parse models and apply translations intelligently 🤯
The plugin supports multiple translation services, including DeepL and OpenAI’s APIs. Editors can choose which service to use based on their language needs and budget. The plugin doesn’t claim to deliver perfect translations, there’s still a place for human review, but it removes a huge chunk of the manual effort.
How does it perform in real life? Well, its no surprise that it's also one of THE most popular plugins, live in almost 500 projects at the time of writing this.
Check out the Translate Fields plugin on the DatoCMS marketplace →
Why OSS and what's next?
Releasing these plugins to the community wasn’t a purely altruistic decision. For Victor and De Voorhoede, it made sense. If they’d already solved a problem, why not share the solution? Why keep it hidden away in just a few client projects?
But OSSing things are and aren't free. It comes with overheads - pull requests, bug reports, questions, feature requests. For a while, Victor was the only person maintaining the plugins, which meant that when project work got busy, plugin maintenance often had to wait.
Maintaining open source plugins is hard. There were months where I couldn’t work on them and the issues kept piling up.
They’ve since expanded plugin development across the team. Other developers now contribute to plugin maintenance and development, spreading the load and ensuring the plugins stay up to date.
There’s also an ongoing tension between keeping plugins simple and adding every requested feature. Many plugins started life as client-specific solutions, so opening them up for public use raised questions. Should they make the plugins more flexible and broad, at the cost of complexity? Or keep them focused on one clear problem?
For Victor, the answer is somewhere in the middle. The best plugins are opinionated enough to be useful out of the box, but flexible enough to adapt to different workflows.
And that's how they feel about things going ahead too.
Recently, the team released a phone number plugin that validates and parses phone numbers, returning metadata like country codes and validation status. They’re also working on a plugin for adding custom styling to structured text fields, so editors can preview content formatting directly inside DatoCMS.