--- title: "Payload CMS — Admin Panel Metadata" aliases: [payload-metadata, payload-admin-meta] tags: [payload-cms, nextjs, metadata, seo, admin-panel] sources: [raw/admin__metadata.md] created: 2026-05-15 updated: 2026-05-15 --- # Payload CMS — Admin Panel Metadata Every Admin Panel page gets auto-generated metadata (title, description, og:image) derived from live document data and the user's locale — no config required. Metadata is fully customizable at four cascading levels. ## Cascade Levels ``` Root → Collection / Global → View (overrides parent) ``` | Level | Config Key | Scope | |-------|-----------|-------| | Root | `admin.meta` in Payload Config | All Admin Panel pages | | Collection | `admin.meta` in Collection Config | All views within the collection | | Global | `admin.meta` in Global Config | All views within the global | | View | `meta` in View Config | Specific view only | All levels share the same options structure (Root has a few extras). ## Root Metadata ```ts // payload.config.ts { admin: { meta: { title: 'My Admin Panel', description: 'The best admin panel in the world', titleSuffix: '- MyApp', // replaces default "- Payload" defaultOGImageType: 'dynamic', // 'dynamic' | 'static' | 'off' icons: [...], openGraph: {...}, robots: 'noindex, nofollow', }, }, } ``` ### Root-Only Options | Key | Type | Default | Description | |-----|------|---------|-------------| | `titleSuffix` | `string` | `"- Payload"` | Appended to every page title | | `defaultOGImageType` | `dynamic` \| `static` \| `off` | `dynamic` | How to generate the default OG image | All other keys pass through to Next.js [`generateMetadata`](https://nextjs.org/docs/app/api-reference/functions/generate-metadata). ## Icons ```ts admin: { meta: { icons: [ { rel: 'icon', type: 'image/png', url: '/favicon.png' }, { rel: 'apple-touch-icon', type: 'image/png', url: '/apple-touch-icon.png' }, ], }, } ``` Common `rel` values: `icon`, `apple-touch-icon`, `mask-icon`. ## Open Graph ```ts admin: { meta: { openGraph: { title: 'My Admin Panel', description: '...', siteName: 'Payload', images: [{ url: 'https://example.com/image.jpg', width: 800, height: 600 }], }, }, } ``` ## Robots / Crawling ```ts // Prevent indexing via meta tag admin: { meta: { robots: 'noindex, nofollow' } } ``` > **Default:** Admin Panel already sets `noindex` by default. To prevent crawling entirely (meta tag doesn't stop crawlers), add `robots.txt`: ```text User-agent: * Disallow: /admin/ ``` If `config.routes` has a custom admin path, update `Disallow` to match. ## Collection & Global Metadata ```ts // Collection export const MyCollection: CollectionConfig = { admin: { meta: { title: 'My Collection', description: '...' }, }, } // Global export const MyGlobal: GlobalConfig = { admin: { meta: { title: 'My Global', description: '...' }, }, } ``` Same options as Root (minus `titleSuffix` and `defaultOGImageType`). ## View Metadata Overrides Root/Collection/Global for a specific view: ```ts admin: { views: { dashboard: { meta: { title: 'My Dashboard', description: '...' }, }, }, } ``` ## Key Takeaways - Auto-generated metadata works out of the box — config is only needed to override defaults. - Cascade order: Root → Collection/Global → View (most specific wins). - `titleSuffix` defaults to `"- Payload"` — always override for production apps. - `defaultOGImageType: 'dynamic'` uses Next.js image generation; `'static'` uses a fixed URL; `'off'` disables OG images. - Setting `robots` meta tag prevents indexing but **not crawling** — use `robots.txt` for that. - All metadata flows through Next.js `generateMetadata` — any Next.js metadata option is valid. ## Related - [[wiki/tech-patterns/payload-cms-installation|Payload CMS — Installation & Setup]] - [[wiki/tech-patterns/payload-cms-admin-panel-location|Payload CMS — Custom Admin Panel Location]] - [[wiki/tech-patterns/payload-cms-customizing-css|Payload CMS — Customizing CSS & SCSS]] - [[wiki/tech-patterns/payload-cms-access-control-overview|Payload CMS — Access Control Overview]] ## Sources - `raw/admin__metadata.md` — compiled 2026-05-15 - Source: https://payloadcms.com/docs/admin/metadata