🗓️ Everything *[NYC] is back. A free gathering for AI builders. Sept 9

Sanity Plugin Analytics

Bring GA4, Google Search Console, and Lighthouse/PageSpeed analytics directly into Sanity Studio. View traffic, engagement, search performance, and page-level insights without switching between multiple dashboards.

By Desai Hardik

Install command

npm install sanity-plugin-analytics

sanity-plugin-analytics

GA4, Google Search Console, and Lighthouse/PageSpeed dashboards inside Sanity Studio.

Full documentation: sanity-plugin-analytics.thehardik.in

Install

npm install sanity-plugin-analytics

Studio Setup

import {defineConfig} from 'sanity'
import {sanityAnalyticsPlugin} from 'sanity-plugin-analytics'

export default defineConfig({
  plugins: [
    sanityAnalyticsPlugin({
      analytics: {
        apiUrl: '/api/analytics',
      },
      searchConsole: {
        apiUrl: '/api/search-console',
      },
      lighthouse: {
        apiUrl: '/api/pagespeed',
        siteUrl: 'https://example.com',
        documentTypes: [
          {type: 'post', pathPrefix: '/blog', slugField: 'slug', titleField: 'title'},
        ],
      },
    }),
  ],
})

The default export creates one Studio tool with tabs for Analytics, Search Console, and Lighthouse.

Individual tools are also available:

import {
  googleAnalyticsPlugin,
  searchConsolePlugin,
  lighthousePlugin,
} from 'sanity-plugin-analytics'

API Routes

The package ships server-side handlers that you can re-export from your app routes.

// app/api/analytics/route.ts
export {GET} from 'sanity-plugin-analytics/api/analytics'
// app/api/search-console/route.ts
export {GET, POST} from 'sanity-plugin-analytics/api/search-console'
// app/api/pagespeed/route.ts
export {GET} from 'sanity-plugin-analytics/api/pagespeed'

Environment Variables

GA_PROPERTY_ID=123456789
GA_SERVICE_ACCOUNT_EMAIL=service-account@project.iam.gserviceaccount.com
GA_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
SEARCH_CONSOLE_SITE_URL=https://example.com
PAGESPEED_API_KEY=optional_google_api_key

GA_PROPERTY_ID and SEARCH_CONSOLE_SITE_URL can also be supplied from plugin config/query params. Credentials always stay server-side.

Lighthouse URL Mapping

Lighthouse discovers URLs from configured Sanity document mappings:

lighthouse: {
  siteUrl: 'https://example.com',
  documentTypes: [
    {type: 'post', pathPrefix: '/blog'},
    {type: 'page', pathPrefix: ''},
  ],
}

For advanced routing, pass resolveUrl(document, {siteUrl}).

Exports

  • sanityAnalyticsPlugin
  • googleAnalyticsPlugin
  • searchConsolePlugin
  • lighthousePlugin
  • analyticsSchemas
  • lighthouseReport
  • createSeoView
  • createLighthouseView
  • sanity-plugin-analytics/api/analytics
  • sanity-plugin-analytics/api/search-console
  • sanity-plugin-analytics/api/pagespeed

License

MIT

Related contributions