{"record":{"id":"9073c0f9a99a5d5e","repo":"gatsbyjs/gatsby","slug":"contenttypesmissing","errorCode":"ContentTypesMissing","errorMessage":"Please check if your contentTypeFilter is configured properly. Content types were filtered down to none.","messagePattern":"Please check if your contentTypeFilter is configured properly\\. Content types were filtered down to none\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/gatsby-source-contentful/src/create-schema-customization.js","lineNumber":28,"sourceCode":"import { makeTypeName } from \"./normalize\"\n\nasync function getContentTypesFromContentful({\n  cache,\n  reporter,\n  pluginConfig,\n}) {\n  // Get content type items from Contentful\n  const allContentTypeItems = await fetchContentTypes({\n    pluginConfig,\n    reporter,\n  })\n\n  const contentTypeFilter = pluginConfig.get(`contentTypeFilter`)\n\n  const contentTypeItems = allContentTypeItems.filter(contentTypeFilter)\n\n  if (contentTypeItems.length === 0) {\n    reporter.panic({\n      id: CODES.ContentTypesMissing,\n      context: {\n        sourceMessage: `Please check if your contentTypeFilter is configured properly. Content types were filtered down to none.`,\n      },\n    })\n  }\n\n  // Check for restricted content type names and set id based on useNameForId\n  const useNameForId = pluginConfig.get(`useNameForId`)\n  const restrictedContentTypes = [`entity`, `reference`, `asset`]\n\n  if (pluginConfig.get(`enableTags`)) {\n    restrictedContentTypes.push(`tag`)\n  }\n\n  contentTypeItems.forEach(contentTypeItem => {\n    // Establish identifier for content type\n    //  Use `name` if specified, otherwise, use internal id (usually a natural-language constant,","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/gatsbyjs/gatsby/blob/8b06340921ffdf23125a365b9c9923690cb62ce6/packages/gatsby-source-contentful/src/create-schema-customization.js#L10-L46","documentation":"Validation guard in getContentTypesFromContentful: after fetching all content types from the Contentful space, applying the plugin's contentTypeFilter left zero items. It fires when the configured filter function is too strict or mistyped (e.g. matching a field name that doesn't exist on content type items), so the schema customization step aborts because there is nothing to build node types from. The input at fault is the user-supplied contentTypeFilter in gatsby-config.js.","triggerScenarios":"Thrown at packages/gatsby-source-contentful/src/create-schema-customization.js:28 when the library encounters an invalid state.","commonSituations":"Occurs in gatsby-source-contentful when the contentTypeFilter plugin option excludes every content type in the space. Check that the filter function in gatsby-config.js returns true for at least one content type.","solutions":["Remove or fix the contentTypeFilter option in gatsby-config.js so at least one content type remains.","Check the filter function or regex matches actual Contentful content type IDs (they are case-sensitive)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8b06340921ffdf23125a365b9c9923690cb62ce6","analyzedAt":"2026-08-13T02:36:21.405Z","contentChangedAt":"2026-08-13T02:36:21.405Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}