feat: simple analitycs (#6683)
* Simple analytics for iframe and webpage * added logic for tracking specific categories of events to reduce it * enviroment vars clean up * fix: lint for index.html
This commit is contained in:
parent
7f7128ec09
commit
0aa1e66486
@ -20,14 +20,10 @@ REACT_APP_DEV_ENABLE_SW=
|
|||||||
# whether to disable live reload / HMR. Usuaully what you want to do when
|
# whether to disable live reload / HMR. Usuaully what you want to do when
|
||||||
# debugging Service Workers.
|
# debugging Service Workers.
|
||||||
REACT_APP_DEV_DISABLE_LIVE_RELOAD=
|
REACT_APP_DEV_DISABLE_LIVE_RELOAD=
|
||||||
|
REACT_APP_DISABLE_TRACKING=true
|
||||||
|
|
||||||
FAST_REFRESH=false
|
FAST_REFRESH=false
|
||||||
|
|
||||||
# MATOMO
|
|
||||||
REACT_APP_MATOMO_URL=
|
|
||||||
REACT_APP_CDN_MATOMO_TRACKER_URL=
|
|
||||||
REACT_APP_MATOMO_SITE_ID=
|
|
||||||
|
|
||||||
#Debug flags
|
#Debug flags
|
||||||
|
|
||||||
# To enable bounding box for text containers
|
# To enable bounding box for text containers
|
||||||
|
@ -11,14 +11,5 @@ REACT_APP_WS_SERVER_URL=
|
|||||||
|
|
||||||
REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}'
|
REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}'
|
||||||
|
|
||||||
# production-only vars
|
|
||||||
# GOOGLE ANALYTICS
|
|
||||||
REACT_APP_GOOGLE_ANALYTICS_ID=UA-387204-13
|
|
||||||
# MATOMO
|
|
||||||
REACT_APP_MATOMO_URL=https://excalidraw.matomo.cloud/
|
|
||||||
REACT_APP_CDN_MATOMO_TRACKER_URL=//cdn.matomo.cloud/excalidraw.matomo.cloud/matomo.js
|
|
||||||
REACT_APP_MATOMO_SITE_ID=1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
REACT_APP_PLUS_APP=https://app.excalidraw.com
|
REACT_APP_PLUS_APP=https://app.excalidraw.com
|
||||||
|
REACT_APP_DISABLE_TRACKING=
|
||||||
|
@ -148,33 +148,6 @@
|
|||||||
// setting this so that libraries installation reuses this window tab.
|
// setting this so that libraries installation reuses this window tab.
|
||||||
window.name = "_excalidraw";
|
window.name = "_excalidraw";
|
||||||
</script>
|
</script>
|
||||||
<% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true') { %>
|
|
||||||
|
|
||||||
<!-- Fathom - privacy-friendly analytics -->
|
|
||||||
<script
|
|
||||||
src="https://cdn.usefathom.com/script.js"
|
|
||||||
data-site="VMSBUEYA"
|
|
||||||
defer
|
|
||||||
></script>
|
|
||||||
<!-- / Fathom -->
|
|
||||||
|
|
||||||
<!-- LEGACY GOOGLE ANALYTICS -->
|
|
||||||
<% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
|
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="https://www.googletagmanager.com/gtag/js?id=%REACT_APP_GOOGLE_ANALYTICS_ID%"
|
|
||||||
></script>
|
|
||||||
<script>
|
|
||||||
window.dataLayer = window.dataLayer || [];
|
|
||||||
function gtag() {
|
|
||||||
dataLayer.push(arguments);
|
|
||||||
}
|
|
||||||
gtag("js", new Date());
|
|
||||||
gtag("config", "%REACT_APP_GOOGLE_ANALYTICS_ID%");
|
|
||||||
</script>
|
|
||||||
<% } %>
|
|
||||||
<!-- end LEGACY GOOGLE ANALYTICS -->
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<!-- FIXME: remove this when we update CRA (fix SW caching) -->
|
<!-- FIXME: remove this when we update CRA (fix SW caching) -->
|
||||||
<style>
|
<style>
|
||||||
@ -227,17 +200,39 @@
|
|||||||
<h1 class="visually-hidden">Excalidraw</h1>
|
<h1 class="visually-hidden">Excalidraw</h1>
|
||||||
</header>
|
</header>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
<% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true') { %>
|
||||||
<!-- 100% privacy friendly analytics -->
|
<!-- 100% privacy friendly analytics -->
|
||||||
<script
|
<script>
|
||||||
async
|
// need to load this script dynamically bcs. of iframe embed tracking
|
||||||
defer
|
var scriptEle = document.createElement("script");
|
||||||
src="https://scripts.simpleanalyticscdn.com/latest.js"
|
scriptEle.setAttribute(
|
||||||
></script>
|
"src",
|
||||||
<noscript
|
"https://scripts.simpleanalyticscdn.com/latest.js",
|
||||||
><img
|
);
|
||||||
src="https://queue.simpleanalyticscdn.com/noscript.gif"
|
scriptEle.setAttribute("type", "text/javascript");
|
||||||
alt=""
|
scriptEle.setAttribute("defer", true);
|
||||||
referrerpolicy="no-referrer-when-downgrade"
|
scriptEle.setAttribute("async", true);
|
||||||
/></noscript>
|
// if iframe
|
||||||
|
if (window.self !== window.top) {
|
||||||
|
scriptEle.setAttribute("data-auto-collect", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.appendChild(scriptEle);
|
||||||
|
|
||||||
|
// if iframe
|
||||||
|
if (window.self !== window.top) {
|
||||||
|
scriptEle.addEventListener("load", () => {
|
||||||
|
if (window.sa_pageview) {
|
||||||
|
window.window.sa_event(action, {
|
||||||
|
category: "iframe",
|
||||||
|
label: "embed",
|
||||||
|
value: window.location.pathname,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<!-- end LEGACY GOOGLE ANALYTICS -->
|
||||||
|
<% } %>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -5,6 +5,9 @@ export const trackEvent = (
|
|||||||
value?: number,
|
value?: number,
|
||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
|
// place here categories that you want to track as events
|
||||||
|
// KEEP IN MIND THE PRICING
|
||||||
|
const ALLOWED_CATEGORIES_TO_TRACK = [] as string[];
|
||||||
// Uncomment the next line to track locally
|
// Uncomment the next line to track locally
|
||||||
// console.log("Track Event", { category, action, label, value });
|
// console.log("Track Event", { category, action, label, value });
|
||||||
|
|
||||||
@ -12,12 +15,8 @@ export const trackEvent = (
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID && window.gtag) {
|
if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {
|
||||||
window.gtag("event", action, {
|
return;
|
||||||
event_category: category,
|
|
||||||
event_label: label,
|
|
||||||
value,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.sa_event) {
|
if (window.sa_event) {
|
||||||
@ -27,14 +26,6 @@ export const trackEvent = (
|
|||||||
value,
|
value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.fathom) {
|
|
||||||
window.fathom.trackEvent(action, {
|
|
||||||
category,
|
|
||||||
label,
|
|
||||||
value,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("error during analytics", error);
|
console.error("error during analytics", error);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user