feat(analytics): add automatic CTA tracking to all 10 landing pages

Create Analytics.astro component in @manacore/shared-landing-ui that
automatically tracks CTA clicks and pricing section views via Umami.

The component uses event delegation and auto-detection of section
context (hero/pricing/footer) from section IDs or DOM position,
requiring zero changes to existing landing page content.

Tracked events: cta_click (with location), pricing_viewed,
pricing_plan_selected (with plan name)

Added to all 10 landing page Layout.astro files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-22 19:13:24 +01:00
parent 420926aef1
commit 287bbed86e
12 changed files with 155 additions and 0 deletions

View file

@ -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 {
</head>
<body class="antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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 {
</head>
<body class="min-h-screen bg-background-page text-text-primary antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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 {
</head>
<body class="antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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);
<!-- FAB Sidebar Navigation -->
<Sidebar />
<Analytics />
</body>
</html>

View file

@ -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 {
</head>
<body class="min-h-screen bg-background-page text-text-primary antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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;
</head>
<body>
<slot />
<Analytics />
</body>
</html>

View file

@ -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
</head>
<body class="bg-[#0F1F0F] text-gray-100 antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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 {
</div>
<slot />
<Analytics />
</body>
</html>

View file

@ -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 {
</head>
<body class="min-h-screen bg-background-page text-text-primary antialiased">
<slot />
<Analytics />
</body>
</html>

View file

@ -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 {
</head>
<body class="antialiased">
<slot />
<Analytics />
</body>
</html>