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.
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.
Also worth reading
-
Performance
Getting cited by AI search, for a site with ten pages
llms.txt, structured data and the machine-readable artifacts, and an honest assessment of which of them anything currently reads.
-
Performance
Core Web Vitals, explained for the person who has to fix them
Three metrics, what each actually measures, and which of your problems each one is telling you about. Without the jargon.
-
Platform limits
Custom code in Webflow, and where it belongs
Webflow's code fields have a hard character limit and no version control. What belongs in them, what belongs elsewhere, and how to keep a site maintainable either way.
Reach out and see if we are a good fit.
Currently booking two to four weeks out.