Payload is now completely free and open-source.
If you like what we're doing, stop by GitHub and give us a star!

Global Configs

Global configs are in many ways similar to Collections. The big difference is that Collections will potentially contain many documents, while a Global is a "one-off". Globals are perfect for things like header nav, site-wide banner alerts, app-wide localized strings, and other "global" data that your site or app might rely on.

As with Collection configs, it's often best practice to write your Globals in separate files and then import them into the main Payload config.


slug *Unique, URL-friendly string that will act as an identifier for this Global.
fields *Array of field types that will determine the structure and functionality of the data stored within this Global. Click here for a full list of field types as well as how to configure them.
labelSingular label for use in identifying this Global throughout Payload. Auto-generated from slug if not defined.
descriptionText or React component to display below the Global header to give editors more information.
adminAdmin-specific configuration. See below for more detail.
hooksEntry points to "tie in" to collection actions at specific points. More
accessProvide access control functions to define exactly who should be able to do what with this Global. More
versionsSet to true to enable default options, or configure with object properties. More
endpointsAdd custom routes to the REST API. More

* An asterisk denotes that a property is required.

Simple Global example

import { GlobalConfig } from 'payload/types';
const Nav: GlobalConfig = {
slug: 'nav',
fields: [
name: 'items',
type: 'array',
required: true,
maxRows: 8,
fields: [
name: 'page',
type: 'relationship',
relationTo: 'pages', // "pages" is the slug of an existing collection
required: true,
export default Nav;

Global config example

You can find an example Global config in the Public Demo source code on GitHub.

Admin options

You can customize the way that the Admin panel behaves on a Global-by-Global basis by defining the admin property on a Global's config.

componentsSwap in your own React components to be used within this Global. More

Access control

As with Collections, you can specify extremely granular access control (what users can do with this Global) on a Global-by-Global basis. However, Globals only have update and read access control due to their nature of only having one document. To learn more, go to the Access Control docs.


Globals also fully support a smaller subset of Hooks. To learn more, go to the Hooks documentation.

Field types

Globals support all field types that Payload has to offer—including simple fields like text and checkboxes all the way to more complicated layout-building field groups like Blocks. Click here to learn more about field types.


You can import global types as follows:

import { GlobalConfig } from 'payload/types';
// This is the type used for incoming global configs.
// Only the bare minimum properties are marked as required.
import { SanitizedGlobalConfig } from 'payload/types';
// This is the type used after an incoming global config is fully sanitized.
// Generally, this is only used internally by Payload.