> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vulpy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Payload collections and globals in Vulpy

> Reference for the Payload CMS collections and globals shipped with Vulpy Commerce, including the sync rules that keep Medusa the source of truth.

Vulpy Commerce uses Payload CMS for editorial content, media, and site structure. This page lists the collections and globals that ship with Vulpy, explains how Medusa remains the source of truth for product and category identity, and points to the Payload docs for extending the schema.

<Tip>
  **Ask Fox to draft schema changes.** Fox writes the collection config, runs the dev migration in your checkout, and shows you the diff.

  Try prompts like:

  * "Add a `status` field to `contact-submissions`."
  * "Draft a new `reviews` collection."
  * "Regenerate Payload types after my last change."
</Tip>

## Collections

| Collection            | Purpose                                                                                                                      |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `pages`               | Block-based landing pages for marketing and static content.                                                                  |
| `productContent`      | Editorial blocks and SEO fields for products. Synced from Medusa product identity (Pro edition).                             |
| `categoryContent`     | Editorial blocks, pseudo categories, and selection pages for categories. Synced from Medusa category identity (Pro edition). |
| `posts`               | Rich text blog posts with editorial formatting.                                                                              |
| `media`               | Uploaded images and files. In production, files are stored in `.data/payload-media`.                                         |
| `contact-submissions` | Read-only inbox populated by the storefront contact form. See [Contact form](/shop/contact).                                 |

## Globals

| Global          | Purpose                                                               |
| --------------- | --------------------------------------------------------------------- |
| `site-settings` | Sitewide configuration values, such as branding and default metadata. |
| `navigation`    | Header menu links and structure.                                      |
| `footer`        | Footer links, columns, and legal text.                                |

## Sync rules with Medusa

Medusa remains the source of truth for product and category identity. In `productContent` and `categoryContent`, these fields are read-only in Payload:

* `title`
* `handle`
* `medusaCategoryId`

Editorial fields, including blocks, `h1`, and `seo`, are writable in Payload and render in the storefront. This separation lets merchandisers edit content without changing catalog data.

## Extending the schema

You can add fields to existing collections or create new collections and globals via Payload configuration. For guidance, see the Payload docs:

* [Collections configuration](https://payloadcms.com/docs/configuration/collections)
* [Globals configuration](https://payloadcms.com/docs/configuration/globals)
* [Access control overview](https://payloadcms.com/docs/access-control/overview)

Access control functions gate who can read and write each collection. Configure them to match your team roles.

## Environment behavior

Set `CMS_STRICT=1` to make storefront Payload failures rethrow in production instead of rendering an empty shell. Without this flag, the storefront silently skips missing or failed CMS content. See [Environment variables](/reference/env-vars).

<Note>
  Seed defaults live in `apps/storefront/src/lib/cms/defaults.ts` and are only used in non-production environments when Payload is empty.
</Note>

<CardGroup cols={2}>
  <Card title="Storefront blocks" icon="blocks" href="/customize/blocks">
    Register new Payload blocks and map them to React components in the storefront.
  </Card>

  <Card title="Content management" icon="pen" href="/shop/content">
    Learn how editorial content flows from Payload into the storefront.
  </Card>
</CardGroup>
