1<!DOCTYPE html> 2<html lang="de"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <meta name="csrf-token" content="fEMpKXy6pgLqC3UGoJnEyJK2DDPPU7mghu0RX67n"> 8 9 <title>Ãber uns â Wir machen Meetings einfach | Meeting Metrics</title> 10<meta name="title" content="Ãber uns â Wir machen Meetings einfach | Meeting Metrics"> 11<meta name="description" content="Meeting Metrics entstand 2025 in St. Gallen: ein Schweizer Produkt, das Meetings dokumentiert, damit Menschen zuhören, diskutieren und entscheiden können."> 12<meta name="robots" content="index, follow, max-image-preview:large"> 13<meta name="author" content="Meeting Metrics"> 14 15 16<link rel="canonical" href="https://meetingmetrics.ai/about"> 17 18 19<meta property="og:type" content="website"> 20<meta property="og:url" content="https://meetingmetrics.ai/about"> 21<meta property="og:title" content="Ãber uns â Wir machen Meetings einfach"> 22<meta property="og:description" content="Meeting Metrics entstand 2025 in St. Gallen: ein Schweizer Produkt, das Meetings dokumentiert, damit Menschen zuhören, diskutieren und entscheiden können."> 23<meta property="og:image" content="https://meetingmetrics.ai/img/social/about.jpg?v=1791189424"> 24<meta property="og:image:alt" content="Ãber uns â Wir machen Meetings einfach"> 25<meta property="og:image:width" content="2400"> 26<meta property="og:image:height" content="1260"> 27<meta property="og:site_name" content="Meeting Metrics"> 28<meta property="og:locale" content="de_CH"> 29 30 31 32<meta name="twitter:card" content="summary_large_image"> 33<meta name="twitter:url" content="https://meetingmetrics.ai/about"> 34<meta name="twitter:title" content="Ãber uns â Wir machen Meetings einfach"> 35<meta name="twitter:description" content="Meeting Metrics entstand 2025 in St. Gallen: ein Schweizer Produkt, das Meetings dokumentiert, damit Menschen zuhören, diskutieren und entscheiden können."> 36<meta name="twitter:image" content="https://meetingmetrics.ai/img/social/about.jpg?v=1791189424"> 37<meta name="twitter:image:alt" content="Ãber uns â Wir machen Meetings einfach"> 38 39 40 41 42
42<script type="application/ld+json"> 43 { 44 "@context": "https://schema.org", 45 "@type": "WebSite", 46 "name": "Meeting Metrics", 47 "url": "https://meetingmetrics.ai", 48 "description": "AI-powered meeting transcription and analysis platform", 49 "potentialAction": { 50 "@type": "SearchAction", 51 "target": { 52 "@type": "EntryPoint", 53 "urlTemplate": "https://meetingmetrics.ai/search?q={search_term_string}" 54 }, 55 "query-input": "required name=search_term_string" 56 } 57} 58 </script>
58 59 60 <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" /> 61 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 62 <link rel="shortcut icon" type="image/png" href="/favicon-96x96.png" /> 63 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 64 <meta name="apple-mobile-web-app-title" content="Meeting Metrics" /> 65 <link rel="manifest" href="/site.webmanifest" /> 66 67 <link rel="preload" href="/fonts/Geist-Variable.woff2" as="font" type="font/woff2" crossorigin> 68 <style> 69 @font-face { 70 font-family: 'Geist'; 71 src: url('/fonts/Geist-Variable.woff2') format('woff2-variations'), 72 url('/fonts/Geist-Variable.woff2') format('woff2'); 73 font-weight: 100 900; 74 font-style: normal; 75 font-display: swap; 76 } 77 </style> 78 79 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak="x-cloak"],[x-cloak=""] {display: none !important;}[wire\:cloak="wire:cloak"],[wire\:cloak=""] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 80 <link rel="preload" as="style" href="https://meetingmetrics.ai/build/assets/marketing-BcbtsHvm.css" /><link rel="preload" as="style" href="https://meetingmetrics.ai/build/assets/support-bubble-marketing-Bb_2VJ4w.css" /><link rel="preload" as="style" href="https://meetingmetrics.ai/build/assets/video-By-GZc4_.css" /><link rel="modulepreload" as="script" href="https://meetingmetrics.ai/build/assets/front-DxUwPoot.js" /><link rel="modulepreload" as="script" href="https://meetingmetrics.ai/build/assets/defineProperty-CeMuKtrr.js" /><link rel="modulepreload" as="script" href="https://meetingmetrics.ai/build/assets/video-BTzswQHM.js" /><link rel="modulepreload" as="script" href="https://meetingmetrics.ai/build/assets/marketing-DR9zUroA.js" /><link rel="modulepreload" as="script" href="https://meetingmetrics.ai/build/assets/preload-helper-Ckvhz6iY.js" /><link rel="stylesheet" href="https://meetingmetrics.ai/build/assets/marketing-BcbtsHvm.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://meetingmetrics.ai/build/assets/support-bubble-marketing-Bb_2VJ4w.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://meetingmetrics.ai/build/assets/video-By-GZc4_.css" data-navigate-track="reload" />
80<script type="module" src="https://meetingmetrics.ai/build/assets/front-DxUwPoot.js" data-navigate-track="reload"></script>
80<script type="module" src="https://meetingmetrics.ai/build/assets/marketing-DR9zUroA.js" data-navigate-track="reload"></script>
80 </head> 81 82<body class="marketing-site"> 83 84 <header 85 class="site-nav" 86 x-data="marketingNav({ isHome: false })" 87 @keydown.escape.window="mobileOpen = false; closeDesktop()"> 88 <div class="nav-desktop" @mouseleave="closeDesktopImmediate()"> 89 <div class="nav-inner container" x-ref="navInner"> 90 <div class="nav-primary"> 91 <a class="brand" href="https://meetingmetrics.ai" aria-label="Meeting Metrics â Startseite" @mouseenter="scheduleClose()"> 92 <img src="https://meetingmetrics.ai/img/logo.png" alt="Meeting Metrics" width="743" height="97"> 93 </a> 94 95 <div class="nav-dropdown-anchor" x-ref="dropdownAnchor" @mouseleave="scheduleClose()"> 96 <nav class="nav-links nav-links--dropdown" aria-label="Hauptnavigation"> 97 <button 98 type="button" 99 class="nav-trigger" 100 :class="{ 'is-open': desktopPanel === 'produkt', 'is-section-active': isProduktSectionActive() }" 101 :aria-expanded="desktopPanel === 'produkt'" 102 aria-haspopup="true" 103 @mouseenter="openPanel('produkt', $el)" 104 @focus="openPanel('produkt', $el)" 105 @click="desktopPanel === 'produkt' ? closeDesktop() : openPanel('produkt', $el)"> 106 Produkt 107 <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 108 </button> 109 110 <button 111 type="button" 112 class="nav-trigger" 113 :class="{ 'is-open': desktopPanel === 'use-cases' }" 114 :aria-expanded="desktopPanel === 'use-cases'" 115 aria-haspopup="true" 116 @mouseenter="openPanel('use-cases', $el)" 117 @focus="openPanel('use-cases', $el)" 118 @click="desktopPanel === 'use-cases' ? closeDesktop() : openPanel('use-cases', $el)"> 119 Use Cases 120 <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 121 </button> 122 123 <button 124 type="button" 125 class="nav-trigger" 126 :class="{ 'is-open': desktopPanel === 'resources' }" 127 :aria-expanded="desktopPanel === 'resources'" 128 aria-haspopup="true" 129 @mouseenter="openPanel('resources', $el)" 130 @focus="openPanel('resources', $el)" 131 @click="desktopPanel === 'resources' ? closeDesktop() : openPanel('resources', $el)"> 132 Ressourcen 133 <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 134 </button> 135 136 <a 137 class="nav-toplink" 138 href="https://meetingmetrics.ai#preise" 139 :class="{ 'is-current': isHome && activeHomeSection === 'preise' }" 140 @mouseenter="scheduleClose()">Preise</a> 141 142 <a class="nav-toplink" href="https://meetingmetrics.ai/apps" @mouseenter="scheduleClose()">Apps</a> 143 144 <a class="nav-toplink" href="https://meetingmetrics.ai/contact" @mouseenter="scheduleClose()">Kontakt</a> 145 </nav> 146 147 <div 148 class="nav-dropdown" 149 x-show="desktopPanel" 150 x-cloak 151 :class="{ 'is-ready': dropdownReady }" 152 :style="`left: ${dropdownLeft}px; width: ${dropdownWidth}px; --dropdown-target-width: ${dropdownWidth}px;`" 153 @mouseenter="cancelClose()"> 154 <div class="nav-dropdown-body"> 155 <div 156 class="nav-dropdown-panel" 157 x-ref="panel_produkt" 158 :class="{ 'is-active': desktopPanel === 'produkt' }" 159 :aria-hidden="desktopPanel !== 'produkt'"> 160 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#roi" :class="{ 'is-current': isHome && activeHomeSection === 'roi' }">
161 <span class="nav-dropdown-link-title">Die Rechnung</span> 162 <span class="nav-dropdown-link-desc">Was kostet dich Protokoll schreiben?</span> 163 </a> 164 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#produkt" :class="{ 'is-current': isHome && activeHomeSection === 'produkt' }"> 165 <span class="nav-dropdown-link-title">Das Produkt</span> 166 <span class="nav-dropdown-link-desc">Tour durch Transkript, Protokoll & Aufgaben</span> 167 </a> 168 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#funktionen" :class="{ 'is-current': isHome && activeHomeSection === 'funktionen' }"> 169 <span class="nav-dropdown-link-title">Funktionen</span> 170 <span class="nav-dropdown-link-desc">Templates, Sprechererkennung & Export</span> 171 </a> 172 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#fuer-wen" :class="{ 'is-current': isHome && activeHomeSection === 'fuer-wen' }"> 173 <span class="nav-dropdown-link-title">Für wen ist es?</span> 174 <span class="nav-dropdown-link-desc">Geschäftsführung, Treuhand & Teams</span> 175 </a> 176 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#datenhoheit" :class="{ 'is-current': isHome && activeHomeSection === 'datenhoheit' }"> 177 <span class="nav-dropdown-link-title">Schweizer Datenhoheit</span> 178 <span class="nav-dropdown-link-desc">Hosting & Verarbeitung in der Schweiz</span> 179 </a> 180 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#preise" :class="{ 'is-current': isHome && activeHomeSection === 'preise' }"> 181 <span class="nav-dropdown-link-title">Preise</span> 182 <span class="nav-dropdown-link-desc">Flexible Preispläne ab CHF 29 bei jährlicher Zahlung</span> 183 </a> 184 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#faq" :class="{ 'is-current': isHome && activeHomeSection === 'faq' }"> 185 <span class="nav-dropdown-link-title">FAQ</span> 186 <span class="nav-dropdown-link-desc">Häufige Fragen auf einen Blick</span> 187 </a> 188 <a class="nav-dropdown-link" href="https://meetingmetrics.ai#demo" :class="{ 'is-current': isHome && activeHomeSection === 'demo' }"> 189 <span class="nav-dropdown-link-title">Nächster Schritt</span> 190 <span class="nav-dropdown-link-desc">Selbst testen oder Demo buchen</span> 191 </a> 192 </div> 193 194 <div 195 class="nav-dropdown-panel nav-dropdown-panel--grid" 196 x-ref="panel_use-cases" 197 :class="{ 'is-active': desktopPanel === 'use-cases' }" 198 :aria-hidden="desktopPanel !== 'use-cases'"> 199 <div class="nav-dropdown-grid"> 200 <div class="nav-dropdown-group"> 201 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/consulting"> 202 <span class="nav-dropdown-link-title">Beratung & Treuhand</span> 203 <span class="nav-dropdown-link-desc">Kundengespräche & Mandate</span> 204 </a> 205 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/rechtsberatung">
206 <span class="nav-dropdown-link-title">Rechtsberatung</span> 207 <span class="nav-dropdown-link-desc">Mandantengespräche & Aktennotizen</span> 208 </a> 209 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/banken"> 210 <span class="nav-dropdown-link-title">Banken & Finanzberater</span> 211 <span class="nav-dropdown-link-desc">Beratungs- und Compliance-Gespräche</span> 212 </a> 213 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/sales"> 214 <span class="nav-dropdown-link-title">Vertrieb</span> 215 <span class="nav-dropdown-link-desc">Sales-Calls & Kundentermine</span> 216 </a> 217 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/vorstandssitzungen"> 218 <span class="nav-dropdown-link-title">Vorstände & VR</span> 219 <span class="nav-dropdown-link-desc">GL-, VR- und Board-Meetings</span> 220 </a> 221 </div> 222 223 <div class="nav-dropdown-group"> 224 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/kmu-industrie-handel"> 225 <span class="nav-dropdown-link-title">KMU, Industrie & Handel</span> 226 <span class="nav-dropdown-link-desc">GL-Sitzungen, Produktion & Lieferanten</span> 227 </a> 228 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/gemeinden-verwaltung"> 229 <span class="nav-dropdown-link-title">Gemeinden & Verwaltung</span> 230 <span class="nav-dropdown-link-desc">Rats- und Kommissionssitzungen</span> 231 </a> 232 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/bildung"> 233 <span class="nav-dropdown-link-title">Schulen & Hochschulen</span> 234 <span class="nav-dropdown-link-desc">Elterngespräche & Konvente</span> 235 </a> 236 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/medizin"> 237 <span class="nav-dropdown-link-title">Medizin</span> 238 <span class="nav-dropdown-link-desc">Konsultationen & Dokumentation</span> 239 </a> 240 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/use-cases/events"> 241 <span class="nav-dropdown-link-title">Events & Konferenzen</span> 242 <span class="nav-dropdown-link-desc">Workshops, Podiumsdiskussionen & Keynotes</span> 243 </a> 244 </div> 245 </div> 246 </div> 247 248 <div 249 class="nav-dropdown-panel" 250 x-ref="panel_resources" 251 :class="{ 'is-active': desktopPanel === 'resources' }" 252 :aria-hidden="desktopPanel !== 'resources'"> 253 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/about"> 254 <span class="nav-dropdown-link-title">Ãber uns</span> 255 <span class="nav-dropdown-link-desc">Das Team hinter Meeting Metrics</span> 256 </a> 257 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/blog">
258 <span class="nav-dropdown-link-title">Blog</span> 259 <span class="nav-dropdown-link-desc">Neuigkeiten & Praxiswissen</span> 260 </a> 261 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/docs"> 262 <span class="nav-dropdown-link-title">Knowledge Base</span> 263 <span class="nav-dropdown-link-desc">Anleitungen, Setup & häufige Fragen</span> 264 </a> 265 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/videos"> 266 <span class="nav-dropdown-link-title">Videos</span> 267 <span class="nav-dropdown-link-desc">Demos & Tutorials</span> 268 </a> 269 <a class="nav-dropdown-link" href="https://meetingmetrics.ai/partnerprogramm"> 270 <span class="nav-dropdown-link-title">Partnerprogramm</span> 271 <span class="nav-dropdown-link-desc">Meeting Metrics empfehlen und 20% wiederkehrend verdienen</span> 272 </a> 273 </div> 274 </div> 275 </div> 276 </div> 277 </div> 278 279 <div class="nav-actions" @mouseenter="scheduleClose()"> 280 <a href="https://meetingmetrics.ai/login" class="btn btn-ghost btn-sm"> 281 <span class="btn-text">Anmelden</span> 282 </a> 283 <a href="/registrieren" class="btn btn-twin btn-primary btn-sm"> 284 <span class="btn-text">Kostenlos testen</span> 285 <span class="btn-zone btn-zone--round" aria-hidden="true"> 286 <span class="twin-track"> 287 <span class="twin-cell">
288 <svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M2.5 7h9M8 3.5 11.5 7 8 10.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg> 289 </span> 290 <span class="twin-cell"> 291 <svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M2.5 7h9M8 3.5 11.5 7 8 10.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg> 292 </span> 293 </span> 294 </span> 295 </a> 296 <button 297 class="nav-burger" 298 type="button" 299 @click="mobileOpen = !mobileOpen" 300 :aria-expanded="mobileOpen" 301 data-label-open="Menü öffnen" 302 data-label-close="Menü schliessen" 303 :aria-label="mobileOpen ? $el.dataset.labelClose : $el.dataset.labelOpen"> 304 <svg x-show="!mobileOpen" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" width="22" height="22" aria-hidden="true"><line x1="4" y1="7" x2="20" y2="7"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="17" x2="20" y2="17"/></svg> 305 <svg x-show="mobileOpen" x-cloak viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" width="22" height="22" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg> 306 </button> 307 </div> 308 </div> 309 </div> 310 311 <div class="mobile-menu" x-show="mobileOpen" x-cloak @click.outside="mobileOpen = false; mobileSection = null"> 312 <nav class="container" aria-label="Mobile Navigation"> 313 <button type="button" class="mobile-section-trigger" @click="toggleMobileSection('produkt')" :aria-expanded="mobileSection === 'produkt'"> 314 Produkt 315 <svg class="nav-chevron" :class="{ 'is-open': mobileSection === 'produkt' }
315" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 316 </button> 317 <div class="mobile-submenu" x-show="mobileSection === 'produkt'" x-cloak> 318 <a href="https://meetingmetrics.ai#roi" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'roi' }">Die Rechnung</a> 319 <a href="https://meetingmetrics.ai#produkt" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'produkt' }">Das Produkt</a> 320 <a href="https://meetingmetrics.ai#funktionen" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'funktionen' }">Funktionen</a> 321 <a href="https://meetingmetrics.ai#fuer-wen" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'fuer-wen' }">Für wen ist es?</a> 322 <a href="https://meetingmetrics.ai#datenhoheit" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'datenhoheit' }">Schweizer Datenhoheit</a> 323 <a href="https://meetingmetrics.ai#preise" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'preise' }">Preise</a> 324 <a href="https://meetingmetrics.ai#faq" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'faq' }">FAQ</a> 325 <a href="https://meetingmetrics.ai#demo" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'demo' }">Nächster Schritt</a> 326 </div> 327 328 <button type="button" class="mobile-section-trigger" @click="toggleMobileSection('use-cases')" :aria-expanded="mobileSection === 'use-cases'"> 329 Use Cases 330 <svg class="nav-chevron" :class="{ 'is-open': mobileSection === 'use-cases' }" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 331 </button> 332 <div class="mobile-submenu" x-show="mobileSection === 'use-cases'" x-cloak> 333 <a href="https://meetingmetrics.ai/use-cases/consulting" @click="mobileOpen = false">Beratung & Treuhand</a> 334 <a href="https://meetingmetrics.ai/use-cases/rechtsberatung" @click="mobileOpen = false">Rechtsberatung</a> 335 <a href="https://meetingmetrics.ai/use-cases/banken" @click="mobileOpen = false">Banken & Finanzberater</a> 336 <a href="https://meetingmetrics.ai/use-cases/sales" @click="mobileOpen = false">Vertrieb</a> 337 <a href="https://meetingmetrics.ai/use-cases/vorstandssitzungen" @click="mobileOpen = false">Vorstände & VR</a> 338 <a href="https://meetingmetrics.ai/use-cases/kmu-industrie-handel" @click="mobileOpen = false">KMU, Industrie & Handel</a> 339 <a href="https://meetingmetrics.ai/use-cases/gemeinden-verwaltung" @click="mobileOpen = false">Gemeinden & Verwaltung</a> 340 <a href="https://meetingmetrics.ai/use-cases/bildung" @click="mobileOpen = false">Schulen & Hochschulen</a> 341 <a href="https://meetingmetrics.ai/use-cases/medizin" @click="mobileOpen = false">Medizin</a> 342 <a href="https://meetingmetrics.ai/use-cases/events" @click="mobileOpen = false">Events & Konferenzen</a> 343 </div> 344 345 <button type="button" class="mobile-section-trigger" @click="toggleMobileSection('resources')" :aria-expanded="mobileSection === 'resources'"> 346 Ressourcen 347 <svg class="nav-chevron" :class="{ 'is-open': mobileSection === 'resources' }" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 348 </button> 349 <div class="mobile-submenu" x-show="mobileSection === 'resources'" x-cloak> 350 <a href="https://meetingmetrics.ai/about" @click="mobileOpen = false">Ãber uns</a> 351 <a href="https://meetingmetrics.ai/blog" @click="mobileOpen = false">Blog</a> 352 <a href="https://meetingmetrics.ai/docs" @click="mobileOpen = false">Knowledge Base</a> 353 <a href="https://meetingmetrics.ai/videos" @click="mobileOpen = false">Videos</a> 354 <a href="https://meetingmetrics.ai/partnerprogramm" @click="mobileOpen = false">Partnerprogramm</a> 355 </div> 356 357 <a href="https://meetingmetrics.ai#preise" @click="mobileOpen = false" :class="{ 'is-current': isHome && activeHomeSection === 'preise' }">Preise</a> 358 <a href="https://meetingmetrics.ai/apps" @click="mobileOpen = false">Apps</a> 359 360 <a href="https://meetingmetrics.ai/about" @click="mobileOpen = false">Ãber uns</a> 361 <a href="https://meetingmetrics.ai/contact" @click="mobileOpen = false">Kontakt</a> 362 <a href="https://meetingmetrics.ai/login" @click="mobileOpen = false">Anmelden</a> 363 364 <div class="menu-cta"> 365 <a href="/registrieren" class="btn btn-twin btn-primary" @click="mobileOpen = false">
366 <span class="btn-text">Kostenlos testen</span> 367 <span class="btn-zone btn-zone--round" aria-hidden="true"> 368 <span class="twin-track"> 369 <span class="twin-cell"> 370 <svg width="12" height="12" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M2.5 7h9M8 3.5 11.5 7 8 10.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg> 371 </span> 372 <span class="twin-cell"> 373 <svg width="12" height="12" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M2.5 7h9M8 3.5 11.5 7 8 10.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg> 374 </span> 375 </span> 376 </span> 377 </a> 378 </div> 379 </nav> 380 </div> 381</header> 382 <main class="home-main resource-page about-page"> 383 <!-- ======================= HERO ======================= --> 384 <section class="container about-hero" aria-labelledby="hero-title"> 385 <p class="eyebrow">Ãber Meeting Metrics</p> 386 387 <h1 id="hero-title">Wir machen Meetings einfach.</h1> 388 389 <p class="lead">Ineffiziente Meetings kosten Unternehmen wertvolle Zeit und führen zu Informationsverlust. Meeting Metrics optimiert mit transparenter KI die Kommunikation, sichert den Wissenstransfer und steigert die Produktivität deiner Teams â für messbare Ergebnisse statt langer Protokolle.</p> 390 391 <p class="about-story">Meetings sind zentral für den Geschäftserfolg, doch oft fehlt die Struktur. Wichtige Informationen gehen unter, die Nachbereitung ist zeitaufwendig und das volle Potenzial für Entscheidungen und Innovation bleibt ungenutzt.</p> 392 393 <p class="about-story">Meeting Metrics wurde entwickelt, um genau das zu ändern. Unsere intelligente KI-Assistenz unterstützt deine Teams dabei, Gespräche effizient zu führen, das Wesentliche festzuhalten und klare nächste Schritte zu definieren â diskret und ohne den Gesprächsfluss zu stören.</p> 394 395 <p class="about-story">Deine Daten werden ausschliesslich auf unserer eigenen, unabhängigen Infrastruktur in der Schweiz gespeichert und verarbeitet. Wir garantieren höchste Vertraulichkeit und Compliance â das
395ist unser Fundament, keine Option.</p> 396 397 <p class="about-founded">Gegründet 2025 <span class="dot-sep" aria-hidden="true"></span> St. Gallen, Schweiz</p> 398 </section> 399 400 <!-- ======================= TEAM ======================= --> 401 <section class="section" id="team" aria-labelledby="team-title"> 402 <div class="container"> 403 <div class="section-head reveal" data-reveal> 404 <p class="kicker">Wer steckt dahinter</p> 405 <h2 id="team-title">Das Team hinter Meeting Metrics</h2> 406 </div> 407 408 <div class="about-team-grid"> 409 <figure class="about-team-member reveal" data-reveal> 410 <img class="about-team-photo" src="https://meetingmetrics.ai/img/team/bajram.jpg" alt="Bajram, Mitgründer & Entwickler bei Meeting Metrics" loading="lazy"> 411 <figcaption> 412 <div class="about-team-copy"> 413 <h3>Bajram</h3> 414 <p class="team-role">Mitgründer & Entwickler</p> 415 </div> 416 <div class="about-team-links"> 417 <a href="https://www.linkedin.com/in/bajram-emini-93025693/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn-Profil von Bajram"> 418 <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.36V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45Z"/></svg> 419 </a> 420 <a href="mailto:[email protected]" aria-label="E-Mail an Bajram"> 421 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg> 422 </a> 423 </div> 424 </figcaption> 425 </figure> 426 <figure class="about-team-member reveal" data-reveal> 427 <img class="about-team-photo" src="https://meetingmetrics.ai/img/team/baris.jpg" alt="Baris, Mitgründer & Kundenbetreuung bei Meeting Metrics" loading="lazy"> 428 <figcaption> 429 <div class="about-team-copy"> 430 <h3>Baris</h3> 431 <p class="team-role">Mitgründer & Kundenbetreuung</p> 432 </div> 433 <div class="about-team-links"> 434 <a href="https://www.linkedin.com/in/barisgoekduman/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn-Profil von Baris"> 435 <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.36V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45Z"/></svg> 436 </a> 437 <a href="mailto:[email protected]" aria-label="E-Mail an Baris"> 438 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg> 439 </a> 440 </div> 441 </figcaption> 442 </figure> 443 <figure class="about-team-member reveal" data-reveal> 444 <img class="about-team-photo" src="https://meetingmetrics.ai/img/team/enes.jpg" alt="Enes, Mitgründer & Entwickler bei Meeting Metrics" loading="lazy">
445 <figcaption> 446 <div class="about-team-copy"> 447 <h3>Enes</h3> 448 <p class="team-role">Mitgründer & Entwickler</p> 449 </div> 450 <div class="about-team-links"> 451 <a href="https://www.linkedin.com/in/enes-emini/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn-Profil von Enes"> 452 <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.36V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45Z"/></svg> 453 </a> 454 <a href="mailto:[email protected]" aria-label="E-Mail an Enes"> 455 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg> 456 </a> 457 </div> 458 </figcaption> 459 </figure> 460 </div> 461 </div> 462 </section> 463 464 <!-- ======================= CTA ======================= --> 465 <section class="ai-research-cta" id="ki-recherche" aria-labelledby="ai-research-title"> 466 <div class="container"> 467 <div class="ai-research-card"> 468 <div class="ai-research-copy reveal" data-reveal> 469 <h2 id="ai-research-title">Nicht sicher, ob Meeting Metrics zu dir passt?</h2> 470 <p>Hol dir eine unabhängige Einschätzung von der KI deiner Wahl.</p> 471 </div> 472 473 <div class="ai-research-actions reveal" data-reveal aria-label="Meeting Metrics mit einem KI-Assistenten recherchieren"> 474 <a class="ai-research-link" href="https://chatgpt.com/?q=Was%20kann%20Meeting%20Metrics%20%28meetingmetrics.ai%29%20und%20f%C3%BCr%20wen%20eignet%20es%20sich%3F" target="_blank" rel="noopener noreferrer"> 475 <svg viewBox="0 0 24 24" aria-hidden="true"> 476 <path d="M22.28 9.82a5.98 5.98 0 0 0-.52-4.91 6.05 6.05 0 0 0-6.51-2.9A6.07 6.07 0 0 0 4.98 4.18a5.98 5.98 0 0 0-4 2.9 6.05 6.05 0 0 0 .74 7.1 5.98 5.98 0 0 0 .51 4.91 6.05 6.05 0 0 0 6.52 2.9A5.98 5.98 0 0 0 13.26 24a6.06 6.06 0 0 0 5.77-4.21 5.99 5.99 0 0 0 4-2.9 6.06 6.06 0 0 0-.75-7.07Zm-9.02 12.61a4.48 4.48 0 0 1-2.88-1.04l.14-.08 4.78-2.76a.79.79 0 0 0 .39-.68v-6.74l2.02 1.17a.07.07 0 0 1 .04.05v5.58a4.5 4.5 0 0 1-4.49 4.5Zm-9.66-4.13a4.47 4.47 0 0 1-.54-3.01l.14.09 4.78 2.75a.77.77 0 0 0 .78 0l5.84-3.37v2.34a.08.08 0 0 1-.03.06l-4.83 2.79A4.5 4.5 0 0 1 3.6 18.3ZM2.34 7.9a4.49 4.49 0 0 1 2.37-1.98v5.68a.77.77 0 0 0 .39.68l5.81 3.35-2.02 1.17a.08.08 0 0 1-.07 0l-4.83-2.79A4.5 4.5 0 0 1 2.34 7.9Zm16.6 3.85-5.84-3.39 2.02-1.16a.08.08 0 0 1 .07 0l4.83 2.79a4.49 4.49 0 0 1-.68 8.1v-5.67a.79.79 0 0 0-.4-.67Zm2.01-3.02-.14-.09-4.78-2.78a.78.78 0 0 0-.78 0L9.41 9.23V6.9a.07.07 0 0 1 .03-.06l4.83-2.79a4.5 4.5 0 0 1 6.68 4.68ZM8.31 12.86 6.29 11.7a.08.08 0 0 1-.04-.06V6.07a4.5 4.5 0 0 1 7.38-3.45l-.14.08-4.78 2.76a.79.79 0 0 0-.4.68v6.72Zm1.1-2.36L12 9l2.61 1.5v3L12.02 15l-2.61-1.5v-3Z"/> 477 </svg> 478 <span>ChatGPT fragen</span> 479 </a> 480 <a class="ai-research-link" href="https://claude.ai/new?q=Was%20kann%20Meeting%20Metrics%20%28meetingmetrics.ai%29%20und%20f%C3%BCr%20wen%20eignet%20es%20sich%3F" target="_blank" rel="noopener noreferrer"> 481 <svg viewBox="0 0 24 24" aria-hidden="true"> 482 <path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578
4821.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.
4820182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"/> 483 </svg> 484 <span>Claude fragen</span> 485 </a> 486 <a class="ai-research-link" href="https://www.perplexity.ai/search?q=Was%20kann%20Meeting%20Metrics%20%28meetingmetrics.ai%29%20und%20f%C3%BCr%20wen%20eignet%20es%20sich%3F" target="_blank" rel="noopener noreferrer"> 487 <svg viewBox="0 0 24 24" aria-hidden="true"> 488 <path d="M22.4 7.09h-2.31V.07l-7.51 6.35V.16h-1.16v6.2L4.49 0v7.09H1.6v10.4h2.89V24l6.93-6.36v6.2h1.16V17.8l6.93 6.18v-6.49h2.89V7.09Zm-3.47-4.53v4.53h-5.35l5.35-4.53ZM5.65 2.63l4.87 4.46H5.65V2.63ZM2.76 16.33V8.25h7.85l-6.12 6.11v1.97H2.76Zm2.89 5.04v-6.53l5.77-5.78v7.01l-5.77 5.3Zm12.7.03-5.77-5.15V9.06l5.77 5.78v6.56Zm2.89-5.07h-1.73v-1.97L13.39 8.25h7.85v8.08Z"/> 489 </svg> 490 <span>Perplexity fragen</span> 491 </a> 492 </div> 493 </div> 494 </div> 495</section> 496 </main> 497 <footer class="ftr" id="kontakt" 498 x-data="{ 499 newsletterOpen: false, 500 newsletterLoaded: false, 501 openNewsletter() { 502 this.newsletterOpen = true; 503 if (! this.newsletterLoaded) { 504 this.loadNewsletterForm(); 505 } 506 }, 507 loadNewsletterForm() { 508 this.newsletterLoaded = true; 509 const create = () => window.hbspt.forms.create({ 510 portalId: '49479766', 511 formId: '8058d67d-9396-439f-988b-5001c6ca5802', 512 region: 'na1', 513 target: '#newsletter-modal-form', 514 }); 515 if (window.hbspt) { 516 create(); 517 return; 518 } 519 const script = document.createElement('script'); 520 script.src = 'https://js.hsforms.net/forms/embed/v2.js'; 521 script.charset = 'utf-8'; 522 script.addEventListener('load', create); 523 document.head.appendChild(script); 524 }, 525 }" 526 @newsletter-open.window="openNewsletter()" 527 @keydown.escape.window="newsletterOpen = false"> 528 <div class="container"> 529 <div class="ftr-top"> 530 <div class="ftr-brand"> 531 <a class="ftr-logo" href="https://meetingmetrics.ai" aria-label="Meeting Metrics"> 532 <img src="https://meetingmetrics.ai/img/logo-dark.png" alt="Meeting Metrics" width="743" height="97"> 533 </a> 534 </div> 535 536 <div class="ftr-connect"> 537 <span class="ftr-badge"> 538 <svg viewBox="0 0 24 24" aria-hidden="true"><rect width="24" height="24" rx="5" fill="#d52b1e"></rect><path d="M13.9 5.5h-3.8v4.6H5.5v3.8h4.6v4.6h3.8v-4.6h4.6v-3.8h-4.6V5.5Z" fill="#fff"></path></svg> 539 Hergestellt in der Schweiz 540 </span> 541 542 <div class="ftr-connect-links"> 543 <a class="ftr-store-chip" href="https://meetingmetrics.ai/apps"> 544 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.246-3.83-1.206.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></svg> 545 App Store 546 </a> 547 <a class="ftr-store-chip" href="https://meetingmetrics.ai/apps"> 548 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22.018 13.298l-3.919 2.218-3.515-3.493 3.543-3.521 3.891 2.202a1.49 1.49 0 0 1 0 2.594zM1.337.924a1.486 1.486 0 0 0-.112.568v21.017c0 .217.045.419.124.6l11.155-11.087L1.337.924zm12.207 10.065l3.258-3.238L3.45.195a1.466 1.466 0 0 0-.946-.179l11.04 10.973zm0 2.067l-11 10.933c.298.036.612-.016.906-.183l13.324-7.54-3.23-3.21z"/></svg> 549 Google Play 550 </a> 551 </div> 552 </div> 553 </div> 554 555 <div class="ftr-cols"> 556 <nav class="ftr-col" aria-label="Produkt"> 557 <h4>Produkt</h4> 558 <ul> 559 <li><a href="https://meetingmetrics.ai">Ãberblick</a></li> 560 <li><a href="https://meetingmetrics.ai#funktionen">Funktionen</a></li> 561 <li><a href="https://meetingmetrics.ai#roi">ROI-Rechner</a></li> 562 <li><a href="https://meetingmetrics.ai#preise">Preise</a></li> 563 <li><a href="https://meetingmetrics.ai/apps">Apps</a></li> 564 </ul> 565 </nav> 566 567 <nav class="ftr-col ftr-col-wide" aria-label="Use Cases"> 568 <h4>Use Cases</h4> 569 <ul> 570 <li>
570<a href="https://meetingmetrics.ai/use-cases/consulting">Beratung & Treuhand</a></li> 571 <li><a href="https://meetingmetrics.ai/use-cases/rechtsberatung">Rechtsberatung</a></li> 572 <li><a href="https://meetingmetrics.ai/use-cases/banken">Banken & Finanzberater</a></li> 573 <li><a href="https://meetingmetrics.ai/use-cases/sales">Vertrieb</a></li> 574 <li><a href="https://meetingmetrics.ai/use-cases/vorstandssitzungen">Vorstände & VR</a></li> 575 <li><a href="https://meetingmetrics.ai/use-cases/kmu-industrie-handel">KMU, Industrie & Handel</a></li> 576 <li><a href="https://meetingmetrics.ai/use-cases/gemeinden-verwaltung">Gemeinden & Verwaltung</a></li> 577 <li><a href="https://meetingmetrics.ai/use-cases/bildung">Schulen & Hochschulen</a></li> 578 <li><a href="https://meetingmetrics.ai/use-cases/medizin">Medizin</a></li> 579 <li><a href="https://meetingmetrics.ai/use-cases/events">Events & Konferenzen</a></li> 580 </ul> 581 </nav> 582 583 <nav class="ftr-col" aria-label="Ressourcen"> 584 <h4>Ressourcen</h4> 585 <ul> 586 <li><a href="https://meetingmetrics.ai/blog">Blog</a></li> 587 <li><a href="https://meetingmetrics.ai/docs">Knowledge Base</a></li> 588 <li><a href="https://meetingmetrics.ai/videos">Videos</a></li> 589 <li><button type="button" class="ftr-newsletter-trigger" @click="openNewsletter()">Newsletter</button></li> 590 <li><a href="https://meetingmetrics.ai/partnerprogramm">Partnerprogramm</a></li> 591 <li><a href="https://meetingmetrics.ai/api-docs">API-Dokumentation</a></li> 592 </ul> 593 </nav> 594 595 <div class="ftr-col ftr-col-contact"> 596 <nav aria-label="Unternehmen"> 597 <h4>Unternehmen</h4> 598 <ul> 599 <li><a href="https://meetingmetrics.ai/about">Ãber uns</a></li> 600 <li><a href="https://meetingmetrics.ai/contact">Kontakt</a></li> 601 <li> 602 <a class="ftr-link-social" href="https://www.linkedin.com/company/meetingmetricsai/" target="_blank" rel="noopener noreferrer"> 603 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29ZM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13Zm1.78 13.02H3.55V9h3.57v11.45ZM22.22 0H1.77C.8 0 0 .78 0 1.75v20.5C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.75V1.75C24 .78 23.2 0 22.22 0Z"/></svg> 604 LinkedIn 605 </a> 606 </li> 607 </ul> 608 </nav> 609 610 <address class="ftr-address"> 611 <strong>Meeting Metrics GmbH</strong> 612 <span>Lerchenfeldstrasse 3<br>9014 St.Gallen, Schweiz</span> 613 <a href="mailto:[email protected]">[email protected]</a> 614 </address> 615 </div> 616 </div> 617 618 <div class="ftr-bottom"> 619 <span>© 2026 Meeting Metrics GmbH. Alle Rechte vorbehalten.</span> 620 <nav class="ftr-legal" aria-label="Rechtliches"> 621 <a href="https://meetingmetrics.ai/agb">AGB</a> 622 <a href="https://meetingmetrics.ai/privacy">Datenschutz</a> 623 <a href="https://meetingmetrics.ai/imprint">Impressum</a> 624 </nav> 625 <div class="nav-lang" x-data="{ open: false }" @click.away="open = false" @keydown.escape="open = false"> 626 <button 627 type="button" 628 class="nav-trigger nav-lang-trigger" 629 :aria-expanded="open" 630 aria-haspopup="true" 631 aria-label="Sprache wählen" 632 @click="open = !open"> 633 DE 634 <svg class="nav-chevron" :class="{ 'is-open': open }
634" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> 635 </button> 636 637 <div class="nav-lang-menu" x-show="open" x-transition.opacity.duration.120ms x-cloak> 638 <a 639 href="/about?lang=de" 640 class="is-active" 641 aria-current="true" @click="open = false">Deutsch</a> 642 <a 643 href="/en/about" 644 class="" 645 @click="open = false">English</a> 646 </div> 647 </div> 648 </div> 649 </div> 650 651 <div 652 class="newsletter-modal" 653 x-cloak 654 x-show="newsletterOpen" 655 x-transition.opacity 656 role="dialog" 657 aria-modal="true" 658 aria-labelledby="newsletter-modal-title" 659 @click.self="newsletterOpen = false"> 660 <div class="newsletter-modal-panel" x-trap.noscroll="newsletterOpen"> 661 <button class="newsletter-modal-close" type="button" @click="newsletterOpen = false" aria-label="Formular schliessen"> 662 <svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg> 663 </button> 664 665 <div class="newsletter-modal-head"> 666 <p class="kicker">Newsletter</p> 667 <h2 id="newsletter-modal-title">Bleib auf dem Laufenden.</h2> 668 <p>Einmal im Monat: Produkt-Updates, neue Guides und kurze Praxis-Tipps rund um Meeting-Protokolle, Datenschutz und effiziente Nachbereitung.</p> 669 </div> 670 671 <div id="newsletter-modal-form" class="newsletter-modal-form" wire:ignore></div> 672 </div> 673 </div> 674</footer> 675 676
676<script src="https://meetingmetrics.ai/vendor/livewire/livewire.min.js?id=b7ac2fb1" data-csrf="fEMpKXy6pgLqC3UGoJnEyJK2DDPPU7mghu0RX67n" data-module-url="https://meetingmetrics.ai/livewire-6a0881c5" data-update-uri="https://meetingmetrics.ai/livewire-6a0881c5/update" data-navigate-once="true"></script>
676 677 <div 678 class="spatie-support-bubble pointer-events-none fixed bottom-0 right-0 text-base items-end z-30 flex-col m-4 gap-3" 679 style="display: none;" 680> 681 <div 682 class="spatie-support-bubble__container pointer-events-none overflow-hidden rounded-2xl border border-gray-200/80 bg-white shadow-[0_24px_48px_-16px_rgba(17,12,46,0.22)] transition duration-300 ease-out translate-x-full opacity-0" 683 data-lenis-prevent 684 role="dialog" 685 aria-labelledby="support-bubble-heading" 686 aria-hidden="true" 687 > 688 <div class="spatie-support-bubble__form pointer-events-auto"> 689 <form 690 method="post" 691 enctype="multipart/form-data" 692 action="https://meetingmetrics.ai/support-bubble" 693 class="spatie-support-bubble__form-inner text-base" 694 data-placeholders="{"technical_issue":"Was ist passiert â und auf welcher Seite? Je konkreter, desto schneller können wir helfen.","feedback":"Was hat dir gefallen, was können wir besser machen?","demo_request":"Für welches Team und wann würde eine kurze Demo passen?","billing":"Worum geht es bei Tarif, Rechnung oder Sitzplätzen?","feature_request":"Welches Feature fehlt dir â und warum wäre es hilfreich?","other":"Erzähl uns kurz, worum es geht."}" 695> 696 <header class="spatie-support-bubble__header"> 697 <span class="spatie-support-bubble__header-icon" aria-hidden="true"> 698 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"> 699 <path d="M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z"/> 700 </svg> 701 </span> 702 <div class="spatie-support-bubble__header-copy"> 703 <h2 id="support-bubble-heading" class="spatie-support-bubble__title"> 704 Hilfe & Feedback 705 </h2> 706 <p class="spatie-support-bubble__badge">Antwort in einem Werktag</p> 707 </div> 708 <button 709 type="button" 710 class="spatie-support-bubble__header-close" 711 data-support-bubble-close 712 aria-label="Schliessen" 713 > 714 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 715 <path d="M6 18 18 6M6 6l12 12"/> 716 </svg> 717 </button> 718 </header> 719 720 <div class="spatie-support-bubble__body"> 721 <p class="spatie-support-bubble__intro">Sag uns kurz, worum es geht. Wir antworten werktags in der Regel innerhalb eines Arbeitstages.</p> 722 723 <p class="spatie-support-bubble__error" role="alert" hidden></p> 724 725 <div id="my_name_Fu4kBjzo6A8Sxn1i_wrap" style="display: none" aria-hidden="true"> 726 <input id="my_name_Fu4kBjzo6A8Sxn1i" 727 name="my_name_Fu4kBjzo6A8Sxn1i" 728 type="text" 729 value="" 730 autocomplete="nope" 731 tabindex="-1"> 732 <input name="valid_from" 733 type="text" 734 value="eyJpdiI6InpXNWF6c2gvdCs0S0U1TWJwVWpCRFE9PSIsInZhbHVlIjoicWttMXdsZVhVK1hQcmRuNmR2YWhrQT09IiwibWFjIjoiZDI2MTk0ZjJmNTJmN2NkNDE0N2I0N2IxNjRkNTE1ZDAxNGFiNTU5NmQyMmFkYWUyZmVmZjJmZWI0OTA4ZDk5YiIsInRhZyI6IiJ9" 735 autocomplete="off" 736 tabindex="-1"> 737 </div> 738 739 <input type="hidden" name="url" value="https://meetingmetrics.ai/about"> 740 741 <div class="spatie-support-bubble__identity"> 742 <label 743 for="support-bubble-name" 744 class="spatie-support-bubble__field " 745> 746 <span class="spatie-support-bubble__label">Name</span> 747 748 <input 749 type="text" 750 name="name" 751 id="support-bubble-name" 752 required 753 value="" 754 autocomplete="name" placeholder="Max Muster" class="spatie-support-bubble__control w-full max-w-full" 755 > 756 </label> 757 758 <label 759 for="support-bubble-email" 760 class="spatie-support-bubble__field " 761> 762 <span class="spatie-support-bubble__label">E-Mail</span> 763 764 <input 765 type="email" 766 name="email" 767 id="support-bubble-email" 768 required 769 value="" 770 autocomplete="email" placeholder="[email protected]" class="spatie-support-bubble__control w-full max-w-full" 771 > 772 </label> 773 </div> 774 775 <label for="support-bubble-subject" class="spatie-support-bubble__field">
776 <span class="spatie-support-bubble__label">Anliegen</span> 777 <span class="spatie-support-bubble__select-wrap"> 778 <select 779 name="subject" 780 id="support-bubble-subject" 781 class="spatie-support-bubble__control w-full max-w-full spatie-support-bubble__select" 782 required 783 > 784 <option value="" disabled selected>Bitte Anliegen wählen</option> 785 <option value="technical_issue">Technisches Problem</option> 786 <option value="feedback">Feedback</option> 787 <option value="demo_request">Demo anfragen</option> 788 <option value="billing">Abrechnung & Tarif</option> 789 <option value="feature_request">Feature-Wunsch</option> 790 <option value="other">Sonstiges</option> 791 </select> 792 <svg class="spatie-support-bubble__select-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 793 <polyline points="6 9 12 15 18 9"/> 794 </svg> 795 </span> 796 </label> 797 798 <label for="support-bubble-message" class="spatie-support-bubble__field"> 799 <span class="spatie-support-bubble__label">Wie können wir helfen?</span> 800 <textarea 801 name="message" 802 id="support-bubble-message" 803 rows="4" 804 required 805 minlength="10" 806 maxlength="3000" 807 placeholder="Erzähl uns kurz, worum es geht." 808 class="spatie-support-bubble__control w-full max-w-full spatie-support-bubble__textarea" 809 ></textarea> 810 </label> 811 812 <div class="spatie-support-bubble__field"> 813 <label for="support-bubble-screenshot" class="spatie-support-bubble__label">Screenshot (optional)</label> 814 <input 815 type="file" 816 name="screenshot" 817 id="support-bubble-screenshot" 818 accept="image/png,image/jpeg,image/webp" 819 aria-describedby="support-bubble-screenshot-hint" 820 class="spatie-support-bubble__control w-full max-w-full" 821 > 822 <div data-support-bubble-screenshot-preview hidden class="spatie-support-bubble__attachment"> 823 <img data-support-bubble-screenshot-image hidden alt="" width="44" height="44" class="spatie-support-bubble__attachment-image"> 824 <span data-support-bubble-screenshot-name class="spatie-support-bubble__attachment-name"></span> 825 <button 826 type="button" 827 data-support-bubble-remove-screenshot 828 class="spatie-support-bubble__screenshot-remove" 829 aria-label="Screenshot entfernen" 830 title="Screenshot entfernen" 831 > 832 <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"> 833 <path d="M6 6l12 12M6 18 18 6"/> 834 </svg> 835 </button> 836 </div> 837 <small id="support-bubble-screenshot-hint">PNG, JPEG oder WebP. Maximal 2 MB.</small> 838 </div> 839 840 <button type="submit" class="spatie-support-bubble__submit"> 841 <span class="spatie-support-bubble__submit-label">Nachricht senden</span> 842 </button> 843 </div> 844</form> 845 </div> 846 847 <div class="spatie-support-bubble__response pointer-events-auto" hidden></div> 848 </div> 849 850 <div class="spatie-support-bubble__button pointer-events-auto"> 851 <button 852 type="button" 853 aria-label="Support öffnen" 854 aria-expanded="false" 855 aria-controls="support-bubble-heading" 856 class="hidden sm:flex items-center justify-center bg-primary-500 hover:bg-primary-600 rounded-full shadow-lg shadow-primary-500/25 w-14 h-14 text-white p-0 transition" 857> 858 <svg 859 xmlns="http://www.w3.org/2000/svg" 860 fill="none"
861 viewBox="0 0 24 24" 862 stroke-width="1.7" 863 stroke="currentColor" 864 id="support-bubble-chat-icon" 865 class="absolute inset-0 m-auto size-7 opacity-100 transition-opacity duration-200 ease-out" 866 aria-hidden="true" 867> 868 <path 869 stroke-linecap="round" 870 stroke-linejoin="round" 871 d="M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z" 872 /> 873</svg> 874 <svg 875 xmlns="http://www.w3.org/2000/svg" 876 fill="none" 877 viewBox="0 0 24 24" 878 stroke-width="1.7" 879 stroke="currentColor" 880 id="support-bubble-close-icon" 881 class="absolute inset-0 m-auto size-7 opacity-0 transition-opacity duration-200 ease-out" 882 aria-hidden="true" 883> 884 <path 885 stroke-linecap="round" 886 stroke-linejoin="round" 887 d="M6 18 18 6M6 6l12 12" 888 /> 889</svg> 890</button> 891 </div> 892</div> 893 894
894<script> 895 function bootstrapSupportBubble(element) { 896 element.style.display = 'flex'; 897 898 const container = element.querySelector('.spatie-support-bubble__container'); 899 const formContainer = element.querySelector('.spatie-support-bubble__form'); 900 const responseContainer = element.querySelector('.spatie-support-bubble__response'); 901 const errorMessage = element.querySelector('.spatie-support-bubble__error'); 902 const toggleButton = element.querySelector('.spatie-support-bubble__button button'); 903 const form = element.querySelector('.spatie-support-bubble__form form'); 904 const chatIcon = element.querySelector('#support-bubble-chat-icon'); 905 const closeIcon = element.querySelector('#support-bubble-close-icon'); 906 const topicSelect = element.querySelector('#support-bubble-subject'); 907 const messageField = element.querySelector('#support-bubble-message'); 908 const submitButton = form?.querySelector('button[type="submit"]'); 909 910 const screenshotInput = form?.querySelector('[name="screenshot"]'); 911 const removeScreenshotButton = form?.querySelector('[data-support-bubble-remove-screenshot]'); 912 const screenshotPreview = form?.querySelector('[data-support-bubble-screenshot-preview]'); 913 const screenshotImage = form?.querySelector('[data-support-bubble-screenshot-image]'); 914 const screenshotName = form?.querySelector('[data-support-bubble-screenshot-name]'); 915 let screenshotUrl = null; 916 let submitting = false; 917 918 let placeholders = {}; 919 try { 920 placeholders = JSON.parse(form?.dataset.placeholders || '{}'); 921 } catch (error) { 922 placeholders = {}; 923 } 924 925 const defaultPlaceholder = messageField?.getAttribute('placeholder') || ''; 926 927 let fullTranslateClass = 'translate-x-full'; 928 let zeroTranslateClass = 'translate-x-0'; 929 930 931 const isOpen = () => container.classList.contains('opacity-100'); 932 933 const setOpen = (open) => { 934 container.style.pointerEvents = open ? 'auto' : 'none'; 935 if (open) { 936 responseContainer.hidden = true; 937 responseContainer.style.display = 'none'; 938 formContainer.style.display = 'block'; 939 container.classList.remove(fullTranslateClass, 'opacity-0'); 940 container.classList.add(zeroTranslateClass, 'opacity-100'); 941 container.setAttribute('aria-hidden', 'false'); 942 toggleButton?.setAttribute('aria-expanded', 'true'); 943 toggleButton?.setAttribute('aria-label', "Schliessen"); 944 chatIcon?.classList.remove('opacity-100'); 945 chatIcon?.classList.add('opacity-0'); 946 closeIcon?.classList.remove('opacity-0'); 947 closeIcon?.classList.add('opacity-100'); 948 949 window.requestAnimationFrame(() => { 950 const firstField = form?.querySelector('select, textarea, input:not([type="hidden"]):not([hidden])'); 951 firstField?.focus(); 952 }); 953 } else { 954 container.classList.remove(zeroTranslateClass, 'opacity-100'); 955 container.classList.add(fullTranslateClass, 'opacity-0'); 956 container.setAttribute('aria-hidden', 'true'); 957 toggleButton?.setAttribute('aria-expanded', 'false'); 958 toggleButton?.setAttribute('aria-label', "Support \u00f6ffnen"); 959 closeIcon?.classList.remove('opacity-100'); 960 closeIcon?.classList.add('opacity-0'); 961 chatIcon?.classList.remove('opacity-0'); 962 chatIcon?.classList.add('opacity-100'); 963 } 964 }; 965 966 const updatePlaceholder = () => { 967 if (! messageField) { 968 return; 969 } 970 971 const selected = topicSelect?.value; 972 messageField.placeholder = (selected && placeholders[selected]) 973 ? placeholders[selected] 974 : defaultPlaceholder; 975 }; 976 977 toggleButton?.addEventListener('click', () => { 978 setOpen(! isOpen()); 979 }); 980 981 element.querySelectorAll('[data-support-bubble-close]').forEach((closeControl)
981=> { 982 closeControl.addEventListener('click', () => setOpen(false)); 983 }); 984 985 topicSelect?.addEventListener('change', updatePlaceholder); 986 987 document.addEventListener('keydown', (event) => { 988 if (event.key === 'Escape' && isOpen()) { 989 setOpen(false); 990 } 991 }); 992 993 const showError = (message) => { 994 errorMessage.textContent = message; 995 errorMessage.hidden = !message; 996 errorMessage.style.display = message ? 'block' : 'none'; 997 }; 998 999 const validateScreenshot = () => { 1000 const file = screenshotInput?.files[0]; 1001 if (!file) { 1002 return true; 1003 } 1004 1005 let message = ''; 1006 if (!['image/png', 'image/jpeg', 'image/webp'].includes(file.type)) { 1007 message = "Bitte w\u00e4hle ein Bild im Format PNG, JPEG oder WebP."; 1008 } else if (file.size > 2 * 1024 * 1024) { 1009 message = "Der Screenshot darf h\u00f6chstens 2 MB gross sein."; 1010 } 1011 1012 screenshotInput.setAttribute('aria-invalid', message ? 'true' : 'false'); 1013 if (message) { 1014 showError(message); 1015 } 1016 return !message; 1017 }; 1018 1019 const updateScreenshotPreview = (valid = false) => { 1020 if (screenshotUrl) { 1021 URL.revokeObjectURL(screenshotUrl); 1022 screenshotUrl = null; 1023 } 1024 1025 const file = screenshotInput.files[0]; 1026 screenshotPreview.hidden = !file; 1027 screenshotInput.hidden = !!file; 1028 screenshotName.textContent = file?.name || ''; 1029 screenshotName.title = file?.name || ''; 1030 screenshotImage.hidden = true; 1031 screenshotImage.removeAttribute('src'); 1032 1033 if (file && valid) { 1034 screenshotUrl = URL.createObjectURL(file); 1035 screenshotImage.src = screenshotUrl; 1036 screenshotImage.hidden = false; 1037 } 1038 }; 1039 1040 screenshotImage?.addEventListener('error', () => { 1041 screenshotImage.hidden = true; 1042 }); 1043 1044 screenshotInput?.addEventListener('change', () => { 1045 showError(''); 1046 updateScreenshotPreview(validateScreenshot()); 1047 if (screenshotInput.files.length) { 1048 removeScreenshotButton.focus(); 1049 } 1050 }); 1051 1052 removeScreenshotButton?.addEventListener('click', () => { 1053 screenshotInput.value = ''; 1054 screenshotInput.removeAttribute('aria-invalid'); 1055 updateScreenshotPreview(); 1056 showError(''); 1057 screenshotInput.focus(); 1058 }); 1059 1060 form?.addEventListener('submit', (event) => { 1061 event.preventDefault(); 1062 1063 if (submitting || !validateScreenshot()) { 1064 return; 1065 } 1066 1067 const formData = new FormData(event.target); 1068 if (!screenshotInput?.files.length) { 1069 formData.delete('screenshot'); 1070 } 1071 submitting = true; 1072 form.setAttribute('aria-busy', 'true'); 1073 const originalLabel = submitButton?.textContent; 1074 1075 if (submitButton) { 1076 submitButton.disabled = true; 1077 submitButton.textContent = "Wird gesendet\u2026"; 1078 } 1079 1080 errorMessage.hidden = true; 1081 errorMessage.style.display = 'none'; 1082 1083 fetch(event.target.action, { 1084 headers: {Accept: 'application/json'}, 1085 body: formData, 1086 method: 'post', 1087 }) 1088 .then((response) => { 1089 if (response.status !== 200) { 1090 throw response; 1091 } 1092 1093 event.target.reset(); 1094 updateScreenshotPreview(); 1095 screenshotInput.removeAttribute('aria-invalid'); 1096 updatePlaceholder(); 1097 1098 return response.text(); 1099 }) 1100 .then((html) => { 1101 responseContainer.innerHTML = html; 1102 responseContainer.hidden = false;
1103 responseContainer.style.display = 'flex'; 1104 formContainer.style.display = 'none'; 1105 errorMessage.hidden = true; 1106 errorMessage.style.display = 'none'; 1107 }) 1108 .catch(async (errorResponse) => { 1109 let message = errorResponse.status === 413 1110 ? "Der Screenshot darf h\u00f6chstens 2 MB gross sein." : "Deine Nachricht konnte nicht gesendet werden. Bitte versuche es erneut."; 1111 1112 try { 1113 const response = await errorResponse.json(); 1114 if (errorResponse.status === 422) { 1115 message = Object.values(response.errors || {}).flat().join(' ') || response.message || message; 1116 } 1117 } catch (error) { 1118 // Keep the fallback message. 1119 } 1120 1121 showError(message); 1122 }) 1123 .finally(() => { 1124 submitting = false; 1125 form.removeAttribute('aria-busy'); 1126 if (submitButton) { 1127 submitButton.disabled = false; 1128 if (originalLabel) { 1129 submitButton.textContent = originalLabel; 1130 } 1131 } 1132 }); 1133 }); 1134 } 1135 1136 window.addEventListener('load', () => { 1137 document 1138 .querySelectorAll('.spatie-support-bubble') 1139 .forEach((form) => bootstrapSupportBubble(form)); 1140 }); 1141</script>
1141 1142 <style> 1143 [data-mm-consent][hidden], 1144 [data-mm-consent-settings][hidden], 1145 [data-mm-consent-preferences][hidden] { 1146 display: none !important; 1147 } 1148 1149 .mm-consent { 1150 position: fixed; 1151 inset: auto 16px 16px; 1152 z-index: 10000; 1153 max-width: 720px; 1154 max-height: calc(100vh - 32px); 1155 overflow-y: auto; 1156 overscroll-behavior: contain; 1157 margin: 0 auto; 1158 padding: 20px; 1159 color: #07111f; 1160 background: #fff; 1161 border: 1px solid #dce3ee; 1162 border-radius: 12px; 1163 box-shadow: 0 22px 58px rgba(7, 17, 31, .18); 1164 font-family: "Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif; 1165 } 1166 1167 @supports (max-height: 100dvh) { 1168 .mm-consent { 1169 max-height: calc(100dvh - 32px); 1170 } 1171 } 1172 1173 .mm-consent__short { 1174 display: none; 1175 } 1176 1177 .mm-consent__title { 1178 margin: 0; 1179 font-size: 18px; 1180 font-weight: 700; 1181 line-height: 1.3; 1182 } 1183 1184 .mm-consent__copy { 1185 margin: 8px 0 0; 1186 color: #5f6b7d; 1187 font-size: 14px; 1188 line-height: 1.55; 1189 } 1190 1191 .mm-consent__copy a { 1192 color: #2563eb; 1193 text-decoration: underline; 1194 text-underline-offset: 2px; 1195 } 1196 1197 .mm-consent__actions { 1198 display: flex; 1199 flex-wrap: wrap; 1200 gap: 8px; 1201 margin-top: 16px; 1202 } 1203 1204 .mm-consent__button { 1205 min-height: 42px; 1206 padding: 0 16px; 1207 color: #07111f; 1208 background: #fff; 1209 border: 1px solid #c6d1e0; 1210 border-radius: 8px; 1211 font: inherit; 1212 font-size: 14px; 1213 font-weight: 600; 1214 cursor: pointer; 1215 } 1216 1217 .mm-consent__button:hover { 1218 background: #f7f9fc; 1219 } 1220 1221 .mm-consent__button:focus-visible, 1222 .mm-consent-settings:focus-visible { 1223 outline: 2px solid #2563eb; 1224 outline-offset: 2px; 1225 } 1226 1227 .mm-consent__button--primary { 1228 color: #fff; 1229 background: #17191f; 1230 border-color: #17191f; 1231 box-shadow: 1232 inset 0 1px 0 rgba(255, 255, 255, .12), 1233 0 1px 2px rgba(7, 17, 31, .16); 1234 } 1235 1236 .mm-consent__button--primary:hover { 1237 background: #23262e; 1238 border-color: #23262e; 1239 } 1240 1241 /* While the preference panel is open, "Auswahl speichern" is the single 1242 primary action â keep "Alle akzeptieren" neutral so there is no 1243 double-primary stack. */ 1244 .mm-consent__preferences:not([hidden]) ~ .mm-consent__actions [data-mm-consent-accept] { 1245 color: #07111f; 1246 background: #fff; 1247 border-color: #c6d1e0; 1248 box-shadow: none; 1249 } 1250 1251 .mm-consent__preferences:not([hidden]) ~ .mm-consent__actions [data-mm-consent-accept]:hover { 1252 background: #f7f9fc; 1253 border-color: #c6d1e0; 1254 } 1255 1256 .mm-consent__preferences { 1257 display: grid; 1258 gap: 10px; 1259 margin-top: 16px; 1260 padding-top: 16px; 1261 border-top: 1px solid #dce3ee; 1262 } 1263 1264 .mm-consent__option { 1265 display: flex; 1266 gap: 12px; 1267 align-items: flex-start; 1268 padding: 12px; 1269 background: #f7f9fc; 1270 border-radius: 8px; 1271 } 1272 1273 .mm-consent__option input { 1274 width: 18px; 1275 height: 18px; 1276 margin: 2px 0 0; 1277 accent-color: #2563eb; 1278 } 1279 1280 .mm-consent__option strong, 1281 .mm-consent__option span { 1282 display: block; 1283 } 1284 1285 .mm-consent__option span { 1286 margin-top: 3px; 1287 color: #5f6b7d; 1288 font-size: 13px; 1289 line-height: 1.45; 1290 } 1291 1292 .mm-consent-settings { 1293 position: fixed; 1294 bottom: 12px; 1295 left: 12px; 1296 z-index: 9999; 1297 padding: 7px 10px; 1298 color: #334155; 1299 background: rgba(255, 255, 255, .96); 1300 border: 1px solid #dce3ee; 1301 border-radius: 999px; 1302 box-shadow: 0 4px 14px rgba(7, 17, 31, .08); 1303 font: 500 12px/1.2 "Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif; 1304 cursor: pointer; 1305 } 1306 1307 .dark .mm-consent { 1308 color: #e6edf7; 1309 background: #10141c; 1310 border-color: #262d3a;
1311 box-shadow: 0 22px 58px rgba(0, 0, 0, .55); 1312 } 1313 1314 .dark .mm-consent__copy, 1315 .dark .mm-consent__option span { 1316 color: #9aa6b8; 1317 } 1318 1319 .dark .mm-consent__copy a { 1320 color: #7aa5ff; 1321 } 1322 1323 .dark .mm-consent__preferences { 1324 border-top-color: #262d3a; 1325 } 1326 1327 .dark .mm-consent__option { 1328 background: #171d27; 1329 } 1330 1331 .dark .mm-consent__button, 1332 .dark .mm-consent-settings { 1333 color: #e6edf7; 1334 background: #171d27; 1335 border-color: #303848; 1336 } 1337 1338 .dark .mm-consent__button:hover { 1339 background: #1f2733; 1340 } 1341 1342 .dark .mm-consent__button--primary { 1343 color: #0b0f16; 1344 background: #e6edf7; 1345 border-color: #e6edf7; 1346 } 1347 1348 .dark .mm-consent__button--primary:hover { 1349 background: #ffffff; 1350 border-color: #ffffff; 1351 } 1352 1353 .dark .mm-consent__preferences:not([hidden]) ~ .mm-consent__actions [data-mm-consent-accept] { 1354 color: #e6edf7; 1355 background: #171d27; 1356 border-color: #303848; 1357 } 1358 1359 /* Tablet: keep the full copy, but tighten the box and let the actions 1360 sit on one row without wrapping into a ragged block. */ 1361 @media (max-width: 900px) { 1362 .mm-consent { 1363 padding: 18px; 1364 } 1365 1366 .mm-consent__actions { 1367 gap: 8px; 1368 } 1369 1370 .mm-consent__button { 1371 flex: 1 1 auto; 1372 padding: 0 12px; 1373 } 1374 } 1375 1376 /* Phone: short headline + short copy, two-up action grid. */ 1377 @media (max-width: 639px) { 1378 .mm-consent { 1379 inset: auto 10px 10px; 1380 max-height: calc(100vh - 20px); 1381 padding: 16px; 1382 border-radius: 14px; 1383 } 1384 1385 .mm-consent__full { 1386 display: none; 1387 } 1388 1389 .mm-consent__short { 1390 display: inline; 1391 } 1392 1393 .mm-consent__title { 1394 font-size: 16px; 1395 } 1396 1397 .mm-consent__copy { 1398 margin-top: 6px; 1399 font-size: 13px; 1400 line-height: 1.5; 1401 } 1402 1403 .mm-consent__preferences { 1404 gap: 8px; 1405 margin-top: 14px; 1406 padding-top: 14px; 1407 } 1408 1409 .mm-consent__option { 1410 padding: 10px; 1411 font-size: 14px; 1412 } 1413 1414 .mm-consent__option span { 1415 font-size: 12px; 1416 } 1417 1418 .mm-consent__actions { 1419 display: grid; 1420 grid-template-columns: 1fr 1fr; 1421 margin-top: 14px; 1422 } 1423 1424 .mm-consent__button { 1425 width: 100%; 1426 min-height: 44px; 1427 padding: 0 10px; 1428 } 1429 1430 .mm-consent__button--wide { 1431 grid-column: 1 / -1; 1432 } 1433 1434 .mm-consent-settings { 1435 bottom: 10px; 1436 left: 10px; 1437 } 1438 } 1439 1440 @supports (max-height: 100dvh) { 1441 @media (max-width: 639px) { 1442 .mm-consent { 1443 max-height: calc(100dvh - 20px); 1444 } 1445 } 1446 } 1447 1448 @media (min-width: 760px) { 1449 .mm-consent { 1450 right: 24px; 1451 bottom: 24px; 1452 left: auto; 1453 width: min(720px, calc(100vw - 48px)); 1454 } 1455 } 1456</style> 1457 1458<div 1459 class="mm-consent" 1460 data-mm-consent 1461 role="dialog" 1462 aria-modal="true" 1463 aria-labelledby="mm-consent-title" 1464 hidden 1465> 1466 <h2 class="mm-consent__title" id="mm-consent-title"> 1467 <span class="mm-consent__full">Deine Privatsphäre-Einstellungen</span> 1468 <span class="mm-consent__short">Privatsphäre</span> 1469 </h2> 1470 <p class="mm-consent__copy"> 1471 <span class="mm-consent__full">Analyse- und Marketing-Technologien sind standardmässig aktiv, damit wir die Nutzung der Website verstehen und unsere Kampagnen messen können. Du kannst beides jederzeit deaktivieren.</span> 1472 <span class="mm-consent__short">Analyse und Marketing sind standardmässig aktiv und können jederzeit deaktiviert werden.</span> 1473 <a href="https://meetingmetrics.ai/privacy">Mehr erfahren</a> 1474 </p> 1475 1476 <div class="mm-consent__preferences" data-mm-consent-preferences hidden> 1477 <label class="mm-consent__option"> 1478 <input type="checkbox" checked disabled>
1479 <span> 1480 <strong>Notwendig</strong> 1481 <span>Speichert deine Auswahl und stellt die Website bereit.</span> 1482 </span> 1483 </label> 1484 <label class="mm-consent__option"> 1485 <input type="checkbox" data-mm-consent-analytics> 1486 <span> 1487 <strong>Analyse</strong> 1488 <span>Hilft uns mit Google Analytics und Microsoft Clarity, die Website zu verbessern.</span> 1489 </span> 1490 </label> 1491 <label class="mm-consent__option"> 1492 <input type="checkbox" data-mm-consent-marketing> 1493 <span> 1494 <strong>Marketing</strong> 1495 <span>Misst Google-Ads- und LinkedIn-Kampagnen und ermöglicht Website-Retargeting auf öffentlichen Seiten.</span> 1496 </span> 1497 </label> 1498 </div> 1499 1500 <div class="mm-consent__actions"> 1501 <button class="mm-consent__button mm-consent__button--primary" type="button" data-mm-consent-accept> 1502 Alle akzeptieren 1503 </button> 1504 <button class="mm-consent__button" type="button" data-mm-consent-reject> 1505 Nur notwendige 1506 </button> 1507 <button class="mm-consent__button mm-consent__button--wide" type="button" data-mm-consent-customize> 1508 Einstellungen 1509 </button> 1510 <button class="mm-consent__button mm-consent__button--primary mm-consent__button--wide" type="button" data-mm-consent-save hidden> 1511 Auswahl speichern 1512 </button> 1513 </div> 1514</div> 1515 1516 <button class="mm-consent-settings" type="button" data-mm-consent-settings hidden> 1517 Cookie-Einstellungen 1518 </button> 1519
1520<script> 1521 (() => { 1522 // wire:navigate swaps the <body> and re-runs this script. The consent 1523 // state (listeners, applied choice, gtag stub) must survive, but the 1524 // banner and settings button have to be bound to the fresh nodes. 1525 const queryUi = () => { 1526 const consentDialog = document.querySelector('[data-mm-consent]'); 1527 1528 return { 1529 consentDialog, 1530 settingsButton: document.querySelector('[data-mm-consent-settings]'), 1531 preferences: consentDialog.querySelector('[data-mm-consent-preferences]'), 1532 analyticsCheckbox: consentDialog.querySelector('[data-mm-consent-analytics]'), 1533 marketingCheckbox: consentDialog.querySelector('[data-mm-consent-marketing]'), 1534 customizeButton: consentDialog.querySelector('[data-mm-consent-customize]'), 1535 saveButton: consentDialog.querySelector('[data-mm-consent-save]'), 1536 acceptButton: consentDialog.querySelector('[data-mm-consent-accept]'), 1537 rejectButton: consentDialog.querySelector('[data-mm-consent-reject]'), 1538 }; 1539 }; 1540 1541 if (window.mmConsent) { 1542 window.mmConsent.bind(queryUi()); 1543 1544 return; 1545 } 1546 1547 const storageKey = 'meeting-metrics-cookie-consent-v1'; 1548 let ui = queryUi(); 1549 const listeners = []; 1550 const defaultConsent = Object.freeze({ analytics: true, marketing: true }); 1551 let appliedConsent = defaultConsent; 1552 1553 const readConsent = () => { 1554 try { 1555 const value = JSON.parse(localStorage.getItem(storageKey)); 1556 1557 if (typeof value?.analytics === 'boolean' && typeof value?.marketing === 'boolean') { 1558 return { 1559 analytics: value.analytics, 1560 marketing: value.marketing, 1561 }; 1562 } 1563 } catch (error) { 1564 return null; 1565 } 1566 1567 return null; 1568 }; 1569 1570 const ensureGtag = (consent) => { 1571 if (window.gtag) { 1572 return; 1573 } 1574 1575 window.dataLayer = window.dataLayer || []; 1576 window.gtag = function() { 1577 window.dataLayer.push(arguments); 1578 }; 1579 window.gtag('consent', 'default', { 1580 ad_storage: consent.marketing ? 'granted' : 'denied', 1581 ad_user_data: consent.marketing ? 'granted' : 'denied', 1582 ad_personalization: consent.marketing ? 'granted' : 'denied', 1583 analytics_storage: consent.analytics ? 'granted' : 'denied', 1584 }); 1585 window.gtag('js', new Date()); 1586 }; 1587 1588 const updateConsentMode = (consent) => { 1589 ensureGtag(appliedConsent); 1590 window.gtag('consent', 'update', { 1591 ad_storage: consent.marketing ? 'granted' : 'denied', 1592 ad_user_data: consent.marketing ? 'granted' : 'denied', 1593 ad_personalization: consent.marketing ? 'granted' : 'denied', 1594 analytics_storage: consent.analytics ? 'granted' : 'denied', 1595 }); 1596 }; 1597 1598 const applyConsent = (consent) => { 1599 updateConsentMode(consent); 1600 1601 const results = listeners.map((listener) => { 1602 try { 1603 return listener(consent); 1604 } catch (error) { 1605 return null; 1606 } 1607 }); 1608 1609 appliedConsent = consent; 1610 1611 window.dispatchEvent(new CustomEvent('mm:consent-changed', { detail: consent })); 1612 1613 return Promise.allSettled(results); 1614 }; 1615 1616 const showDialog = (showPreferences = false) => { 1617 const consent = readConsent(); 1618 1619 ui.analyticsCheckbox.checked = consent?.analytics ?? defaultConsent.analytics; 1620 ui.marketingCheckbox.checked = consent?.marketing ?? defaultConsent.marketing; 1621 ui.preferences.hidden = !showPreferences; 1622 ui.customizeButton.hidden = showPreferences; 1623 ui.saveButton.hidden = !showPreferences; 1624 if (ui.settingsButton) { 1625 ui.settingsButton.hidden = true; 1626 } 1627 ui.consentDialog.hidden = false;
1628 }; 1629 1630 const hideDialog = () => { 1631 ui.consentDialog.hidden = true; 1632 if (ui.settingsButton) { 1633 ui.settingsButton.hidden = false; 1634 } 1635 }; 1636 1637 const saveConsent = (consent) => { 1638 const choice = { 1639 analytics: consent.analytics === true, 1640 marketing: consent.marketing === true, 1641 }; 1642 1643 try { 1644 localStorage.setItem(storageKey, JSON.stringify({ 1645 ...choice, 1646 updatedAt: new Date().toISOString(), 1647 })); 1648 } catch (error) {} 1649 1650 // Already-loaded vendor scripts cannot be unloaded: withdrawing a 1651 // previously granted category needs a full reload. 1652 const requiresReload = (appliedConsent.analytics && !choice.analytics) 1653 || (appliedConsent.marketing && !choice.marketing); 1654 1655 if (requiresReload) { 1656 applyConsent(choice); 1657 window.location.reload(); 1658 1659 return; 1660 } 1661 1662 applyConsent(choice); 1663 hideDialog(); 1664 }; 1665 1666 const bindUi = (nodes) => { 1667 ui = nodes; 1668 1669 ui.acceptButton.addEventListener('click', () => { 1670 saveConsent({ analytics: true, marketing: true }); 1671 }); 1672 1673 ui.rejectButton.addEventListener('click', () => { 1674 saveConsent({ analytics: false, marketing: false }); 1675 }); 1676 1677 ui.customizeButton.addEventListener('click', () => { 1678 showDialog(true); 1679 }); 1680 1681 ui.saveButton.addEventListener('click', () => { 1682 saveConsent({ 1683 analytics: ui.analyticsCheckbox.checked, 1684 marketing: ui.marketingCheckbox.checked, 1685 }); 1686 }); 1687 1688 ui.settingsButton?.addEventListener('click', () => { 1689 showDialog(true); 1690 }); 1691 1692 if (readConsent()) { 1693 hideDialog(); 1694 } else { 1695 showDialog(); 1696 } 1697 }; 1698 1699 window.mmConsent = { 1700 read: readConsent, 1701 current: () => readConsent() ?? defaultConsent, 1702 save: saveConsent, 1703 openSettings: () => showDialog(true), 1704 onChange: (listener) => { 1705 listeners.push(listener); 1706 listener(window.mmConsent.current()); 1707 }, 1708 bind: bindUi, 1709 }; 1710 1711 const initialConsent = readConsent() ?? defaultConsent; 1712 1713 ensureGtag(initialConsent); 1714 appliedConsent = initialConsent; 1715 bindUi(ui); 1716 })(); 1717</script>
vendor: 1 bytes, line 1717
1717
1718<script> 1719 (() => { 1720 window.mmAnalyticsRouteUri = "about"; 1721 window.mmAnalyticsRoutePathname = window.location.pathname; 1722 1723 if (window.mmAnalyticsRoutePattern) { 1724 return; 1725 } 1726 1727 window.mmAnalyticsRoutePattern = (url) => { 1728 let path = '/'; 1729 1730 try { 1731 path = new URL(url || '/', window.location.origin).pathname || '/'; 1732 } catch (error) {} 1733 1734 if ( 1735 path === window.location.pathname 1736 && path === window.mmAnalyticsRoutePathname 1737 && typeof window.mmAnalyticsRouteUri === 'string' 1738 && window.mmAnalyticsRouteUri !== '' 1739 ) { 1740 return `/${window.mmAnalyticsRouteUri.replace(/^\/+/, '')}`; 1741 } 1742 1743 return path 1744 .split('/') 1745 .map((segment, index, segments) => { 1746 if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(segment)) { 1747 return ':uuid'; 1748 } 1749 1750 if (/^\d+$/.test(segment)) { 1751 return ':id'; 1752 } 1753 1754 return segment.length > 32 || segments[index - 1] === 'share' ? ':token' : segment; 1755 }) 1756 .join('/'); 1757 }; 1758 1759 window.mmAnalyticsPageParams = () => { 1760 const path = window.mmAnalyticsRoutePattern(window.location.pathname); 1761 let referrer = ''; 1762 1763 if (document.referrer) { 1764 try { 1765 const referrerUrl = new URL(document.referrer); 1766 1767 referrer = referrerUrl.origin === window.location.origin 1768 ? `${referrerUrl.origin}${window.mmAnalyticsRoutePattern(referrerUrl.pathname)}` 1769 : referrerUrl.origin; 1770 } catch (error) {} 1771 } 1772 1773 return { 1774 page_location: `${window.location.origin}${path}`, 1775 page_path: path, 1776 page_referrer: referrer, 1777 page_title: 'Meeting Metrics', 1778 }; 1779 }; 1780 })(); 1781</script>
1781 1782
1783<script> 1784 (() => { 1785 const config = {"enabled":true,"googleMeasurementId":"G-W1NRB9GVX2","clarityProjectId":null,"linkedInPartnerId":"9406498","linkedInConversionId":null,"googleAdsId":"AW-18412340798","googleAdsDemoConversion":null,"googleAdsDemoEmailHash":null,"attributionEndpoint":"https:\/\/meetingmetrics.ai\/marketing-attribution","csrfToken":"fEMpKXy6pgLqC3UGoJnEyJK2DDPPU7mghu0RX67n"}; 1786 const attributionSyncKey = 'meeting-metrics-ad-attribution-consent-v1'; 1787 const attributionParameters = [ 1788 'gclid', 1789 'gbraid', 1790 'wbraid', 1791 'utm_source', 1792 'utm_medium', 1793 'utm_campaign', 1794 'utm_term', 1795 'utm_content', 1796 ]; 1797 let analyticsAllowed = false; 1798 let googleAdsDemoConversionTracked = false; 1799 let linkedInConversionTracked = false; 1800 1801 const loadScript = (id, source, onLoad = null) => { 1802 if (!source || document.getElementById(id)) { 1803 return; 1804 } 1805 1806 const script = document.createElement('script'); 1807 script.id = id; 1808 script.async = true; 1809 script.src = source; 1810 1811 if (onLoad) { 1812 script.addEventListener('load', onLoad, { once: true }); 1813 } 1814 1815 document.head.appendChild(script); 1816 }; 1817 1818 const loadAnalytics = () => { 1819 if (!config.enabled) { 1820 return; 1821 } 1822 1823 analyticsAllowed = true; 1824 1825 if (config.googleMeasurementId && !document.getElementById('mm-google-analytics')) { 1826 window.gtag('config', config.googleMeasurementId, { 1827 send_page_view: false, 1828 ...window.mmAnalyticsPageParams(), 1829 }); 1830 1831 window.gtag('event', 'page_view', window.mmAnalyticsPageParams()); 1832 1833 loadScript( 1834 'mm-google-analytics', 1835 `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(config.googleMeasurementId)}` 1836 ); 1837 } 1838 1839 }; 1840 1841 const loadGoogleAds = () => { 1842 if (!config.enabled || !config.googleAdsId || document.getElementById('mm-google-ads')) { 1843 return; 1844 } 1845 1846 window.gtag('config', config.googleAdsId, { 1847 allow_enhanced_conversions: true, 1848 send_page_view: false, 1849 ...window.mmAnalyticsPageParams(), 1850 }); 1851 1852 loadScript( 1853 'mm-google-ads', 1854 `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(config.googleAdsId)}` 1855 ); 1856 }; 1857 1858 const currentAdAttribution = () => { 1859 const query = new URLSearchParams(window.location.search); 1860 const attribution = {}; 1861 1862 attributionParameters.forEach((parameter) => { 1863 const value = query.get(parameter); 1864 1865 if (value) { 1866 attribution[parameter] = value; 1867 } 1868 }); 1869 1870 if (Object.keys(attribution).length) { 1871 attribution.referrer = document.referrer || null; 1872 attribution.landing_path = window.location.pathname; 1873 } 1874 1875 return attribution; 1876 }; 1877 1878 const syncAdAttribution = (consent) => { 1879 if (!config.enabled || !config.attributionEndpoint) { 1880 return; 1881 } 1882 1883 const attribution = currentAdAttribution(); 1884 let lastSyncedConsent = null; 1885 1886 try { 1887 lastSyncedConsent = localStorage.getItem(attributionSyncKey); 1888 } catch {} 1889 1890 if (consent.marketing && !Object.keys(attribution).length) { 1891 return; 1892 } 1893 1894 if (!consent.marketing && lastSyncedConsent === 'denied') { 1895 return; 1896 } 1897 1898 try { 1899 fetch(config.attributionEndpoint, { 1900 method: 'POST', 1901 credentials: 'same-origin', 1902 keepalive: true, 1903 headers: { 1904 'Accept': 'application/json', 1905 'Content-Type': 'application/json', 1906 'X-CSRF-TOKEN': config.csrfToken, 1907 }, 1908 body: JSON.stringify(Object.assign( 1909 { marketing_consent: consent.marketing }, 1910 consent.marketing ? attribution : {}, 1911 )), 1912 }).then((response) => { 1913 if (response.ok) { 1914 localStorage.setItem(attributionSyncKey, consent.marketing ? 'granted' : 'denied'); 1915 } 1916 }).catch(() => {}); 1917 } catch {} 1918 }; 1919 1920 const trackGoogleAdsDemoConversion = () => { 1921 if (!config.enabled || !config.googleAdsDemoConversion || googleAdsDemoConversionTracked) { 1922 return; 1923 } 1924 1925 loadGoogleAds(); 1926 1927 1928 window.gtag('event', 'conversion', { 1929 ...config.googleAdsDemoConversion, 1930 ...window.mmAnalyticsPageParams(), 1931 }); 1932 googleAdsDemoConversionTracked = true; 1933 }; 1934 1935 const loadLinkedIn = () => { 1936 if (!config.enabled || !config.linkedInPartnerId || document.getElementById('mm-linkedin-insight')) { 1937 return; 1938 } 1939 1940 window._linkedin_partner_id = String(config.linkedInPartnerId); 1941 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 1942 1943 if (!window._linkedin_data_partner_ids.includes(window._linkedin_partner_id)) { 1944 window._linkedin_data_partner_ids.push(window._linkedin_partner_id); 1945 } 1946 1947 window.lintrk = window.lintrk || function() { 1948 (window.lintrk.q = window.lintrk.q || []).push(arguments); 1949 }; 1950 1951 loadScript('mm-linkedin-insight', 'https://snap.licdn.com/li.lms-analytics/insight.min.js'); 1952 }; 1953 1954 const trackLinkedInConversion = () => { 1955 if (!config.enabled || !config.linkedInConversionId || linkedInConversionTracked) { 1956 return; 1957 } 1958 1959 loadLinkedIn(); 1960 1961 if (typeof window.lintrk !== 'function') { 1962 return; 1963 } 1964 1965 window.lintrk('track', { 1966 conversion_id: Number(config.linkedInConversionId), 1967 }); 1968 linkedInConversionTracked = true; 1969 }; 1970 1971 const applyConsent = (consent) => { 1972 syncAdAttribution(consent); 1973 1974 if (consent.analytics) { 1975 loadAnalytics(); 1976 } 1977 1978 if (consent.marketing) { 1979 loadGoogleAds(); 1980 loadLinkedIn(); 1981 trackGoogleAdsDemoConversion(); 1982 trackLinkedInConversion(); 1983 } 1984 }; 1985 1986 window.mmTrackLandingEvent = (eventName, parameters = {}) => { 1987 if (!analyticsAllowed) { 1988 return; 1989 } 1990 1991 if (typeof window.gtag === 'function') { 1992 window.gtag('event', eventName, { 1993 ...parameters, 1994 ...window.mmAnalyticsPageParams(), 1995 }); 1996 } 1997 1998 if (typeof window.clarity === 'function' && parameters.cta_id) { 1999 window.clarity('set', 'cta_id', parameters.cta_id); 2000 } 2001 }; 2002 2003 if (!window.mmLandingAnalyticsBound) { 2004 window.mmLandingAnalyticsBound = true; 2005 2006 document.addEventListener('click', (event) => { 2007 const target = event.target.closest('[data-analytics-event]'); 2008 2009 if (!target) { 2010 return; 2011 } 2012 2013 window.mmTrackLandingEvent(target.dataset.analyticsEvent, { 2014 cta_id: target.dataset.analyticsId || '', 2015 cta_location: target.dataset.analyticsLocation || '', 2016 cta_destination: window.mmAnalyticsRoutePattern(target.dataset.analyticsDestination || target.getAttribute('href') || ''), 2017 cta_label: target.textContent.trim().replace(/\s+/g, ' '), 2018 page_path: window.location.pathname, 2019 }); 2020 }); 2021 } 2022 2023 window.mmConsent.onChange(applyConsent); 2024 })(); 2025</script>
2025 2026</body> 2027 2028</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.