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
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 three 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")
intercept specific events happening on the interface, and execute custom code, or change the way the regular interface behaves.
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.
Check out this tutorial on how to make the most about existing plugins in the Marketplace, or build your own: