UNPKG

@usertrax/tracker

Version:

Privacy-friendly conversion tracking and A/B testing script for UserTrax

434 lines (312 loc) 8.17 kB
# @usertrax/tracker Ein leichtgewichtiger JavaScript-Tracker für Conversion-Tracking und A/B-Testing mit Privacy-First-Ansatz. ## 🚀 Neue modulare Struktur Der UserTrax Tracker wurde in eine modulare Struktur umorganisiert, um sowohl eine kompakte Web-Version als auch eine flexible NPM-Package-Version zu unterstützen, ohne Code-Duplikation. **📁 [Detaillierte Struktur-Dokumentation](README_STRUCTURE.md)** ## 📦 Versionen ### 🌐 Web-Version (tracker.js) **Für einfache Websites mit einem Script-Tag** ```html <script src="https://usertrax.io/cvs.js" data-key="YOUR_KEY"></script> <script> window.usertrax.push({ event: 'purchase', total: 99.99, currency: 'EUR', }); </script> ``` ### 📦 NPM-Package-Version (tracker.esm.js) **Für moderne Web-Apps mit Build-Tools** ```javascript import UserTraxTracker from '@usertrax/tracker'; const tracker = new UserTraxTracker({ endpoint: 'https://api.usertrax.io/api/tracker/conversion', enableABTesting: true, }); await tracker.init(); tracker.trackConversion({ event: 'purchase', total: 99.99, currency: 'EUR', }); ``` ## 🎯 Features - **Privacy-friendly**: No cookies required - **A/B Testing**: Built-in A/B testing support - **Cross-domain tracking**: Track users across multiple domains - **Conversion tracking**: Track purchases, signups, and custom events - **Session management**: Automatic session tracking - **Engagement metrics**: Scroll depth, time on page, clicks - **UTM parameter tracking**: Automatic UTM parameter capture - **Ad platform integration**: Google Ads, Facebook, Microsoft Ads, TikTok ## Installation ### NPM Package ```bash npm install @usertrax/tracker ``` ### CDN (Script Tag) ```html <script src="https://usertrax.io/cvs.js" data-key="YOUR_AUTH_KEY"></script> ``` ## Schnellstart ### 1. NPM Package Integration ```javascript import UserTrax from '@usertrax/tracker'; // Initialisieren UserTrax.init(); // Conversion tracken UserTrax.track('purchase', { total: 99.99, currency: 'EUR', id: 'order_123', }); ``` ### 2. Script Tag Integration ```html <script src="https://usertrax.io/cvs.js" data-key="YOUR_AUTH_KEY"></script> ``` ## API Referenz ### Konfiguration ```javascript const config = { endpoint: 'https://api.usertrax.io/api/tracker/conversion', sessionEndpoint: 'https://api.usertrax.io/api/tracker/session', pageviewEndpoint: 'https://api.usertrax.io/api/tracker/pageview', autoTrack: true, enableABTesting: true, enableCrossDomainTracking: true, crossDomainParamName: 'uxs', crossDomainDomains: [], }; ``` ### Core Methods #### `init(config)` Initialisiert den Tracker mit Konfiguration. ```javascript UserTrax.init(); ``` #### `track(event, data)` Trackt ein Conversion-Event. ```javascript UserTrax.track('purchase', { total: 99.99, currency: 'EUR', id: 'order_123', }); ``` #### `trackConversion(data)` Trackt ein vollständiges Conversion-Event. ```javascript UserTrax.trackConversion({ event: 'purchase', total: 99.99, currency: 'EUR', id: 'order_123', metadata: { product: 'premium_plan', source: 'landing_page', }, }); ``` ### A/B Testing #### `getVariant(testKey)` Holt die aktuelle Variante für einen A/B-Test. ```javascript const variant = UserTrax.getVariant('button_color'); // Returns: 'red' | 'blue' | null ``` #### `getAssignments()` Holt alle A/B-Test-Zuweisungen. ```javascript const assignments = UserTrax.getAssignments(); // Returns: { 'button_color': 'red', 'headline': 'blue' } ``` #### `applyElementVisibility()` Wendet A/B-Test-Sichtbarkeit auf HTML-Elemente an. ```javascript UserTrax.applyElementVisibility(); ``` ### Session Management #### `getSessionId()` Holt die aktuelle Session-ID. ```javascript const sessionId = UserTrax.getSessionId(); ``` #### `refreshSession()` Erstellt eine neue Session-ID. ```javascript UserTrax.refreshSession(); ``` ### Funnel Tracking #### `trackFunnel(event)` Trackt ein Funnel-Event. ```javascript UserTrax.trackFunnel({ funnel_id: 'checkout_funnel', step_number: 1, step_name: 'cart_view', event_name: 'page_view', }); ``` #### `trackFunnelBatch(events)` Trackt mehrere Funnel-Events in einem Batch. ```javascript UserTrax.trackFunnelBatch([ { funnel_id: 'checkout_funnel', step_number: 1, step_name: 'cart_view', }, { funnel_id: 'checkout_funnel', step_number: 2, step_name: 'checkout_form', }, ]); ``` ### Utility Methods #### `getAttribution()` Holt Attribution-Daten (UTM, Click IDs). ```javascript const attribution = UserTrax.getAttribution(); // Returns: { gclid: '...', utm_source: 'google', ... } ``` #### `getDeviceInfo()` Holt Geräte-Informationen. ```javascript const deviceInfo = UserTrax.getDeviceInfo(); // Returns: { deviceType: 'desktop', browser: 'Chrome', os: 'macOS' } ``` #### `debug(enabled)` Aktiviert/Deaktiviert Debug-Modus. ```javascript UserTrax.debug(true); ``` ### Helper Methods #### `createTracker(event, defaultData)` Erstellt einen wiederverwendbaren Tracker. ```javascript const purchaseTracker = UserTrax.createTracker('purchase', { currency: 'EUR', source: 'website', }); // Verwendung purchaseTracker({ total: 99.99, id: 'order_123' }); ``` #### `trackForms(selector, event)` Trackt automatisch Formular-Submissions. ```javascript UserTrax.trackForms('form', 'form_submit'); ``` #### `trackButtons(selector, event)` Trackt automatisch Button-Klicks. ```javascript UserTrax.trackButtons('button, .btn', 'button_click'); ``` #### `trackExternalLinks(event)` Trackt automatisch externe Link-Klicks. ```javascript UserTrax.trackExternalLinks('external_link_click'); ``` ## HTML Integration ### Automatisches Conversion-Tracking ```html <a href="/checkout" data-usertrax="purchase" data-usertrax-total="99.99" data-usertrax-currency="EUR" > Kaufen </a> ``` ### A/B Testing mit HTML ```html <!-- Variante A --> <div data-usertrax-ab-test-group="button_test" data-usertrax-ab-test-variant="red"> <button style="background: red;">Kaufen</button> </div> <!-- Variante B --> <div data-usertrax-ab-test-group="button_test" data-usertrax-ab-test-variant="blue"> <button style="background: blue;">Kaufen</button> </div> <!-- Fallback --> <div data-usertrax-ab-test-group="button_test" data-usertrax-ab-test-fallback> <button style="background: gray;">Kaufen</button> </div> ``` ## Cross-Domain Tracking ```javascript UserTrax.init({ enableCrossDomainTracking: true, crossDomainParamName: 'uxs', crossDomainDomains: ['example.com', 'shop.example.com'], }); ``` ## Framework Integration ### React ```javascript import { useEffect } from 'react'; import UserTrax from '@usertrax/tracker'; function App() { useEffect(() => { UserTrax.init(); }, []); const handlePurchase = () => { UserTrax.track('purchase', { total: 99.99, currency: 'EUR', }); }; return <button onClick={handlePurchase}>Kaufen</button>; } ``` ### Vue.js ```javascript import { onMounted } from 'vue'; import UserTrax from '@usertrax/tracker'; export default { setup() { onMounted(() => { UserTrax.init(); }); const handlePurchase = () => { UserTrax.track('purchase', { total: 99.99, currency: 'EUR', }); }; return { handlePurchase }; }, }; ``` ### Next.js ```javascript // pages/_app.js import { useEffect } from 'react'; import UserTrax from '@usertrax/tracker'; function MyApp({ Component, pageProps }) { useEffect(() => { UserTrax.init(); }, []); return <Component {...pageProps} />; } export default MyApp; ``` ## Datenschutz - **Keine Cookies**: Verwendet sessionStorage statt Cookies - **GDPR-konform**: Keine personenbezogenen Daten ohne Einwilligung - **Opt-out**: Kann über `autoTrack: false` deaktiviert werden - **Privacy-First**: Minimale Datensammlung, maximale Privatsphäre ## Browser-Unterstützung - Chrome 60+ - Firefox 55+ - Safari 12+ - Edge 79+ - IE 11+ (mit Polyfills) ## Lizenz MIT License - siehe [LICENSE](LICENSE) Datei für Details. ## Support - 📧 Email: support@usertrax.io - 📖 Dokumentation: https://usertrax.io/docs