diff --git a/packages/editor-ui/src/plugins/telemetry/index.ts b/packages/editor-ui/src/plugins/telemetry/index.ts index 295ea7a0061dd..1d8407092deac 100644 --- a/packages/editor-ui/src/plugins/telemetry/index.ts +++ b/packages/editor-ui/src/plugins/telemetry/index.ts @@ -1,5 +1,10 @@ import type { Plugin } from 'vue'; -import type { ITelemetrySettings, ITelemetryTrackProperties, IDataObject } from 'n8n-workflow'; +import type { + ITelemetrySettings, + ITelemetryTrackProperties, + IDataObject, + Integrations, +} from 'n8n-workflow'; import type { RouteLocation } from 'vue-router'; import type { INodeCreateElement, IUpdateInformation } from '@/Interface'; @@ -79,7 +84,7 @@ export class Telemetry { } } - track(event: string, properties?: ITelemetryTrackProperties) { + track(event: string, properties?: ITelemetryTrackProperties, integrations: Integrations = {}) { if (!this.rudderStack) return; const updatedProperties = { @@ -87,7 +92,9 @@ export class Telemetry { version_cli: useRootStore().versionCli, }; - this.rudderStack.track(event, updatedProperties); + this.rudderStack.track(event, updatedProperties, { + integrations: { PostHog: false, ...integrations }, + }); } page(route: Route) { @@ -187,7 +194,7 @@ export class Telemetry { this.track('User viewed node category', properties); break; case 'nodeView.addNodeButton': - this.track('User added node to workflow canvas', properties); + this.track('User added node to workflow canvas', properties, { PostHog: true }); break; case 'nodeView.addSticky': this.track('User inserted workflow note', properties); diff --git a/packages/editor-ui/src/stores/posthog.store.ts b/packages/editor-ui/src/stores/posthog.store.ts index 5bc219f0f1edf..b8793eeac2b65 100644 --- a/packages/editor-ui/src/stores/posthog.store.ts +++ b/packages/editor-ui/src/stores/posthog.store.ts @@ -153,10 +153,14 @@ export const usePostHog = defineStore('posthog', () => { return; } - telemetryStore.track(EVENTS.IS_PART_OF_EXPERIMENT, { - name, - variant, - }); + telemetryStore.track( + EVENTS.IS_PART_OF_EXPERIMENT, + { + name, + variant, + }, + { PostHog: true }, + ); trackedDemoExp.value[name] = variant; }; diff --git a/packages/editor-ui/src/stores/telemetry.store.ts b/packages/editor-ui/src/stores/telemetry.store.ts index ed3b68bbf01f4..9f67e2e523456 100644 --- a/packages/editor-ui/src/stores/telemetry.store.ts +++ b/packages/editor-ui/src/stores/telemetry.store.ts @@ -1,5 +1,5 @@ import type { Telemetry } from '@/plugins/telemetry'; -import type { ITelemetryTrackProperties } from 'n8n-workflow'; +import type { ITelemetryTrackProperties, Integrations } from 'n8n-workflow'; import { defineStore } from 'pinia'; import type { Ref } from 'vue'; import { ref } from 'vue'; @@ -11,8 +11,12 @@ export const useTelemetryStore = defineStore('telemetry', () => { telemetry.value = tel; }; - const track = (event: string, properties?: ITelemetryTrackProperties) => { - telemetry.value?.track(event, properties); + const track = ( + event: string, + properties?: ITelemetryTrackProperties, + integrations: Integrations = {}, + ) => { + telemetry.value?.track(event, properties, integrations); }; return { diff --git a/packages/editor-ui/src/views/TemplatesCollectionView.vue b/packages/editor-ui/src/views/TemplatesCollectionView.vue index 45acfe26260de..50a33d0369c5c 100644 --- a/packages/editor-ui/src/views/TemplatesCollectionView.vue +++ b/packages/editor-ui/src/views/TemplatesCollectionView.vue @@ -122,7 +122,7 @@ export default defineComponent({ source: 'collection', }; void this.$externalHooks().run('templatesCollectionView.onUseWorkflow', telemetryPayload); - this.$telemetry.track('User inserted workflow template', telemetryPayload); + this.$telemetry.track('User inserted workflow template', telemetryPayload, { PostHog: true }); this.navigateTo(event, VIEWS.TEMPLATE_IMPORT, id); }, diff --git a/packages/editor-ui/src/views/TemplatesWorkflowView.vue b/packages/editor-ui/src/views/TemplatesWorkflowView.vue index cb45aa60e720b..978aedc446c9c 100644 --- a/packages/editor-ui/src/views/TemplatesWorkflowView.vue +++ b/packages/editor-ui/src/views/TemplatesWorkflowView.vue @@ -101,7 +101,7 @@ export default defineComponent({ }; void this.$externalHooks().run('templatesWorkflowView.openWorkflow', telemetryPayload); - this.$telemetry.track('User inserted workflow template', telemetryPayload); + this.$telemetry.track('User inserted workflow template', telemetryPayload, { PostHog: true }); if (e.metaKey || e.ctrlKey) { const route = this.$router.resolve({ name: VIEWS.TEMPLATE_IMPORT, params: { id } }); diff --git a/packages/workflow/src/Interfaces.ts b/packages/workflow/src/Interfaces.ts index c5cec473a257d..17377e3a1d2f9 100644 --- a/packages/workflow/src/Interfaces.ts +++ b/packages/workflow/src/Interfaces.ts @@ -1889,6 +1889,8 @@ export interface ITelemetryTrackProperties { [key: string]: GenericValue; } +export type Integrations = Record<'PostHog', boolean> | {}; + export interface INodesGraph { node_types: string[]; node_connections: IDataObject[];