payloadcms/payload · error · APIError

The global with slug ${String(globalSlug)} can't be found.

Error message

The global with slug ${String(globalSlug)} can't be found.

What it means

Thrown by updateGlobalLocal (payload.updateGlobal) when globalSlug is not in payload.globals.config. Guard before delegating to updateOperation.

Source

Thrown at packages/payload/src/globals/operations/local/update.ts:131

): Promise<TransformGlobalWithSelect<TSlug, TSelect>> {
  const {
    slug: globalSlug,
    data,
    depth,
    draft,
    overrideAccess = true,
    overrideLock,
    populate,
    publishAllLocales,
    select,
    showHiddenFields,
    unpublishAllLocales,
  } = options

  const globalConfig = payload.globals.config.find((config) => config.slug === globalSlug)

  if (!globalConfig) {
    throw new APIError(`The global with slug ${String(globalSlug)} can't be found.`)
  }

  return updateOperation<TSlug, TSelect>({
    slug: globalSlug as string,
    data: deepCopyObjectSimple(data), // Ensure mutation of data in create operation hooks doesn't affect the original data
    depth,
    draft,
    globalConfig,
    overrideAccess,
    overrideLock,
    populate,
    publishAllLocales,
    req: await createLocalReq(options as CreateLocalReqOptions, payload),
    select,
    showHiddenFields,
    unpublishAllLocales,
  })
}

View on GitHub (pinned to 00c58b35c0)

Solutions

  1. Validate the slug against payload.globals.config before calling.
  2. Use typed GlobalSlug at every update call site.
  3. Run a grep pass after renaming a global.
  4. Ensure payload.init() has resolved.

Example fix

// before
await payload.updateGlobal({ slug: 'seettings', data })

// after
if (!payload.globals.config.some(g => g.slug === slug)) {
  throw new Error(`Unknown global slug: ${slug}`)
}
await payload.updateGlobal({ slug, data })
Defensive patterns

Strategy: validation

Validate before calling

if (!payload.globals.config.some((g) => g.slug === slug)) {
  throw new Error(`Unknown global: ${slug}`)
}

Type guard

function isGlobalSlug(payload: Payload, slug: string): slug is GlobalSlug {
  return payload.globals.config.some((g) => g.slug === slug)
}

Try / catch

try {
  await payload.updateGlobal({ slug, data })
} catch (err) {
  if (err instanceof APIError && /can't be found/.test(err.message)) return null
  throw err
}

Prevention

When it happens

Trigger: Calling payload.updateGlobal({ slug: 'mistyped', data }) with an unregistered slug.

Common situations: Slug typo; renamed global; programmatic update with a slug from untrusted/dynamic input; calling before init.

Related errors


AI-assisted analysis of payloadcms/payload@00c58b35c0 (2026-08-12). Data as JSON: /api/errors/f9cba77e72f09658. Report an issue: GitHub.