diff --git a/frappe/public/js/telemetry/index.js b/frappe/public/js/telemetry/index.js index f7e2c9646a..48afaa5258 100644 --- a/frappe/public/js/telemetry/index.js +++ b/frappe/public/js/telemetry/index.js @@ -6,6 +6,7 @@ class TelemetryManager { this.project_id = frappe.boot.posthog_project_id; this.telemetry_host = frappe.boot.posthog_host; + this.site_age = frappe.boot.telemetry_site_age; if (cint(frappe.boot.enable_telemetry) && this.project_id && this.telemetry_host) { this.enabled = true; @@ -24,6 +25,7 @@ class TelemetryManager { }); posthog.identify(frappe.boot.sitename); this.send_heartbeat(); + this.register_pageview_handler(); } catch (e) { console.trace("Failed to initialize telemetry", e); this.enabled = false; @@ -50,6 +52,16 @@ class TelemetryManager { this.capture("heartbeat", "frappe"); } } + + register_pageview_handler() { + if (this.site_age && this.site_age > 5) { + return; + } + + frappe.router.on("change", () => { + posthog.capture("$pageview"); + }); + } } frappe.telemetry = new TelemetryManager(); diff --git a/frappe/utils/telemetry.py b/frappe/utils/telemetry.py index b5bc13dd57..ba06afbf83 100644 --- a/frappe/utils/telemetry.py +++ b/frappe/utils/telemetry.py @@ -8,6 +8,8 @@ from contextlib import suppress from posthog import Posthog import frappe +from frappe.utils import getdate +from frappe.utils.caching import site_cache POSTHOG_PROJECT_FIELD = "posthog_project_id" POSTHOG_HOST_FIELD = "posthog_host" @@ -20,6 +22,16 @@ def add_bootinfo(bootinfo): bootinfo.posthog_host = frappe.conf.get(POSTHOG_HOST_FIELD) bootinfo.posthog_project_id = frappe.conf.get(POSTHOG_PROJECT_FIELD) bootinfo.enable_telemetry = True + bootinfo.telemetry_site_age = site_age() + + +@site_cache(ttl=60 * 60 * 12) +def site_age(): + try: + est_creation = frappe.db.get_value("User", "Administrator", "creation") + return (getdate() - getdate(est_creation)).days + except Exception: + pass def init_telemetry():