Runtime Site Config · Nuxt Site Config · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/site-config/getting-started/introduction)

[API](https://nuxtseo.com/docs/site-config/api/use-site-config)

[Releases](https://nuxtseo.com/docs/site-config/releases/v4)

Site Config

- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v4.0.8

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/site-config/getting-started/installation)
- [Troubleshooting](https://nuxtseo.com/docs/site-config/getting-started/troubleshooting)

### Core Concepts

- [Recommended Config](https://nuxtseo.com/docs/site-config/guides/setting-site-config)
- [How it works](https://nuxtseo.com/docs/site-config/guides/how-it-works)
- [I18n Integration](https://nuxtseo.com/docs/site-config/guides/i18n)
- [Runtime Site Config](https://nuxtseo.com/docs/site-config/guides/runtime-site-config)
- [Multi-Tenancy](https://nuxtseo.com/docs/site-config/guides/multi-tenancy)

Core Concepts

# Runtime Site Config

[Copy for LLMs](https://nuxtseo.com/docs/site-config/guides/runtime-site-config.md)

Site config can be set from many different sources from each environment.

The most flexible way to set your site config is at runtime. This gives you the ability to set it based on any condition you want, even allowing [multi-tenancy](https://nuxtseo.com/docs/site-config/guides/multi-tenancy).

## [Caveats](#caveats)

When setting site config at runtime, it's important to set it as early as possible on the server.

This is because modules will be using site config to generate your app, for example if you're using Nuxt SEO, site config drives `sitemap.xml` and `robots.txt` generation.

Therefore, it's recommended to set it either within a Nitro plugin or middleware.

## [Plugin](#plugin)

A Nitro plugin is useful when you want to set site config based on a static condition, such as the environment or based on a result from a database.

Because Site Config is attached to a H3 Request context, you will need to use the `site-config:init` hook to set it.

For example, here we are setting site config based on a database query:

server/plugins/update-site-config-from-db.ts

```
export default defineNitroPlugin(async (nitroApp) => {
  const site = await $fetch('/db/site-config', {
    params: { env: import.meta.env.NUXT_SITE_ENV },
  })
  nitroApp.hooks.hook('site-config:init', ({ event, siteConfig }) => {
    siteConfig.push(site)
  })
})
```

## [Middleware](#middleware)

If you prefer a simpler API, you can use a Nitro middleware instead with `updateSiteConfig` function.

For example, here we are setting site config based on an admin host:

server/middleware/update-site-config.ts

```
import { getNitroOrigin, updateSiteConfig } from '#site-config/server/composables'

export default defineEventHandler((e) => {
  const origin = getNitroOrigin(e)
  if (origin.startsWith('https://admin.')) {
    updateSiteConfig(e, {
      name: 'Admin',
      indexable: false,
      url: 'https://admin.example.com'
    })
  }
})
```

[Edit this page](https://github.com/harlan-zw/nuxt-site-config/edit/main/docs/content/2.guides/3.runtime-site-config.md)

[Markdown For LLMs](https://nuxtseo.com/docs/site-config/guides/runtime-site-config.md)

Did this page help you?

[I18n Integration How to use the Nuxt Site Config module with @nuxtjs/i18n or nuxt-i18n-micro.](https://nuxtseo.com/docs/site-config/guides/i18n) [Multi-Tenancy Learn how to serve multiple sites with different configurations based on the hostname.](https://nuxtseo.com/docs/site-config/guides/multi-tenancy)

On this page

- [Caveats](#caveats)
- [Plugin](#plugin)
- [Middleware](#middleware)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)