Skip to main content
Vulpy Commerce ships Payload CMS inside the storefront app for editorial content: block-based landing pages, category and product dressing, blog posts, media, and site-wide settings. Medusa stays the source of truth for commerce; Payload handles the words and pictures around it.
The fastest way is to ask Fox. Fox works in the same Payload admin and can manage content operations for you.
  • Publish a landing page for our summer campaign.
  • Add a rich-text block to the About page.

Open Payload admin

Local: http://localhost:3000/admin. Production: https://<shop-domain>/admin. Sign in with the shared admin credentials set at install.

What Payload owns

Medusa-synced fields (title, handle, medusaCategoryId) are read-only in Payload admin. Editorial fields (blocks, h1, seo) are writable.

Publish a landing page

1

Create a new page

In Payload admin, open Pages and click Create new. Set the slug and title.
2

Build the layout with blocks

Add blocks (hero, rich text, media, product grid, callouts). Reorder them by dragging. Each block renders through the storefront’s block registry.
3

Set SEO metadata

Fill in seo.title and seo.description. These flow to the rendered page head.
4

Preview and publish

Use the preview URL to check the page against the storefront, then set the page to published.

Selection pages (Pro)

Selection pages are curated landings without a Medusa category. Create a categoryContent entry with kind: "selection", a custom route, and a filterQuery. The storefront middleware rewrites the public URL to /selection/[handle], so shoppers see a clean URL like /summer-edit.

Contact form

The storefront contact form uses a math captcha at GET /api/contact/captcha (HMAC signed with PAYLOAD_SECRET). Submissions land in the contact-submissions collection as a read-only inbox.

Seed CMS defaults for local dev

When the Payload database is empty in non-production, the storefront falls back to lib/cms/defaults.ts so you always have something to click. To populate real content while pnpm dev is running:
Production never serves seed chrome on Payload failures. If Payload is unavailable in production, the storefront renders an empty shell by design. Set CMS_STRICT=1 if you want failures to rethrow instead.

Manage catalog

Add editorial blocks on top of Medusa products and categories.

Analytics

Track how content pages perform, consent-gated.