How to structure front page intro title and heading in Sanity schema?
For a standard website like yours, you have a few solid approaches for structuring front page content, especially that intro title and heading:
Option 1: Extend your Site Settings document (Recommended)
Since you already have a site settings content type, this is often the best place for front page-specific content. You can add fields like frontPageTitle, frontPageHeading, and frontPageIntro directly to your site settings singleton. This keeps all site-wide, one-off content in a single, easy-to-find location.
{
name: 'siteSettings',
type: 'document',
fields: [
// ... your existing settings
{
name: 'frontPageTitle',
type: 'string',
title: 'Front Page Title'
},
{
name: 'frontPageHeading',
type: 'string',
title: 'Front Page Heading'
},
// Maybe add featured products/topics here too
{
name: 'featuredProducts',
type: 'array',
of: [{type: 'reference', to: [{type: 'product'}]}]
}
]
}Option 2: Create a dedicated Front Page/Homepage document
If your front page needs more complex structure (multiple sections, hero areas, content blocks), create a separate singleton document type called frontPage or homePage. This gives you more flexibility to build out a richer page structure using content blocks or modular sections.
{
name: 'frontPage',
type: 'document',
fields: [
{name: 'title', type: 'string'},
{name: 'heading', type: 'string'},
{name: 'intro', type: 'text'},
{
name: 'featuredProducts',
type: 'array',
of: [{type: 'reference', to: [{type: 'product'}]}]
},
{
name: 'featuredTopics',
type: 'array',
of: [{type: 'reference', to: [{type: 'topic'}]}]
}
]
}What NOT to do:
Don't use your "generic texts" content type for this. That creates confusion about which text belongs where and makes it harder for content editors to find and update the front page content.
General principle:
Following content modeling best practices, think about whether this content is truly unique to one place (front page) or if it's reusable across contexts. Unique, one-off content like front page intros belongs in either site settings or a dedicated page document, not in generic content types.
For a standard site like yours, I'd lean toward extending site settings unless you anticipate the front page growing significantly more complex over time.
Show original thread8 replies
Sanity – Build the way you think, not the way your CMS thinks
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.