Although DatoCMS already offers a very wide range of options and configurations, with plugins it is possible to take a further leap forward and integrate third-party services with the DatoCMS platform, or build custom integrations tailored specifically to your business.
Technically speaking, plugins are small web applications that are run in a sandboxed <iframe>
and interact with the main DatoCMS app through the Plugin SDK. They can be implemented with basic HTML and JavaScript, or using more advanced client-side frameworks such as React, Angular or Vue.
If you're using React, you can take advantage of the datocms-react-ui
package that provides a set of ready-to-use components that are consistent with the UI of the main DatoCMS application.
A huge variety of enhancements to the DatoCMS web app are possible. From small field editor improvements to deeply integrated full-page applications, plugins makes customizing the DatoCMS interface effortless.
Some common use cases are:
Adding custom field editors to improve the editor experience;
Managing content versions for running A/B tests on structured content using personalization tools;
Tailor the default entry editor to suit your specific needs;
Seamlessly integrate DatoCMS with third-party software and services;
For some real-world examples, you can take a look at our Marketplace, which already offers 100+ open-source plugins.
The way in which plugins modify the default DatoCMS interface is through the concept of hooks.
The SDK provides a set of locations where plugins can intervene by adding functionality (ie. custom pages, sidebar panels, etc.), and for each of these locations a set of hooks are provided.
Hooks serve two main purposes:
declare the plugin intentions (ie. "I want to add a tab in the top navigation bar of DatoCMS that points to a custom page X")
render the content for the iframe
associated to the declared custom locations (ie. "when the user enters custom page X, let me render my stuff").
You can read in detail about all the hooks and locations provided in the following sections of the guide.
As we'll learn in the following sections, plugins can either be private, or publicly released into the Marketplace.
A private plugin is built by you for your specific organization's needs to optimize your organization's editorial experience. It is fully under your control and not accessible by other organizations.
If you think a plugin you've made would be useful to other community members, then we strongly encourage its release in our public Marketplace. Everyone can contribute new plugins to the marketplace by releasing them as NPM packages.