{"record":{"id":"f14ac51715afc550","repo":"gatsbyjs/gatsby","slug":"the-secret-in-this-request-did-not-match-your-plug","errorCode":null,"errorMessage":"The secret in this request did not match your plugin options secret.","messagePattern":"The secret in this request did not match your plugin options secret\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/gatsby-source-drupal/src/gatsby-node.ts","lineNumber":217,"sourceCode":"    touchNode,\n    unstable_createNodeManifest,\n  } = actions\n  // Update the concurrency limit from the plugin options\n  requestQueue.concurrency = concurrentAPIRequests\n\n  if (webhookBody && Object.keys(webhookBody).length) {\n    const changesActivity = reporter.activityTimer(\n      `loading Drupal content changes`,\n      {\n        parentSpan,\n      }\n    )\n    changesActivity.start()\n\n    try {\n      const { secret, action, data } = webhookBody\n      if (pluginOptions.secret && pluginOptions.secret !== secret) {\n        reporter.warn(\n          `The secret in this request did not match your plugin options secret.`\n        )\n        changesActivity.end()\n        return\n      }\n\n      if (!action || !data) {\n        reporter.warn(\n          `The webhook body was malformed\n\n${JSON.stringify(webhookBody, null, 4)}`\n        )\n\n        changesActivity.end()\n        return\n      }\n\n      if (action === `delete`) {","sourceCodeStart":199,"sourceCodeEnd":235,"githubUrl":"https://github.com/gatsbyjs/gatsby/blob/e85d62f1779e353eaac1753211629a26d123e26c/packages/gatsby-source-drupal/src/gatsby-node.ts#L199-L235","documentation":"Fires in sourceNodes' webhook handling when a JSON webhook body is present but its secret field does not equal pluginOptions.secret. It is a guard against unauthorized or misconfigured webhook requests: the payload is untrusted, so the plugin ends the activity timer and skips sourcing the update entirely. Usually caused by the webhook's configured secret differing from the plugin options, or by sending the webhook to the wrong site.","triggerScenarios":"Thrown at packages/gatsby-source-drupal/src/gatsby-node.ts:217 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set the same secret value in the Drupal webhook configuration and in the gatsby-source-drupal plugin options in gatsby-config.js.","Check that the webhook is being sent to the intended Gatsby site/endpoint.","If secrets intentionally differ per environment, update pluginOptions.secret for the environment receiving the webhook."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e85d62f1779e353eaac1753211629a26d123e26c","analyzedAt":"2026-08-26T17:50:09.662Z","contentChangedAt":"2026-08-26T17:50:09.662Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}