diff --git a/packages/editor-ui/src/components/RunData.vue b/packages/editor-ui/src/components/RunData.vue index e68542a4cd..8082dac5d8 100644 --- a/packages/editor-ui/src/components/RunData.vue +++ b/packages/editor-ui/src/components/RunData.vue @@ -598,6 +598,7 @@ import { useToast } from '@/composables/useToast'; import { isEqual, isObject } from 'lodash-es'; import { useExternalHooks } from '@/composables/useExternalHooks'; import { useSourceControlStore } from '@/stores/sourceControl.store'; +import { useRootStore } from '@/stores/n8nRoot.store'; import RunDataPinButton from '@/components/RunDataPinButton.vue'; const RunDataTable = defineAsyncComponent( @@ -738,12 +739,38 @@ export default defineComponent({ this.setDisplayMode(); this.activatePane(); } + + if (this.hasRunError) { + const error = this.workflowRunData?.[this.node.name]?.[this.runIndex]?.error; + const errorsToTrack = ['unknown error']; + + if (error && errorsToTrack.some((e) => error.message.toLowerCase().includes(e))) { + this.$telemetry.track( + `User encountered an error: "${error.message}"`, + { + node: this.node.type, + errorMessage: error.message, + nodeVersion: this.node.typeVersion, + n8nVersion: this.rootStore.versionCli, + }, + { + withPostHog: true, + }, + ); + } + } }, beforeUnmount() { this.hidePinDataDiscoveryTooltip(); }, computed: { - ...mapStores(useNodeTypesStore, useNDVStore, useWorkflowsStore, useSourceControlStore), + ...mapStores( + useNodeTypesStore, + useNDVStore, + useWorkflowsStore, + useSourceControlStore, + useRootStore, + ), isReadOnlyRoute() { return this.$route?.meta?.readOnlyCanvas === true; },