Use Google Sheets as a CMS with Next JS

This is the third part of the series “buying an expired domain”.

Part One: Buying an expired domain

Part Two: Buying an expired domain: learnings on ranking capabilities

If this article is the first of the series you are about to read, here’s a little bit of context. Back in September 2021, after buying an expired domain; our website went live. As it was (and still is) a MVP (Minimum Viable Product), we needed to build things fast. That is why we opted out for this solution.

I wanted to answer the following question: is it possible to generate articles on the go without a CMS?

What I learned:

  • You can hack Google Sheets to use it as a CMS.
  • You get complete freedom regarding content production and modification.
  • It’s perfect for a quick setup and to test things fast.
  • Content updates can be as frequent as you want as there is no need to rebuild your site manually.
  • It’s not possible to add basic HTML tags in your content such as strong tags.

How to setup Google Sheets as a CMS with Next JS?

I won’t go deep into the details as there is already technical literature on the subject.

The part of the SEO setup that is interesting is the following: how to properly structure your spreadsheet?

I did the following for our website:

  • URL path
  • Title
  • Description
  • H1
  • Content
  • Featured image

This is a very basic setup but you could easily consider adding a canonical tag as an additional row if you wish to override it for certain use cases.

Is it scalable?

Long story short: no 🙂

As stated in the first part of this series, we bought an expired domain to run our MVP. I wanted to test how fast the old content could be index again on Google US and if the content was easily accessible for Googlebot (see part 2 for ranking capabilities).

Using this method, you got a quick and robust implementation for your content; without having the need to rebuild your website manually (called Incremental Static Regeneration).

Still, your pages, if not fancy or designed for a particular use case, are full of content but you can’t easily manage your content. You don’t have a clean WYSIWYG editor so it’s a real struggle to get comfortable with this setup if your aim is to produce lots of content and to update it on a regular basis.

Use case alongside Next SEO plugin

We use the Next SEO plugin to easily manage our SEO within the project. It comes with all the setup and flexibility needed to feel comfortable using it.

It then becomes really easy to supercharge your spreadsheet with your default SEO configuration:

import App, { Container } from 'next/app';
import { DefaultSeo } from 'next-seo';

// import your default seo configuration
import SEO from '../next-seo.config';

You can also easily add JSON LD structured data on top of your spreadsheet; such as:

Final thoughts

This setup is the perfect one if you want to:

  • Test things fast.
  • Produce pages with low content.
  • Build an FAQ hub.
  • Keep the content as it is (no frequent updates).

If your plan is to rely on content first to drive traffic to your website, I would suggest opting out for an headless CMS such as Ghost or Strapi.