Skip to content



Sanity SEO done right: Open Graph, JSON-LD, fallbacks

Duration: 6:35

A quick walkthrough of how we handle SEO inside every Sanity project we build - the exact schema patterns, fallback logic, and Open Graph setup we use as a default baseline on Turbostart Sanity.

Frequently asked questions

Does Sanity have built-in SEO support?
Sanity is very unopinionated by design, which means it doesn't come with a fixed SEO setup out of the box. That's actually a feature, not a bug — it lets you build SEO to suit any project, whether that's a simple blog or a full e-commerce system. We have a Learn article that walks through how to opinionate your SEO, and our TurboArt Sanity starter is a great practical reference for how we do it on every project.
What is the baseline SEO setup you recommend for every Sanity project?
Our de facto baseline includes a title and description field on every document type, which act as fallbacks, and then a dedicated SEO tab with a meta title and meta description that override those fallbacks when set. We also add open graph title, open graph description, and an open graph image. This gives you a consistent editing experience across page builder pages, blogs, and any other document type.
Why have a separate SEO title and description if there's already a title and description?
The top-level title and description are always a fallback, so every page has something sensible in place even if no one fills in the SEO tab. The SEO-specific fields let editors fine-tune exactly what appears in search results and social previews without changing the page's actual content fields. It's a clean separation that keeps things flexible without leaving anything blank.
How do you handle open graph and social sharing metadata?
We add open graph title and open graph description as a baseline, plus a separate open graph image field. You can go even more granular and split this out per platform — Twitter, Facebook, LinkedIn each support their own tags — but the open graph baseline is what we'd recommend as a starting point for most projects.
What is your approach to JSON-LD structured data in Sanity?
We strongly prefer set-and-forget JSON-LD, meaning we automatically generate it from data that's already in Sanity rather than asking editors to fill in extra fields. For example, if a blog post already has authors assigned to it, we just pull those authors into the JSON-LD automatically. With AI it's pretty quick to wire this up, and it means the structured data stays accurate without anyone having to think about it.
What are the 'no index' and 'hide from lists' SEO fields for?
The no index field is useful for things like pay-per-click landing pages where you want to drive specific traffic but keep the page out of search results. Hide from lists is a separate toggle because sometimes you want a post excluded from sitewide blog listings even if it is indexed, or vice versa. Having both as explicit fields means you can filter them cleanly in your Groq queries — for example, fetch all blogs except those hidden from lists.
Where can I find your SEO setup to use it as a reference?
You can find the TurboArt Sanity starter on the Sanity Exchange or on GitHub. The two files worth paying close attention to are the Query file, which shows how we handle our Groq queries, and the SEO fields file, which covers the SEO title, description, image, no index, and hide from lists fields. You can point your developer straight at the repo and they should be able to get up and running quickly.


Continue watching

Get in touch

Tell us what you're building. We reply within one working day — Jono or someone on the team picks up every message personally.