Skip to content
KeystoneJS LogoKeystoneJS
👋🏻 We're working on the next generation of KeystoneJS! If you're using the @keystone-next packages, click here to learn more

byTracking Plugin

Add createdBy and updatedBy fields to a list. These fields are read-only but they will be updated automatically when items are created or updated.


const { byTracking } = require('@keystonejs/list-plugins');

keystone.createList('ListWithPlugin', {
  fields: {...},
  plugins: [


createdByFieldStringcreatedByName of the createdBy field.
updatedByFieldStringupdatedByName of the updatedBy field.
refStringUserA reference to the list authenticated items (users).
accessObjectSee: accessChange default access controls.


By default access control on at tracking fields is read only:

  read: true,
  create: false,
  update: false

Granular control

If you prefer, you can import either createdBy or updatedBy to apply a single tracking field:

const { createdBy, updatedBy } = require('@keystonejs/list-plugins');

Note: The API is the same for each export as byTracking.

On this page

  • Usage
  • Config
  • access
  • Granular control
Edit on GitHub