diff --git a/app/client/src/ce/utils/analyticsUtilTypes.ts b/app/client/src/ce/utils/analyticsUtilTypes.ts index 9bb8ea464f57..ede9702143ea 100644 --- a/app/client/src/ce/utils/analyticsUtilTypes.ts +++ b/app/client/src/ce/utils/analyticsUtilTypes.ts @@ -351,7 +351,8 @@ export type EventName = | "EDITOR_MODE_CHANGE" | BUILDING_BLOCKS_EVENTS | "VISIT_SELF_HOST_DOCS" - | "CANVAS_HOVER"; + | "CANVAS_HOVER" + | "MALFORMED_USAGE_PULSE"; type HOMEPAGE_CREATE_APP_FROM_TEMPLATE_EVENTS = | "TEMPLATE_DROPDOWN_CLICK" diff --git a/app/client/src/usagePulse/utils.ts b/app/client/src/usagePulse/utils.ts index 9d058e314bad..29ed44891a5a 100644 --- a/app/client/src/usagePulse/utils.ts +++ b/app/client/src/usagePulse/utils.ts @@ -6,6 +6,7 @@ import { getAppMode } from "ee/selectors/entitiesSelector"; import store from "store"; import AnalyticsUtil from "ee/utils/AnalyticsUtil"; import { FALLBACK_KEY } from "ee/constants/UsagePulse"; +import { getInstanceId } from "ee/selectors/tenantSelectors"; //TODO (Dipyaman): We should return a promise that will get resolved only on success or rejected after the retries export const fetchWithRetry = (config: { @@ -16,6 +17,9 @@ export const fetchWithRetry = (config: { retries: number; retryTimeout: number; }) => { + const instanceId = getInstanceId(store.getState()); + const anonymousUserId = AnalyticsUtil.getAnonymousId(); + fetch(config.url, { method: "POST", credentials: "same-origin", @@ -36,6 +40,12 @@ export const fetchWithRetry = (config: { retries: config.retries - 1, retryTimeout: config.retryTimeout, }); + } else { + // add analytics for failed usage pulse + AnalyticsUtil.logEvent("MALFORMED_USAGE_PULSE", { + anonymousUserId, + instanceId, + }); } }); };