Product Updates

DatoCMS changelog for new features and general improvements
Introducing Autogeneration of Migration Scripts
November 2nd, 2022

Our CLI just became a lot smarter, and can now automatically generate a migration script from the differences between two environments!

Read the complete announcement in our Blog.

UI Improvement
Batch insertion of locales into a record
November 1st, 2022

Within a record, you can now add — and remove — multiple locales at once! Simply select all the locales you are interested in and press the relevant button:

This small change, along with the ability to automatically copy content from the currently selected language, greatly reduces editing time in projects with dozens of locales.

UI Improvement
Permanent URLs for sandbox environments
October 28th, 2022

When you enter inside a sandbox environment, the URL of the administrative interface now changes to become the following:


This allows you to share a link to a particular record/entity contained in a sandbox environment without confusion to your team members!

Content Management API
Breaking change in Workflows API
October 3rd, 2022

Starting October 10th, a couple of changes will be made to the CMA endpoints related to Workflows.

Workflows are a feature enabled in our Enterprise plans, so most of our users won't be affected by this change. All accounts actively using Workflows have already been notified via email about this change. If you did not receive an email, then you have nothing to worry about. 😉

Let's see how the workflow entity will change:

// Until October 10th:
"type": "workflow",
"id": "approval_by_editors",
"attributes": {
"name": "Approval by editors",
"stages": [...]
// From October 10th:
"type": "workflow",
"id": "123902133",
"attributes": {
"name": "Approval by editors",
"api_key": "approval_by_editors",
"stages": [...]

As you can see:

  • The old ID is now present in the new payload as attributes.api_key;

  • The ID becomes a regular DatoCMS ID, immutable during environment forks.

Please note that it will still be possible to fetch, update and delete workflows by passing the API key in the URL, although it is suggested to use the ID.

It will be required to pass the new ID instead of the API key every time a workflow is referenced in another entity relationship (ie. when creating/updating a Model) and inside roles permission rules.

Content Management APIUI Improvement
More blocks per record
September 29th, 2022

We have recently increased to everybody the maximum number of blocks you can have in a record. The limit have been increased by 50%, from 400 to 600 blocks per record.

This upgrade has been applied as the new minimum to everyone, old and new users.

If you need more blocks for a special use case, please reach out at

The limit seems high enough, but if you start building complex nested structures that are also translated you can quickly reach the limit. Unfortunately it's not a pricing issue but it's more of a technical limit as we need to run validations on all the new blocks that have been added. To avoid timeouts and long waits on the user's side we have added this limit, but if it's a blocker for you be in touch and we can test higher limits together.

New Contentful importer
September 21st, 2022

Closely following the release of the new CLI, we also released a new Contentful importer. You can install it as a CLI plugin, it provides faster import times and covers a number of new edge cases that the previous importer could not handle.

For all the information, take a look at the new documentation.

NewContent Management API
Immutable IDs during environment fork and site duplication
September 20th, 2022

Until now, when forking an environment (or duplicating a project from the dashboard), resources under the newly created environment were assigned new IDs. This included models, fields, fieldsets, records, blocks, menu items, plugins, filters and media assets.

Starting from today, every resource will keep their original ID on the forked environment (or duplicated project). For instance, given a model "Blog Post" with ID "12345" in the primary environment, once the environment is forked, a new model "Blog Post" with the same ID "12345" will be present in the new sandbox environment.

We are so excited about this new feature, as it greatly enhances the developer experience. It makes the adoption of an environment-based workflow even easier, as the cloned environment is indistinguishable from the original one. Migrations are simpler to write, as you can safely rely on the IDs to pick resources, and the same applies to any third-party application that communicates with your DatoCMS project.

This change will also allow us to start working on another very requested feature by community: auto-generation of migration scripts by diffing two different environments!

⚠️ PS. Since now IDs are immutable cross-environment, take extra precaution at selecting the right environment when you're ie. deleting any resource via our Content Management API! The same ID is present on multiple environments, so your API call will work even if you're not targeting the environment you had in mind!

NewUI Improvement
Configurable heading levels on Structured Text fields
September 16th, 2022

In the Presentation tab of Structured Text fields, it is now possible to enable only specific heading levels:

This will have the effect of hiding the relative slash commands on the editor (in this case, the Heading 1 option is not present):

For greater convenience, markdown shortcuts for heading levels that are not available will fall back to the nearest available level — that is, if Heading 1 is not available, pressing # will insert a Heading 2 — and tab and shift+tab keyboard shortcuts, which have the effect of decreasing/increasing the heading level, will skip the levels that are not available:

Images API
Transformation parameters are now available for SVG format
September 15th, 2022

We are happy to announce that it is now possible to use all the transformation parameters made available by Imgix on SVG files as well!

It is important to note that as soon as a transformation parameter is added to the URL of an SVG file, Imgix will proceed to rasterize the SVG, and the transformations will be applied to the rasterized version of the image.

By default an SVG file with any transformation parameter will be converted in PNG format, but you can request a different output format with the fm parameter.

Plugin SDK exposes blocks usage information
September 15th, 2022

A small addition to our Plugin SDK: it is now possible to retrieve the number of blocks currently used inside a record via the ctx.blocksAnalysis property.

The information is exposed in every hook related to records editing, namely Field extensions, Sidebar panels, and Form outlets:

import React from 'react';
import ReactDOM from 'react-dom';
import { connect, RenderItemFormOutletCtx } from 'datocms-plugin-sdk';
itemFormOutlets(model, ctx) {
return [{ id: 'myOutlet' }];
renderItemFormOutlet(outletId, ctx) {
const {
blocksAnalysis: {
usage: {
/** Total number of blocks present in form state */
/** Total number of blocks present in non-localized fields */
/** Total number of blocks present in localized fields, per locale */
/** Maximum number of blocks per item */
} = ctx;
// render the outlet here