{"record":{"id":"7c4cccc7108adb8d","repo":"RocketChat/Rocket.Chat","slug":"trigger-is-not-enabled","errorCode":null,"errorMessage":"Trigger is not enabled","messagePattern":"Trigger is not enabled","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"apps/meteor/server/lib/integrations/lib/triggerHandler.ts","lineNumber":502,"sourceCode":"\t\tfor (const url of trigger.urls) {\n\t\t\tawait this.executeTriggerUrl(url, trigger, argObject, 0);\n\t\t}\n\t}\n\n\t// Ensure that any errors thrown by the script engine will contibue to be compatible with Meteor.Error\n\tasync wrapScriptEngineCall(getter: () => Promise<any>) {\n\t\treturn wrapExceptions(getter).catch((error) => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new Meteor.Error(error.message);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t});\n\t}\n\n\tasync executeTriggerUrl(url: string, trigger: IOutgoingIntegration, { event, message, room, owner, user }: ArgumentsObject, tries = 0) {\n\t\tif (!this.isTriggerEnabled(trigger)) {\n\t\t\toutgoingLogger.warn({ msg: 'Trigger is not enabled', triggerName: trigger.name, tries });\n\t\t\treturn;\n\t\t}\n\n\t\toutgoingLogger.debug({ msg: 'Starting to execute trigger', triggerName: trigger.name, triggerId: trigger._id });\n\n\t\tlet word;\n\t\t// Not all triggers/events support triggerWords\n\t\tif (event && outgoingEvents[event].use.triggerWords) {\n\t\t\tif (trigger.triggerWords && trigger.triggerWords.length > 0) {\n\t\t\t\tfor (const triggerWord of trigger.triggerWords) {\n\t\t\t\t\tif (!trigger.triggerWordAnywhere && message?.msg.indexOf(triggerWord) === 0) {\n\t\t\t\t\t\tword = triggerWord;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (trigger.triggerWordAnywhere && message?.msg.includes(triggerWord)) {\n\t\t\t\t\t\tword = triggerWord;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}","sourceCodeStart":484,"sourceCodeEnd":520,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/server/lib/integrations/lib/triggerHandler.ts#L484-L520","documentation":"Before each HTTP delivery (including scheduled retries), executeTriggerUrl calls isTriggerEnabled, which looks the integration up in the in-memory trigger registry and returns its enabled flag. If the integration is absent from the registry or enabled is false, delivery is skipped with this warn. Integrations are auto-disabled when their endpoint answers 410 Gone.","triggerScenarios":"An admin disabled the integration between the trigger match and the delivery; a previous delivery received 410 and the integration was auto-disabled (enabled: false) while a retry was still pending; the integration was deleted or not re-registered in the channel registry after a restart, so isTriggerEnabled finds nothing and returns false.","commonSituations":"retryFailedCalls retries firing after a 410 auto-disable; leftover setTimeout retries from earlier executions skipping via this warn; multi-instance deployments where the in-memory registry diverges from the database.","solutions":["Check Administration -> Integrations and re-enable the integration if it was disabled","Inspect the integration History for a 410 (Gone) response - returning 410 tells Rocket.Chat to disable the integration permanently, so fix the endpoint to stop returning it","Confirm the integration still exists and is registered (re-save it or restart to rebuild the trigger registry)","Treat late retries logging this warn as cleanup noise - the pending setTimeout callbacks are correctly skipping"],"exampleFix":"# after a 410 auto-disable, re-enable via REST\ncurl -H \"X-Auth-Token: $TOKEN\" -H \"X-User-Id: $UID\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PUT http://localhost:3000/api/v1/integrations.update \\\n  -d '{\"integration\": {\"_id\": \"INTEGRATION_ID\", \"enabled\": true}}'","handlingStrategy":"retry","validationCode":"const state = await fetch('/api/v1/integrations.get?integrationId=...').then((r) => r.json());\nif (!state.integration?.enabled) {\n  // re-enable (admin UI or integrations.update), fix any 410-returning endpoint, then replay the event from the History page\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never return 410 from integration endpoints unless you want the integration auto-disabled","After re-enabling or editing an integration, send a test event from the History page","Remember retries execute against the in-memory registry - restarts clear pending schedules"],"tags":["integrations","outgoing-webhook","enabled-state","retries"],"backgroundTag":"integration-disabled","analyzedSha":"b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0","analyzedAt":"2026-08-18T15:26:39.429Z","contentChangedAt":"2026-08-18T15:26:39.429Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}