How to structure front page intro title and heading in Sanity schema?

8 replies
Last updated: Jan 28, 2026
Hello!
I'm implementing this very standard web site, with a front page, some products and a few topic pages.

How should I structure the content on the front page? In particular, there's this intro title and heading that I can't think of a place to put. I have a content type for products, and one for topics. I have a site settings content type, and a generic texts content type. Should I add another one? What should it be?
AI Update

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 thread
8 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.

Was this answer helpful?