From 9f1341e94eb21be3b6362b2dea7942e3c11ed000 Mon Sep 17 00:00:00 2001 From: Peer Richelsen Date: Sat, 22 Oct 2022 10:39:36 +0100 Subject: [PATCH] added ga4 google analytics (#5126) * added ga4 google analytics * added ga4 script as TODO * get analytics app working * Remove stale comment * Fix types Co-authored-by: Hariom Balhara --- packages/app-store/BookingPageTagManager.tsx | 37 ++++++++------- packages/app-store/apps.browser.generated.tsx | 1 + packages/app-store/apps.metadata.generated.ts | 2 + packages/app-store/apps.schemas.generated.ts | 2 + packages/app-store/apps.server.generated.ts | 1 + packages/app-store/eventTypeAnalytics.ts | 42 ++++++++++++++++++ .../fathom/extensions/EventTypeAppCard.tsx | 5 +-- packages/app-store/ga4/README.mdx | 14 ++++++ packages/app-store/ga4/_metadata.ts | 10 +++++ packages/app-store/ga4/api/add.ts | 17 +++++++ packages/app-store/ga4/api/index.ts | 1 + packages/app-store/ga4/components/.gitkeep | 0 packages/app-store/ga4/config.json | 16 +++++++ .../ga4/extensions/EventTypeAppCard.tsx | 38 ++++++++++++++++ packages/app-store/ga4/index.ts | 2 + packages/app-store/ga4/package.json | 14 ++++++ packages/app-store/ga4/static/1.jpeg | Bin 0 -> 56669 bytes packages/app-store/ga4/static/2.jpeg | Bin 0 -> 41517 bytes packages/app-store/ga4/static/3.jpeg | Bin 0 -> 99907 bytes packages/app-store/ga4/static/4.jpeg | Bin 0 -> 79332 bytes packages/app-store/ga4/static/5.jpeg | Bin 0 -> 82581 bytes packages/app-store/ga4/static/icon.svg | 35 +++++++++++++++ packages/app-store/ga4/zod.ts | 9 ++++ packages/prisma/seed-app-store.config.json | 6 +++ 24 files changed, 233 insertions(+), 19 deletions(-) create mode 100644 packages/app-store/eventTypeAnalytics.ts create mode 100644 packages/app-store/ga4/README.mdx create mode 100644 packages/app-store/ga4/_metadata.ts create mode 100644 packages/app-store/ga4/api/add.ts create mode 100644 packages/app-store/ga4/api/index.ts create mode 100644 packages/app-store/ga4/components/.gitkeep create mode 100644 packages/app-store/ga4/config.json create mode 100644 packages/app-store/ga4/extensions/EventTypeAppCard.tsx create mode 100644 packages/app-store/ga4/index.ts create mode 100644 packages/app-store/ga4/package.json create mode 100644 packages/app-store/ga4/static/1.jpeg create mode 100644 packages/app-store/ga4/static/2.jpeg create mode 100644 packages/app-store/ga4/static/3.jpeg create mode 100644 packages/app-store/ga4/static/4.jpeg create mode 100644 packages/app-store/ga4/static/5.jpeg create mode 100644 packages/app-store/ga4/static/icon.svg create mode 100644 packages/app-store/ga4/zod.ts diff --git a/packages/app-store/BookingPageTagManager.tsx b/packages/app-store/BookingPageTagManager.tsx index 3fc9940efe..e2eb311726 100644 --- a/packages/app-store/BookingPageTagManager.tsx +++ b/packages/app-store/BookingPageTagManager.tsx @@ -1,35 +1,40 @@ import Script from "next/script"; import { getEventTypeAppData } from "@calcom/app-store/utils"; +import { trackingApps } from "./eventTypeAnalytics"; -// TODO: Maintain it from config.json maybe -const trackingApps: Record> = { - fathom: { - src: "https://cdn.usefathom.com/script.js", - "data-site": "{TRACKING_ID}", - }, -}; +export type AppScript = {attrs?: Record} & ({src: undefined, content?: string} | {src?: string, content:undefined}) export default function BookingPageTagManager({ eventType, }: { eventType: Parameters[0]; }) { + + return ( <> {Object.entries(trackingApps).map(([appId, scriptConfig]) => { - const trackingId = getEventTypeAppData(eventType, "fathom")?.trackingId; + const trackingId = getEventTypeAppData(eventType, appId as keyof typeof trackingApps)?.trackingId; if (!trackingId) { return null; } - const parsedScriptConfig: Record = {}; - Object.entries(scriptConfig).forEach(([name, value]) => { - if (typeof value === "string") { - value = value.replace("{TRACKING_ID}", trackingId); - } - parsedScriptConfig[name] = value; - }); - return