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
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 devRead 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
Related technologies
Related services
Looking for end-to-end delivery? These services complement Payload CMS projects.
Ready to start your Payload CMS project?
Tell us what you're building with Payload CMS. We'll respond within 24 hours.
We limit intake each month so every project gets the focus it deserves.