Skip to Content
FeaturesPages, Blocks & Posts

Pages, Blocks & Posts

Content is managed in Payload via Pages, Posts, and Categories. Pages compose 19 blocks via the page builder; posts are a traditional title/slug/content blog model. Both are tenant-scoped — each site has its own pages, posts, and categories.

Pages

Pages are the primary way to build a tenant’s frontend. Each page has a slug, SEO metadata, and a layout field that holds an ordered list of blocks.

The block library (19 blocks)

All blocks live in src/domains/cms/payload/blocks/. Every block shares a Section tab (variant, padding, content header).

Layout

BlockSlugWhat it does
Hero Sectionhero-section-blockFull-width hero with optional media
Logocloud Sectionlogocloud-section-blockGrid or row of logos
Feature Sectionfeature-section-block2- or 3-column feature grid (Lucide icons)
Feature Showcasefeature-showcase-section-blockAlternating media + text sections
Bento Sectionbento-section-blockFixed bento grid layout

Content

BlockSlugWhat it does
Content Blockcontent-blockLexical rich text
Content Sectioncontent-section-blockRich text body with sticky image
Media Blockmedia-blockSingle image/video with optional caption

Commerce — blocks with brains (Stripe-connected)

BlockSlugWhat it does
Pricing Sectionpricing-section-blockPulls live Stripe products, monthly/annual toggle, real checkout
Product Gridproduct-grid-blockLive Stripe prices, checkout

Browse — driven by the data layer

BlockSlugWhat it does
Explore Sectionexplore-section-blockPer-tenant search and faceted browse over your records — cards (grid or list), table, or map. See Data → Search & Explore.
Records Sectionrecords-section-blockCurated archive of records — latest or by taxonomy term, grid or list layout.
Taxonomy Sectiontaxonomy-section-blockRenders a taxonomy’s terms as chips, each linking to its term page.

Generate — blocks with brains (paywall-connected)

BlockSlugWhat it does
Generation Sectiongeneration-section-blockUser-facing AI generator form behind the credit paywall. See AI Generation.

Social proof

BlockSlugWhat it does
Testimonial Sectiontestimonial-section-blockQuote, author, role, avatar
Blog Sectionblog-section-blockLive posts query, grid or list

Engagement

BlockSlugWhat it does
FAQ Sectionfaq-section-blockAccordion
CTA Sectioncta-section-blockTitle + description + buttons
Newsletter Sectionnewsletter-section-blockLead capture + UTM tracking + welcome email

Shared section controls

Every section block has a Section tab:

  • Full width — stretch to the viewport edges
  • Variantbackground, muted, primary, secondary
  • Padding — top/bottom toggles
  • Separators — top/bottom divider lines
  • Content header — optional eyebrow, title, description, buttons above the block’s main content

Drafts and autosave

Pages have drafts with autosave and scheduled publishing. Up to 50 versions per page. Live preview is wired via @payloadcms/plugin-live-preview.

SEO

The SEO tab (via @payloadcms/plugin-seo) overrides meta title, description, and preview image. If empty, the tenant’s defaults are used. JSON-LD is auto-emitted on detail pages and per record (see Data → Search & Explore).

Composing pages

Two paths:

  • Admin — drag blocks in the page builder UI.
  • CLI / agentshipmore page block-schema [type] discovers a block’s shape (omit [type] to list all blocks), then shipmore page build composes the page from a JSON spec — the same path the admin page builder writes to:
shipmore page block-schema explore-section-block shipmore page build --tenant ramen.example.com --slug home --title "Browse Ramen Shops" \ --blocks '[{"type":"explore-section-block","content":{"title":"Browse","pageSize":20}}]'

Pass blocks inline via --blocks or from a file via --blocks-file. Pages build as drafts by default; pass --no-draft to publish immediately. page build returns the correct tenant-scoped URL — use response.url verbatim, don’t reconstruct it.

Posts

Posts are a blog content type:

  • Title + slug (auto or manual)
  • Lexical rich text
  • Hero image
  • Category (relationship)
  • SEO tab (same as pages)
  • Drafts with autosave + scheduled publishing

Posts are listed at /posts and rendered at /posts/[slug]. Editorial search across posts is separate from the per-tenant search over your data records.

Categories

Tenant-scoped labels for organizing posts. Each category has a title and a slug. Assign to posts to enable filtered views.

Revalidation

When a page, post, tenant, or category is created or updated in the admin, the app automatically revalidates affected frontend routes. Changes appear without a manual redeploy or cache purge.