Configuration
Customize every aspect of the plugin — from field labels to preview behavior.
Basic Configuration
The plugin works with zero configuration:
sanity.config.ts
import seofields from 'sanity-plugin-seofields'
export default defineConfig({
plugins: [
seofields(), // All defaults — preview, dashboard, all fields
],
})Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
seoPreview | boolean | object | true | Enable/disable live SEO preview |
baseUrl | string | — | Base URL for SEO preview generation |
fieldOverrides | object | {} | Customize field titles and descriptions |
fieldVisibility | object | {} | Hide fields on specific document types |
defaultHiddenFields | string[] | [] | Hide fields globally across all types |
enableDashboard | boolean | true | Enable/disable the SEO Health Dashboard |
Advanced Configuration
sanity.config.ts
import seofields, { SeoFieldsPluginConfig } from 'sanity-plugin-seofields'
export default defineConfig({
plugins: [
seofields({
// Live SERP preview with custom URL prefix
seoPreview: {
prefix: (doc) => `/${doc.slug?.current || 'page'}`
},
// Base URL for preview
baseUrl: 'https://www.example.com',
// Customize field labels and descriptions
fieldOverrides: {
title: {
title: 'Page Title',
description: 'The main title that appears in search results',
},
description: {
title: 'Meta Description',
description: 'A brief summary for search engines',
},
canonicalUrl: {
title: 'Canonical URL',
description: 'Preferred URL to avoid duplicate content',
},
metaImage: {
title: 'Social Media Image',
description: 'Image used when sharing on social platforms',
},
keywords: {
title: 'SEO Keywords',
description: 'Keywords describing the page content',
},
},
// Hide fields on specific document types
fieldVisibility: {
page: {
hiddenFields: ['openGraphSiteName', 'twitterSite'],
},
post: {
hiddenFields: ['openGraphSiteName', 'twitterSite'],
},
},
// Or hide fields globally
defaultHiddenFields: ['openGraphSiteName', 'twitterSite'],
} satisfies SeoFieldsPluginConfig),
],
})SEO Preview Options
The seoPreview option controls the live SERP preview shown alongside SEO fields:
Preview options
// Disable preview entirely
seofields({ seoPreview: false })
// Enable with default behavior
seofields({ seoPreview: true })
// Custom URL prefix using document data
seofields({
seoPreview: {
prefix: (doc) => `/blog/${doc.slug?.current}`
}
})Available Field Keys
These keys can be used in both fieldOverrides and fieldVisibility:
titledescriptioncanonicalUrlmetaImagekeywordsmetaAttributesrobotsopenGraphUrlopenGraphTitleopenGraphDescriptionopenGraphSiteNameopenGraphTypeopenGraphImagetwitterCardtwitterSitetwitterCreatortwitterTitletwitterDescriptiontwitterImageTip: Hiding openGraphImage or twitterImage also hides their URL and type variants to keep the editor experience consistent.