Bevor du beginnst
Diese Dokumentation beschreibt den implementierten lokalen Build und ist kein Nachweis eines aktiven gehosteten Dienstes. Verwende zuerst eine genehmigte Staging-Installation. Anbieterzugriff, Absenderzustellung, Browserverhalten und dauerhafte Datenspeicherung der Bereitstellung müssen weiterhin geprüft werden.
Erstelle ein Konto und ein Projekt und lege den exakten Website-Origin fest, gegebenenfalls einschließlich Schema und Port. Die öffentliche Projekt-ID leitet Erfassungsanfragen weiter; sie ist weder ein Geheimnis noch ein Zugangsschlüssel für Einnahmen. Die Content Security Policy deiner Website muss den ausgewählten Analytics-Host zulassen.
1. Tracker laden
Ersetze beide Platzhalter durch deinen genehmigten Host und die öffentliche Projekt-ID. Allein das Laden des Skripts sendet keinen Seitenaufruf.
<script src="https://YOUR-ANALYTICS-HOST/tracker.js"
data-project="PUBLIC_PROJECT_ID"></script>2. Deine Einwilligungsentscheidung anbinden
Rufe diese Methoden nach dem Laden des Skripts aus deiner Einwilligungsverwaltung auf. Erteile keine Erlaubnis, nur weil dieses Beispiel consent(true) enthält. Sende nur tatsächlich benötigte Ereignisnamen; E-Mail-Adressen, Tokens oder andere sensible Angaben gehören weder in Ereignisnamen noch in Kampagnenwerte.
- Vor der Einwilligung gibt track() consent_required zurück, ohne ein Ereignis zu senden.
- Die Besucher-ID gilt nur für die Sitzung und wird erst nach Einwilligung gespeichert. Ein Widerruf entfernt diese gespeicherte ID.
- Konfiguriere einen exakt erlaubten Origin; öffentliche IDs und Browser-Origin-Prüfungen sind kein vollständiges Missbrauchsschutzsystem.
// After the visitor grants the relevant permission:
reylin.consent(true);
await reylin.track('pageview');
// A deliberate application event:
await reylin.track('signup');
// When permission is withdrawn:
reylin.consent(false);Optional: Seitenaufrufe mit Einwilligungssteuerung für eine Single-Page-App
Wähle manuelle Seitenaufrufe ODER diese automatische Routenregel; sende nicht beides für denselben Besuch. Automatische Seitenaufrufe bleiben deaktiviert, bis du eine ausdrückliche Zuordnung konfigurierst. Exakte Pfade und Präfixe mit abschließendem /* werden nicht personenbezogenen statischen Bezeichnungen zugeordnet; trage dort niemals Kundenkennungen ein. Query-Strings und gewöhnliche Fragmente werden nicht zu Seitenbezeichnungen. Die bestehende kategorische utm_source-Zuordnung bleibt unverändert.
Die Konfiguration kann vor der Einwilligung erfolgen. Navigations-Hooks, Kennungen oder Ereignisse entstehen aber erst nach deren Erteilung. Eine erneute Einwilligung erfasst nur die aktuelle zugeordnete Seite, niemals zuvor abgelehnten Verlauf. GPC=true blockiert Einwilligungen und Erfassung; die Prüfung erfolgt bei Tracker-Operationen und Navigation, nicht über ein erfundenes Browser-Änderungsereignis. Ein Widerruf stoppt Hooks und bricht ausstehende Anfragen ab, soweit unterstützt; bereits zugestellte Ereignisse lassen sich nicht zurückholen.
- pushState, replaceState sowie Vorwärts-/Rückwärtsnavigation werden unterstützt; Hash-Router beobachten zusätzlich hashchange. Doppelte Meldungen oder reine Query-Änderungen erzeugen keine zusätzlichen automatischen Ereignisse.
- Verschiedene konkrete Pfade können derselben statischen Bezeichnung zugeordnet sein und trotzdem als getrennte Navigationsereignisse zählen. Nicht zugeordnete Pfade werden nicht gesendet.
- initial:false überspringt die aktuelle Seite bei jeder Einrichtung oder Einwilligung; spätere Änderungen zugeordneter Routen werden erfasst. Automatische Wiederholungen oder nachträgliche Offline-Übertragungen werden nicht hinzugefügt.
- Router-Methoden behalten ihre ursprünglichen Rückgabewerte, Argumente und Ausnahmen. Beim Stoppen werden nur Tracker-eigene Wrapper zurückgesetzt; später von anderem Code installierte Wrapper bleiben erhalten. Eine reale Abnahme für Framework und Browser ist weiterhin erforderlich.
// Configure once after the script loads; this does NOT grant consent.
reylin.startPageviews({
mode: 'history', // use 'hash' for #/pricing-style routers
routes: {'/':'/', '/pricing':'/pricing', '/docs/*':'/docs'},
initial: true
});
// Later, only after the visitor permits collection:
reylin.consent(true);
// Stop automatic navigation only (does not withdraw consent):
reylin.stopPageviews();
// Withdraw all tracking consent:
reylin.consent(false);3. Eine einmalige Zahlung auf deinem Server zuordnen
Das folgende Beispiel zeigt eine serverseitige Struktur, keinen vollständigen Checkout-Endpunkt. Ermittle die mit Einwilligung erfasste Besucher-Verknüpfung über deinen eigenen validierten Anwendungsablauf. Preisauswahl, Zugangsdaten und Projekteigentum müssen unter Serverkontrolle bleiben. Lasse die Verknüpfung weg, wenn sie nicht verfügbar ist; erfinde keine.
- Session-Metadaten und PaymentIntent-Metadaten sind unterschiedliche Dinge.
- Sende keine geheimen oder eingeschränkten Stripe-Schlüssel an den Browser.
- Abonnementverlängerungen erfordern eine separate dauerhafte Kundenzuordnung; dieses Beispiel für Einmalzahlungen implementiert sie nicht.
const metadata = consentedVisitorId
? { analytics_visitor_id: consentedVisitorId }
: {};
const session = await stripe.checkout.sessions.create({
mode: 'payment',
line_items: trustedLineItems,
success_url: trustedSuccessUrl,
cancel_url: trustedCancelUrl,
payment_intent_data: { metadata }
});4. Das passende Einnahmenkonto verbinden
Diese Verbindung misst Zahlungen deiner Kunden; sie ist von deiner Bezahlung dieses Analytics-Dienstes getrennt. Wähle unter Connections dein eigenes Projekt, das passende Testmodus-Konto und einen eingeschränkten Leseschlüssel. Die Kontoidentität wird geprüft, bevor ein verschlüsselter Entwurf gespeichert wird. Der Entwurf stellt eine stabile Webhook-Endpunkt-URL bereit, weist Zustellungen aber bis zur Aktivierung zurück.
Lesezugriff ist für das Konto, PaymentIntents und Erstattungen nötig; der optionale begrenzte Import benötigt außerdem Events-Zugriff. Verwende die Entwurfs-URL, um in deinem eigenen Stripe-Konto einen Webhook-Endpunkt für payment_intent.succeeded, refund.created, refund.updated und refund.failed einzurichten. Trage anschließend das Signaturgeheimnis dieses Endpunkts im Aktivierungsformular des Entwurfs ein. Konto, Projekt, Modus und URL bleiben unverändert; erst die Aktivierung ermöglicht Zustellungen.
Die Live-Konfiguration ist bewusst getrennt und erfordert eine ausdrückliche serverseitige Aktivierung, HTTPS und Secure-Cookies. Test- und Live-Verbindungen dürfen kein Projekt teilen. Eine konfigurierte Verbindung beweist keine erfolgreiche Zustellung.
5. Den gesamten Ablauf prüfen
- Sende nach erteilter Einwilligung ein Testereignis vom erlaubten Origin und prüfe die Events-Ansicht des Projekts.
- Erstelle eine passende Testzahlung. Prüfe Quelle, Währung und Bruttozahlungseingänge – nicht die synthetische Demo.
- Teste eine Teilerstattung, wiederholte Zustellung und eine Zahlung ohne Besucher-Verknüpfung.
- Widerrufe die Einwilligung und bestätige, dass kein neues Browser-Ereignis gesendet wird.
- Prüfe Warnungen zu ausstehenden Abgleichen und erkläre die Einrichtung erst für abgeschlossen, wenn tatsächliche Anbieterzustellung und Browserverhalten verifiziert sind.
Die aktuellen Grenzen kennen
Monatliche Ereigniskontingente gelten gemeinsam für die Projekte des abrechnungsverantwortlichen Inhabers. Am Limit pausiert die neue Erfassung, ohne Daten zu erfinden oder automatisch Mehrverbrauch zu berechnen. Finanzabgleich und bestehende Berichte bleiben verfügbar.
Der optionale Import der letzten 7 oder 30 Tage umfasst nur verfügbare Ereignisse erfolgreicher Zahlungen. Er kann weder Besucherverläufe noch vollständige historische Erstattungen rekonstruieren; importierte Berichte tragen einen Hinweis auf unvollständige Historie. Geordnete mehrstufige Trichter sind implementiert. Import und Berichte der Search Console erfordern eine separat autorisierte Anbieteranbindung; diese öffentliche Vorschau hat keine verbundenen Anbieter. Geräteübergreifende Identität und ein Ersatz für Buchhaltungssysteme sind nicht verfügbar.
Quellen
Diese Dokumentation beschreibt den Code und seine Grenzen; sie bestätigt keine aktive Verbindung. Technische Beispiele behalten ihre ursprünglichen Bezeichner.