MigrateToAstro

Modeling content in Sanity for a marketing site

A Sanity schema is a product decision written in TypeScript. Get it right and marketing ships without a developer. Get it wrong and every new page is a branch, which is the outcome nobody signs up for and plenty of teams get.

MigrateToAstro Platforms

Summarize with AI

What is in this

A headless CMS does not come with opinions, which is the selling point and the problem. Webflow decides a great deal for you and you work inside it. Sanity decides nothing, so the schema somebody writes in the first week is the thing the marketing team lives in for years.

These are the decisions that turn out to matter.

Documents, and what does not deserve to be one

A document is a thing with its own life: it is created, edited and published on its own schedule, and something links to it. An author is a document. A case study is a document. A testimonial that appears on exactly one page is not, and making it one gives the team a list to manage for no benefit.

The test I use is whether anything would ever reference it twice. If not, it belongs inside the thing that uses it.

Blocks, and the page builder trap

The most requested feature is a page made of blocks a marketer can reorder. It is also where these projects go wrong, because a block library that can build any page is a design system with no designer attached, and what ships is pages that are technically valid and visually broken.

I keep the list short and specific, name each block after the job it does rather than what it looks like, and let the components decide presentation. Six good blocks beat twenty flexible ones.

Portable Text, and the rules nobody writes down

Rich text arrives as structured blocks rather than as HTML, which is the reason to be here and the work. Every mark, every embedded type and every custom block needs a rule on every surface that renders it. Decide those up front and write them down, because the failure mode is silent: an unhandled block type renders as nothing at all, and nobody notices until a reader mentions the missing quote.

Preview, which is not optional

An editor who cannot see the change is guessing. Sanity supports live preview well and it is a thing you build, not a thing that exists. Budget it into the first phase rather than the third. A marketing team handed a form with no preview will tell you the new CMS is worse than the old one, and they will be describing their experience accurately.

What this is for

The point of the schema is that the team stops needing me. If adding a landing page requires a developer, the model is wrong, however clean the code is.

If you are shaping one, tell me who edits and how often. That decides more of it than the content types do.

Reach out and see if we are a good fit.

Start a project

Currently booking two to four weeks out.