From afb1b3b03660c445627b941a5427299139553cb3 Mon Sep 17 00:00:00 2001 From: Abi Raja Date: Tue, 5 Dec 2023 11:42:59 -0500 Subject: [PATCH] track email conversion rates with plausible --- frontend/src/App.tsx | 7 ++----- frontend/src/components/TermsOfServiceDialog.tsx | 2 ++ frontend/src/lib/analytics.ts | 7 +++++++ 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 frontend/src/lib/analytics.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index dfadbbe..b7b0482 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -29,6 +29,7 @@ import html2canvas from "html2canvas"; import { USER_CLOSE_WEB_SOCKET_CODE } from "./constants"; import CodeTab from "./components/CodeTab"; import OutputSettingsSection from "./components/OutputSettingsSection"; +import { addEvent } from "./lib/analytics"; function App() { const [appState, setAppState] = useState(AppState.INITIAL); @@ -83,11 +84,7 @@ function App() { }; const downloadCode = () => { - try { - window.plausible("Download"); - } catch { - // Ignore - } + addEvent("Download"); // Create a blob from the generated code const blob = new Blob([generatedCode], { type: "text/html" }); diff --git a/frontend/src/components/TermsOfServiceDialog.tsx b/frontend/src/components/TermsOfServiceDialog.tsx index ad46c0a..b349335 100644 --- a/frontend/src/components/TermsOfServiceDialog.tsx +++ b/frontend/src/components/TermsOfServiceDialog.tsx @@ -10,6 +10,7 @@ import { import { Input } from "./ui/input"; import toast from "react-hot-toast"; import { PICO_BACKEND_FORM_SECRET } from "../config"; +import { addEvent } from "../lib/analytics"; const LOGOS = ["microsoft", "amazon", "mit", "stanford", "bytedance", "baidu"]; @@ -81,6 +82,7 @@ const TermsOfServiceDialog: React.FC<{ e.preventDefault(); toast.error("Please enter your email"); } else { + addEvent("EmailSubmit"); onSubscribe(); } }} diff --git a/frontend/src/lib/analytics.ts b/frontend/src/lib/analytics.ts new file mode 100644 index 0000000..a1a7af4 --- /dev/null +++ b/frontend/src/lib/analytics.ts @@ -0,0 +1,7 @@ +export function addEvent(eventName: string) { + try { + window.plausible(eventName); + } catch (e) { + // silently fail in non-production environments + } +}