The modern alternative to headless WordPress

Built with TypeScript and React, Payload is a next-generation content management system compared to Wordpress, hyperfocused on a superior developer experience and better security.

wordpress logo is left in the blurry void
editing a post screen in payload
payload logo in a black box floating in the void

Building with Payload can be done quickly and effectively, thanks to its code‑based customization and developer-friendly features.

Microsoft - Payload ClientMicrosoft - Payload Client
Sowmya Reddy Peta, Engineer
Microsoft front end screenshots

Leave yesterday's technology in the past

Headless by nature, Payload is config-based and purpose-built, delivering GraphQL and local node APIs out-of-box, along with unmatched flexibility.

Don't Frankstein Wordpress. Lean on Payload to power anything you can think of.

01

Customize access control

Secure your data by writing access control functions based on either a document or field level. Build out your own RBAC or any access control pattern you need. It's simple yet significantly more powerful than working with WordPress user roles.

Read the Docs
1
const Orders = {
2
// ...
3
access: {
4
create: () => true, // Everyone can create
5
read: ({ req: { user } }) => {
6
if (user) {
7
return { // Users can only read their own
8
owner: { equals: user.id, },
9
};
10
}
11
12
return false; // Not logged in? Can't read any
13
},
14
update: ({ req: { user } }) => {
15
// Only Admins can update Orders
16
if (user.roles.includes('admin')) return true;
17
return false;
18
},
19
delete: () => false, // No one can delete
20
},
21
};
22
02

Built-in localization

Unlike WordPress, Payload natively offers localization down to the field level. Alongside i18n support, get robust internationalization and localization capability without the hassle of managing multiple plugins.

Read the Docs
1
import { buildConfig } from 'payload/config'
2
3
export default buildConfig({
4
collections: [
5
// collections go here
6
],
7
localization: {
8
locales: ['en', 'es', 'de'],
9
defaultLocale: 'en',
10
fallback: true,
11
},
12
})
13
03

Extend your admin UI with ease

WordPress' dashboard is mess of jQuery, React, and PHP. Leave the nightmare behind. Payload's admin UI is fast, minimal, and most important of all, completely extensible in React.

Read the Docs
1
import { buildConfig } from 'payload/config'
2
3
import {
4
MyCustomNav,
5
MyCustomLogo,
6
MyCustomIcon,
7
MyCustomAccount,
8
MyCustomDashboard,
9
MyProvider,
10
MyCustomAdminAction,
11
} from './customComponents'
12
13
export default buildConfig({
14
admin: {
15
components: {
16
Nav: MyCustomNav,
17
graphics: {
18
Icon: MyCustomIcon,
19
Logo: MyCustomLogo,
20
},
21
actions: [MyCustomAdminAction],
22
views: {
23
Account: MyCustomAccount,
24
Dashboard: MyCustomDashboard,
25
},
26
providers: [MyProvider],
27
},
28
},
29
})
30
04

Meet every security standard

WordPress is the most commonly targeted CMS and its plugins can expose you to endless vulnerabilities. Payload comes instantly more secure and supports features like SSO, HTTP-only cookies, CSRF protection, rate limiting, and more.

Explore
Auth admin and external login
05

Config-Based vs "Plugins"

In WordPress, you might combine three or four plugins just to add post types, meaning you need to manually migrate changes between environments. With Payload, you write your schema in code, version control it, and migrate changes easily.

1
import { buildConfig } from 'payload/config'
2
import { mongooseAdapter } from '@payloadcms/db-mongodb'
3
import { postgresAdapter } from '@payloadcms/db-postgres' // beta
4
5
import { viteBundler } from '@payloadcms/bundler-vite'
6
import { webpackBundler } from '@payloadcms/bundler-webpack'
7
8
import { lexicalEditor } from '@payloadcms/richtext-lexical' // beta
9
import { slateEditor } from '@payloadcms/richtext-slate'
10
11
export default buildConfig({
12
admin: {
13
bundler: webpackBundler(), // or viteBundler()
14
},
15
db: mongooseAdapter({}) // or postgresAdapter({}),
16
editor: lexicalEditor({}) // or slateEditor({})
17
collections: [
18
{
19
slug: 'pages',
20
fields: [
21
{
22
name: 'title',
23
type: 'text',
24
required: true,
25
},
26
{
27
name: 'content',
28
type: 'richText',
29
required: true,
30
},
31
],
32
},
33
],
34
globals: [
35
{
36
slug: 'header',
37
fields: [
38
{
39
name: 'nav',
40
type: 'array',
41
fields: [
42
{
43
name: 'page',
44
type: 'relationship',
45
relationTo: 'pages',
46
},
47
],
48
},
49
],
50
},
51
],
52
})
53
06

Next.js vs PHP

Payload harnesses Next.js for top-tier performance and scalability, with the option to build on Express. With WordPress, you're stuck writing outdated PHP.

User collection list and SSO login

Connect with us.

Whether you need help from our active community or have questions about using Payload at the enterprise level, we’re here to help.