# Extension points — payloadcms/payload

> Canonical page: https://codevetter.com/unpack/payload/extension-points

# Extension points — payloadcms/payload

Scanned commit e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Configuration transformation is the primary extension mechanism. Runtime factories bind database, storage, authentication, and email implementations to a Payload instance. Endpoint tables and CLI command definitions expose additional behavior without replacing the core operation pipeline. Admin components, lifecycle hooks, jobs, and rich-text features provide more targeted customization surfaces.
- Plugins are ordered config-to-config transformations: buildConfig sorts by plugin.order with zero as the default and awaits each result before sanitization. — [packages/payload/src/config/build.ts#L10-17](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/build.ts#L10-L17) [docs/plugins/overview.mdx#L30-34](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/docs/plugins/overview.mdx#L30-L34)
- Storage adapters belong in config.storage and must expose init; s3Storage returns a named adapter with collection membership and an init function that binds cloud-storage behavior. — [packages/payload/src/config/build.ts#L19-29](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/build.ts#L19-L29) [packages/storage-s3/src/index.ts#L111-157](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/storage-s3/src/index.ts#L111-L157)
- createDatabaseAdapter supplies default batching, copy, migration, and null transaction implementations that adapter arguments can override; postgresAdapter also accepts schema lifecycle hooks and query operator handlers. — [packages/payload/src/database/createDatabaseAdapter.ts#L42-64](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/database/createDatabaseAdapter.ts#L42-L64) [packages/db-postgres/src/index.ts#L101-121](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/db-postgres/src/index.ts#L101-L121)
- Root, collection, and global endpoint arrays are dispatched by method plus path-to-regexp matching; route parameters receive the resolved collection/global slug, and endpoints:false disables that endpoint surface. — [packages/payload/src/utilities/handleEndpoints.ts#L188-217](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/utilities/handleEndpoints.ts#L188-L217) [packages/payload/src/utilities/handleEndpoints.ts#L220-244](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/utilities/handleEndpoints.ts#L220-L244)
- Custom auth strategies are collected from auth-enabled collections before API-key/local JWT behavior; executeAuthStrategies invokes them in order, merges response headers, logs thrown errors, and returns on the first user. — [packages/payload/src/index.ts#L1049-1079](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/index.ts#L1049-L1079) [packages/payload/src/auth/executeAuthStrategies.ts#L14-37](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/auth/executeAuthStrategies.ts#L14-L37)
- config.cli.commands overrides built-ins and accepts disabled entries or dynamically imported command definitions; loading resolves paths relative to configDir and validates name/alias conflicts. — [packages/payload/src/config/defaults.ts#L80-87](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/defaults.ts#L80-L87) [packages/payload/src/cli/program/loadCommands.ts#L18-51](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/cli/program/loadCommands.ts#L18-L51) [packages/payload/src/cli/program/loadCommands.ts#L66-103](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/cli/program/loadCommands.ts#L66-L103)
- Admin customization types expose providers, navigation, sidebar tabs, user-menu settings, named/custom views, dashboard widgets, dependencies, and import-map generators. — [packages/payload/src/config/types.ts#L1111-1158](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/types.ts#L1111-L1158) [packages/payload/src/config/types.ts#L1161-1193](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/types.ts#L1161-L1193)
- Collection hooks can transform create data before validation/change and results after read/change; jobs tasks/workflows enable internal queue collections, while Lexical exposes replaceable feature composition. — [packages/payload/src/collections/operations/create.ts#L296-325](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/collections/operations/create.ts#L296-L325) [packages/payload/src/collections/operations/create.ts#L550-595](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/collections/operations/create.ts#L550-L595) [packages/payload/src/config/sanitize.ts#L559-605](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/packages/payload/src/config/sanitize.ts#L559-L605) [docs/rich-text/overview.mdx#L53-65](https://github.com/payloadcms/payload/blob/e6cd442f40563b2dd95cebcc6a3ffaa2dbbc68f2/docs/rich-text/overview.mdx#L53-L65)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
