diff --git a/apps/calendar/apps/landing/src/layouts/Layout.astro b/apps/calendar/apps/landing/src/layouts/Layout.astro index 797509b80..d36cd01d2 100644 --- a/apps/calendar/apps/landing/src/layouts/Layout.astro +++ b/apps/calendar/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title?: string; @@ -52,5 +53,6 @@ const { + diff --git a/apps/chat/apps/landing/src/layouts/Layout.astro b/apps/chat/apps/landing/src/layouts/Layout.astro index 0713f2059..340cc6ffc 100644 --- a/apps/chat/apps/landing/src/layouts/Layout.astro +++ b/apps/chat/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title: string; @@ -57,5 +58,6 @@ const { + diff --git a/apps/clock/apps/landing/src/layouts/Layout.astro b/apps/clock/apps/landing/src/layouts/Layout.astro index 43a5b8656..07eb3c096 100644 --- a/apps/clock/apps/landing/src/layouts/Layout.astro +++ b/apps/clock/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title?: string; @@ -52,5 +53,6 @@ const { + diff --git a/apps/manacore/apps/landing/src/layouts/Layout.astro b/apps/manacore/apps/landing/src/layouts/Layout.astro index edf45fd7b..ad47b6edc 100644 --- a/apps/manacore/apps/landing/src/layouts/Layout.astro +++ b/apps/manacore/apps/landing/src/layouts/Layout.astro @@ -1,6 +1,7 @@ --- import AlternateLinks from '../components/seo/AlternateLinks.astro'; import Sidebar from '../components/navigation/Sidebar.astro'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; import { getLangFromUrl } from '../lib/i18n/config'; export interface Props { @@ -138,6 +139,7 @@ const lang = getLangFromUrl(Astro.url); + diff --git a/apps/manadeck/apps/landing/src/layouts/Layout.astro b/apps/manadeck/apps/landing/src/layouts/Layout.astro index 340db97e9..6ed030237 100644 --- a/apps/manadeck/apps/landing/src/layouts/Layout.astro +++ b/apps/manadeck/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title: string; @@ -57,5 +58,6 @@ const { + diff --git a/apps/mukke/apps/landing/src/layouts/Layout.astro b/apps/mukke/apps/landing/src/layouts/Layout.astro index f506ec3bc..93b5ea176 100644 --- a/apps/mukke/apps/landing/src/layouts/Layout.astro +++ b/apps/mukke/apps/landing/src/layouts/Layout.astro @@ -1,4 +1,6 @@ --- +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; + interface Props { title: string; } @@ -54,5 +56,6 @@ const { title } = Astro.props; + diff --git a/apps/nutriphi/apps/landing/src/layouts/Layout.astro b/apps/nutriphi/apps/landing/src/layouts/Layout.astro index b4ab7fbe3..fef222960 100644 --- a/apps/nutriphi/apps/landing/src/layouts/Layout.astro +++ b/apps/nutriphi/apps/landing/src/layouts/Layout.astro @@ -1,4 +1,6 @@ --- +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; + interface Props { title: string; description?: string; @@ -38,6 +40,7 @@ const { title, description = 'NutriPhi - KI-gestützte Ernährungsanalyse per Fo + diff --git a/apps/picture/apps/landing/src/layouts/Layout.astro b/apps/picture/apps/landing/src/layouts/Layout.astro index 56212faee..bc29cf339 100644 --- a/apps/picture/apps/landing/src/layouts/Layout.astro +++ b/apps/picture/apps/landing/src/layouts/Layout.astro @@ -3,6 +3,7 @@ import '../styles/global.css'; // import { HeadHrefLangs } from 'astro-i18next/components'; import { t } from '../i18n'; import LanguageSwitcher from '@components/LanguageSwitcher.astro'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title?: string; @@ -55,6 +56,7 @@ const { + diff --git a/apps/presi/apps/landing/src/layouts/Layout.astro b/apps/presi/apps/landing/src/layouts/Layout.astro index 3db96e131..233340144 100644 --- a/apps/presi/apps/landing/src/layouts/Layout.astro +++ b/apps/presi/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title: string; @@ -57,5 +58,6 @@ const { + diff --git a/apps/todo/apps/landing/src/layouts/Layout.astro b/apps/todo/apps/landing/src/layouts/Layout.astro index 3099b15d6..cf1ef0a38 100644 --- a/apps/todo/apps/landing/src/layouts/Layout.astro +++ b/apps/todo/apps/landing/src/layouts/Layout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; interface Props { title?: string; @@ -52,5 +53,6 @@ const { + diff --git a/docs/ANALYTICS.md b/docs/ANALYTICS.md index a380db295..0b9b12fa3 100644 --- a/docs/ANALYTICS.md +++ b/docs/ANALYTICS.md @@ -88,6 +88,27 @@ Diese Events erfordern **keinen Code in den einzelnen Apps** — sie werden auto --- +## Landing Page Event Tracking + +Alle Landing Pages binden `` aus `@manacore/shared-landing-ui` ein. Das Script trackt automatisch: + +| Event | Wann | Data | +|-------|------|------| +| `cta_click` | Klick auf CTA-Button/Link | `{ location: 'hero' \| 'pricing' \| 'footer' \| ... }` | +| `pricing_viewed` | Pricing-Section wird sichtbar | - | +| `pricing_plan_selected` | Klick auf Pricing-Plan CTA | `{ plan: 'free' \| 'pro' \| ... }` | + +**Auto-Detection:** Das Script erkennt die Section automatisch aus `id`-Attributen oder der Position im DOM (erster/letzter Abschnitt). + +**Explizite Attribute (optional):** +```html +Jetzt starten +Pro starten +
...
+``` + +--- + ## Custom Event Tracking ### Installation diff --git a/packages/shared-landing-ui/src/atoms/Analytics.astro b/packages/shared-landing-ui/src/atoms/Analytics.astro new file mode 100644 index 000000000..45e568dc6 --- /dev/null +++ b/packages/shared-landing-ui/src/atoms/Analytics.astro @@ -0,0 +1,112 @@ +--- +/** + * Landing Page Analytics + * + * Add this component before in your Layout.astro to automatically + * track CTA clicks and pricing section views via Umami. + * + * Works automatically with two approaches: + * + * 1. **Auto-detection** (zero config): Tracks all and