Search

Search pages, services, tech stack, and blog posts

Payload CMS

Payload CMS CMSThe TypeScript-first headless CMS

Payload is an open-source headless CMS and app framework built entirely in TypeScript. We build Payload-powered projects — from content-heavy marketing sites to full SaaS backends with custom admin panels, access control, and API-first content delivery.

Payload CMS is an open-source, TypeScript-first headless CMS that's rapidly becoming the go-to choice for developers who want full control. Unlike traditional CMS platforms, Payload's entire schema is defined in code — collections, fields, hooks, access control, and admin UI customizations are all TypeScript config. Version 3 runs natively inside Next.js, so your CMS and frontend deploy as a single app. It's self-hosted by default (no vendor lock-in), supports Postgres and MongoDB, and gives you REST + GraphQL APIs out of the box. We use Payload for projects that need a real developer experience without sacrificing editor-friendly admin panels.

Quick start

bash
npx create-payload-app@latest my-project

# Choose your template (blank, website, e-commerce)
# Choose your database (Postgres or MongoDB)
# cd my-project && npm run dev

Read the full documentation at payloadcms.com/docs

TypeScript config-as-code

Your entire CMS schema lives in TypeScript config files — version-controlled, type-safe, and refactor-friendly.

Next.js native

Payload v3 runs inside Next.js as a plugin — one deployment, one codebase, zero separate CMS servers.

Field-level access control

Row, field, and collection-level access policies in code — RBAC, tenant isolation, and custom auth flows without plugins.

Custom admin UI

The admin panel is React — swap fields, add custom views, build dashboards without fighting a plugin system.

Block-based content

Reusable layout blocks with typed fields that editors mix and match — structured content with visual flexibility.

REST & GraphQL APIs

Auto-generated REST and GraphQL endpoints for every collection — consume content from any frontend or service.

Common problems

Younger ecosystem

Payload's plugin ecosystem is smaller than WordPress or Strapi. Custom functionality often means writing code rather than installing community plugins.

Self-hosted complexity

Unlike hosted CMS platforms, Payload requires you to manage your own infrastructure — server, database, and deployment pipeline.

Migration from other CMS

Moving content from WordPress, Contentful, or Strapi to Payload requires custom migration scripts since schema definitions are fundamentally different.

Learning curve for non-developers

Payload's config-as-code approach is powerful for developers but means non-technical team members need developer support for schema changes.

Best practices

Co-locate Payload config with your Next.js app

With Payload v3, keep your CMS config alongside your Next.js pages — single repo, single deploy, shared TypeScript types.

Use hooks for business logic instead of external services

Payload's beforeChange/afterChange hooks are the right place for validation, transformation, and side effects — keep logic close to your data model.

Define reusable field groups

Create shared field configs (SEO fields, media fields, link groups) and compose them across collections to keep your schema DRY.

Set up access control early

Define RBAC policies from day one. Payload's access functions receive the authenticated user — build tenant isolation, role gates, and field-level permissions before content grows.

Frequently asked questions




Ready to start your Payload CMS project?

Tell us what you're building with Payload CMS. We'll respond within 24 hours.

1 spot available in May 2026Apr 2026 fully booked

We limit intake each month so every project gets the focus it deserves.