webhouse.appwebhouse.appdocs

Reserved names to avoid, recommended naming patterns, and why the validator catches conflicts.

Reserved names — never use these

The following names conflict with CMS admin's built-in UI panels. Never use them as collection names or labels:

Reserved nameConflicts with
settingsSite Settings panel
site-settingsSite Settings panel
configSite configuration
adminAdmin UI routes
mediaMedia library panel
interactivesInteractives panel

What happens if you use a reserved name

If you name a collection "Site Settings", editors see two "Site Settings" entries in the sidebar:

  1. Your collection (content documents)
  2. CMS admin's built-in settings panel

This confuses everyone. Editors click the wrong one, content gets lost, and support tickets pile up.

The same applies to "Media" — editors can't tell if they're opening the media library or your "Media" content collection.

For site-wide settings

Use globals or global — not "settings" or "config":

typescript
defineCollection({
  name: 'globals',        // ✓ safe
  label: 'Global Settings', // ✓ label can say "settings"
  fields: [
    { name: 'siteTitle', type: 'text' },
    { name: 'tagline', type: 'textarea' },
    { name: 'socialLinks', type: 'array', fields: [
      { name: 'platform', type: 'text' },
      { name: 'url', type: 'text' },
    ]},
    { name: 'footerText', type: 'text' },
  ],
})

Note: The label can include "Settings" — it's the name (used for routes and directory names) that must avoid reserved words.

For content collections

Use descriptive, content-focused names:

GoodBad
postsblog-settings
projectsadmin-projects
teamconfig-team
testimonialssettings-testimonials
eventsmedia-events
productsinteractives-products
servicessite-settings-services

The validator catches it

CMS admin includes a built-in validator that checks for reserved name conflicts.

How to use it

  1. Go to Site Settings in the sidebar
  2. Scroll to the Site section
  3. Click Validate site
  4. If any collection uses a reserved name, you'll see a warning with a rename suggestion

What the validator checks

  • Collection name matches a reserved word
  • Collection label is identical to a built-in panel name
  • Suggests safe alternatives (e.g. "settings" → "globals")

Fixing a conflict

If the validator flags a collection:

  1. Rename the collection in cms.config.ts:
typescript
// Before (bad)
   defineCollection({ name: 'settings', ... })

   // After (good)
   defineCollection({ name: 'globals', label: 'Site Settings', ... })
  1. Rename the content directory:
bash
mv content/settings content/globals
  1. Update slug references in any JSON files that reference the old collection name

Summary

  • name = directory name + URL route → must avoid reserved words
  • label = display name in admin → can be anything descriptive
  • Use globals for site-wide settings, not "settings" or "config"
  • Run the validator after any config change to catch conflicts early
Tags:SchemaArchitectureMigration
Previous
Shared Snippets — Reusable Code Blocks
JSON API →Edit on GitHub →