Product Updates
DatoCMS changelog for new features and general improvements
June 13th, 2018
Query batching
Content Delivery API

We just enabled query batching support to our GraphQL Content Delivery API.

This means you can combine multiple GraphQL operations into a single HTTP request, reducing HTTP overheads. If you use Apollo Client, you can enable batch queries with the apollo-link-batch-http package:

import { ApolloClient } from 'apollo-client';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { BatchHttpLink } from 'apollo-link-batch-http';
const httpLink = new BatchHttpLink({
uri: '',
const authLink = setContext((_, { headers }) => {
return {
headers: {
'Authorization': `Bearer ${process.env.DATO_API_TOKEN}`,
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache(),
export default client;
June 11th, 2018
Released v0.6 of Ruby client
API ClientsContent Management API

We just rolled version 0.6 of our Ruby client!

The big change is that the methods the client makes available are generated at runtime based on the JSON Schema of our CMA. This means any new API endpoint — or changes to existing ones — will instantly be reflected to the client, without the need to upgrade to the latest client version.

We also added a new deserialize_response option to every call, that you can use if you want to retrieve the exact payload the DatoCMS returns:

require "dato"
client ="YOUR-API-KEY")
# `deserialize_response` is true by default:
access_token = client.access_tokens.create(name: "New token", role: "34")
# {
# "id" => "312",
# "hardcoded_type" => nil,
# "name" => "New token",
# "token" => "XXXX",
# "role" => "34"
# }
# if `deserialize_response` is false, this will be the result
access_token = client.access_tokens.create(
{ name: "New token", role: "34" },
deserialize_response: false
# {
# "data": {
# "type": "access_token",
# "id": "312",
# "attributes": {
# "name": "New token",
# "token": "XXXX",
# "hardcoded_type": nil
# },
# "relationships": {
# "role": {
# "data": {
# "type": "role",
# "id": "34"
# }
# }
# }
# }
# }

In our doc pages we also added some examples for the super-handy all_pages option which was already present since v0.3.29:

# if you want to fetch all the pages with just one call:
client.items.all({ "filter[type]" => "44" }, all_pages: true)
June 4th, 2018
Better project transfer flow

We just published some changes to the way DatoCMS manages project transfers between two accounts.

When you transfer a site, the destination account will receive a request that will have to be manually accepted or declined. If the site is on a paying plan, the destination account will have to specify which billing profile will be used from now on to generate invoices.


June 1st, 2018
Combine AND and OR logical expressions in Content Delivery API
Content Delivery API

We just published the ability to combine AND and OR logical expressions in our GraphQL API! You can read more in our Doc page.

In the same page the different filters available for each type of field are now properly documented.

May 24th, 2018
Better documentation for tree-like collections
Docs, Guides and Demos

We just updated our docs to better explain what tree-like collections are and how to use them:

May 24th, 2018
RSS feeds for Product Changelog and Blog

To make it easier to stay up-to-date with the latest development in DatoCMS, we just made available two Atom RSS feeds:

May 23rd, 2018
Fixed "your card's security code is invalid" problem with Mastercards

Someone said to us that it looks like we don't want their money because we're too focused on polishing and adding features to DatoCMS to think about everyday mortal needs.

It's kinda true if you tried to use a Mastercard in the last days! We just fixed a subtle bug in our Dashboard related to cards with a CVC of 3 digits.

Sorry for the inconvenience, we really want your money!

May 22nd, 2018
Content Delivery API released in public
Content Delivery API

The new Content Delivery API, powered by GraphQL, is online at last! You can now use DatoCMS to create public-facing apps of any kind!

Here's the official announcement blog post.

May 22nd, 2018
Status page
Content Delivery APIContent Management API

We just released a new status page to better communicate downtime and system outages to our customers:

(Yes, it's not in HTTPS.. we're having some problems with Let's Encrypt)

May 22nd, 2018
New Dashboard!

We just released a complete redesign of our Account dashboard!

Some of the perks you'll find inside:

  • A completely renewed UI (which we hope you'll like it);
  • A better flow to upgrade plan and change billing information;
  • New project demos (PHP, Rails, Express.JS, React Native);
  • You can now download not only DatoCMS invoices, but also credit notes;
  • If users invited to a DatoCMS project erroneously try to login to the Account dashboard, they will be automatically redirected to their project;

We'll soon release the following much needed changes:

  • Better management of project transfers to a different account (destination accounts will have to manually accept the transfer request);
  • Ability to completely delete your account;