Dokumentation
Erfahren Sie, wie Sie das Tracking-Tool verwenden
Tracker-Referenz
Alle Einstellungen des Tracking-Skripts an einem Ort: die Attribute für das Skript-Tag, dieselben Einstellungen im Code übergeben und die Funktionen, die das Skript auf der Seite bereitstellt. Diese Seite ist zum Nachschlagen gedacht, wenn Sie schon wissen, was Sie ändern wollen – wozu die einzelnen Einstellungen da sind und wann Sie sie ändern würden, steht in der Dokumentation zu den Tracker-Einstellungen Ihres Projekts.
Attribute am Skript-Tag
Alles Folgende steht am Skript-Tag selbst, als data--Attribut. Alle Attribute sind optional außer data-api-key. Was Sie weglassen, behält den Wert aus den Tracker-Einstellungen Ihres Projekts; was Sie hier setzen, hat Vorrang – aber nur für diese Seite. Deshalb steht in den meisten Zeilen unten kein Wert: Ohne das Attribut gilt das, was in Ihrem Projekt eingestellt ist.
| Attribut | Typ | Wenn Sie es weglassen | Was es bewirkt |
|---|---|---|---|
data-api-key | string | erforderlich | Der öffentliche Schlüssel Ihres Projekts. Ohne ihn wird überhaupt nichts gesendet. |
data-api-host | string | wird ermittelt | Wohin Events gesendet werden. Wird aus der Adresse des Skripts selbst abgeleitet, wenn Sie es weglassen – und das ist fast immer richtig. |
data-walk-depth | number | Ihre Tracker-Einstellungen | Wie viele Ebenen nach außen nach dem eigentlichen Bedienelement gesucht wird, wenn ein Klick auf etwas darin landet. |
data-flush-interval | number | Ihre Tracker-Einstellungen | Wie lange gewartet wird, bevor das Gesammelte gesendet wird, in Millisekunden. Werte unter 1000 werden ignoriert. |
data-max-queue-size | number | Ihre Tracker-Einstellungen | Sofort senden, sobald so viele Events warten, ohne das Intervall abzuwarten. |
data-max-text-length | number | Ihre Tracker-Einstellungen | Wie viel vom sichtbaren Text eines Elements aufbewahrt wird, in Zeichen. Längeres wird abgeschnitten. |
data-autocapture | string | Ihre Tracker-Einstellungen | Was von selbst erfasst wird: pageviews, clicks oder none für keines von beiden. Zwei davon trennen Sie mit einem Komma. clicks deckt auch Formularübermittlungen ab. |
data-pii-params | string | Ihre Tracker-Einstellungen | URL-Parameter, deren Wert durch :redacted ersetzt wird, bevor etwas den Browser verlässt. Der Name wird an beliebiger Stelle und ohne Rücksicht auf Groß- und Kleinschreibung verglichen, email erwischt also auch user_email. |
data-normalize-path-ids | boolean | Ihre Tracker-Einstellungen | Teile eines Pfads, die wie eine Kennung aussehen, durch :id ersetzen, sodass /orders/8f21 und /orders/9a03 zu einer Seite werden. Eine Kennung heißt: nur Ziffern, eine UUID (die lange Form mit Bindestrichen) oder acht und mehr Zeichen, die alle Ziffern oder die Buchstaben a bis f sind. |
data-pii-path-patterns | string | Ihre Tracker-Einstellungen | Ganze Pfadabschnitte, die durch :redacted ersetzt werden, als reguläre Ausdrücke geschrieben und durch Kommas getrennt. |
data-excluded-urls | string | Ihre Tracker-Einstellungen | Seiten, auf denen überhaupt nichts erfasst wird. * steht für irgendetwas, /admin/* deckt also den ganzen Verwaltungsbereich ab. Verglichen wird nur mit dem Pfad. |
data-sampling-rate | number | Ihre Tracker-Einstellungen | Anteil der zu erfassenden Seitenaufrufe, von 0.0 bis 1.0. Wird je Seitenaufruf entschieden, nicht je Besucher. |
data-traits | string | keine | Traits, die an die Session dieses Besuchers gehängt werden, durch Kommas getrennt. |
data-manual-init | an/aus | nicht gesetzt | Hält den Tracker davon ab, von selbst zu starten. Bis Sie init() aufrufen, wird nichts erfasst, auch nicht der erste Seitenaufruf. Dieser Aufruf erfasst dann selbst einen Seitenaufruf, für die Seite, auf der der Besucher beim Ausführen ist. |
Funktionen auf der Seite
init(config?)
Startet den Tracker. Sie brauchen ihn nur zusammen mit data-manual-init; sonst ist er längst gelaufen, wenn Ihr eigener Code an die Reihe kommt.
Nimmt ein TrackerInitConfig entgegen – dieselben Einstellungen wie die Attribute oben, unter ihren JavaScript-Namen:
interface TrackerInitConfig {
apiKey?: string;
apiHost?: string;
flushIntervalMs?: number;
maxQueueSize?: number;
walkDepth?: number;
maxTextLength?: number;
autocapturePageviews?: boolean;
autocapture?: boolean;
autocaptureElements?: string[];
piiUrlParams?: string[];
normalizePathIds?: boolean;
piiPathPatterns?: string[];
excludedUrls?: string[];
samplingRate?: number;
traits?: string[];
}track(name, attrs?)
Erfasst ein eigenes Event, mit einem Namen und optionalen Attributen. Die Beispiele stehen unter Benutzerdefinierte Events.
Attribute werden unverändert gespeichert. Übergeben Sie niemals eine Konto-ID, Benutzer-ID, E-Mail-Adresse, einen Benutzernamen oder einen Hash davon: Ein Wert, der für eine Person gleich bleibt, macht ihre Besuche über Tage hinweg verknüpfbar. Siehe Benutzerdefinierte Events.
setTraits(traits)
Ersetzt die Traits dieser Session durch das übergebene Array. Es ersetzt, statt zu ergänzen – übergeben Sie also jedes Mal den vollständigen Satz. Traits werden beim Senden eines Stapels angehängt, ein Aufruf erfasst deshalb auch die Events, die noch warten.
Die Werte, mit denen das Skript startet
Diese Werte bringt das Skript selbst mit, und sie haben genau eine Aufgabe: Sie sind die Regeln, die zwischen dem Start des Skripts und dem Eintreffen der Tracker-Einstellungen Ihres Projekts gelten, damit ein in dieser Spanne entstandenes Event überhaupt bereinigt werden kann. Ein Grund zu senden sind sie nie. Treffen die Einstellungen gar nicht ein, erfasst dieser Seitenaufruf nichts, statt unter Regeln zu erfassen, die nicht die Ihres Projekts sind – eingebaut ist etwa überhaupt keine Bereinigung von Pfaden.

| Einstellung | Eingebauter Wert |
|---|---|
| Sende-Intervall | 5000ms |
| Max. Warteschlangengröße | 10 |
| DOM-Suchtiefe | 3 |
| Max. Textlänge | 100 chars |
| Abtastrate | 100% |
| Automatische Erfassung | Seitenaufrufe und Klicks, beides an |
Wie Events gesendet werden
Events warten im Arbeitsspeicher des Browsers und gehen im Stapel hinaus – entweder wenn das Sende-Intervall abgelaufen ist oder sobald die Warteschlange max_queue_size erreicht, je nachdem, was zuerst eintritt. Ein Stapel ist eine Browser-Anfrage – ein fetch mit gesetztem keepalive –, und genau diese Einstellung lässt sie zu Ende laufen, auch wenn die Seite, die sie gestartet hat, längst weg ist. Derselbe Aufruf sendet den Rest, sobald die Seite ausgeblendet oder geschlossen wird. Alle drei Momente warten darauf, dass die Tracker-Einstellungen Ihres Projekts eingetroffen sind, auch der Versand beim Ausblenden oder Schließen – ein Tab, der eine Sekunde nach dem Öffnen geschlossen wird, kann also nichts senden, bevor die Einstellungen da sind. Im Browser des Besuchers wird dabei zu keinem Zeitpunkt etwas abgelegt.
Ein fehlgeschlagener Versand wird nicht immer wiederholt. Bei einem Netzwerk- oder Serverfehler wandern die Events wieder an den Anfang der Warteschlange und gehen beim nächsten Versuch mit. Eine Ablehnung nicht. Ein ungültiger Schlüssel, eine Website, die nicht in den erlaubten Domains des Projekts steht, oder ein Projekt über seinem Monatskontingent schaltet das Tracking für den Rest dieses Seitenaufrufs ab und schreibt in die Browser-Konsole, welcher der drei Fälle es war. Ein erneuter Versuch hilft nicht, und Schweigen würde Ihnen nichts lassen, wonach Sie suchen könnten.
Die Warteschlange fasst höchstens 100 Events. Darüber hinaus werden neue verworfen, damit eine Seite ohne funktionierenden Schlüssel keine endlose Warteschlange aufbaut.
Für die Anfrage, die die Einstellungen Ihres Projekts holt, gilt dieselbe Regel – und sie wiegt schwerer, denn vorher wird nichts gesendet. Ein Netzwerkfehler oder ein Timeout wird über einige Sekunden ein paar Mal wiederholt. Eine Ablehnung stoppt sie sofort: Ein falscher Schlüssel oder eine Website außerhalb der erlaubten Domains antwortet beim zweiten Mal nicht anders. Gelingt sie nie, sendet dieser Seitenaufruf nichts, und eine Zeile in der Konsole sagt, dass es so ist und warum.
Datenschutz auf einen Blick
Der Tracker ist auf Datenschutz hin gebaut: keine Cookies, kein localStorage, kein Fingerprinting, keine personenbezogenen Daten. Formularfeldwerte werden nie gelesen – es gibt keine Einstellung, die das einschaltet. URL-Parameter, die erfahrungsgemäß persönliche Daten enthalten, werden entfernt, bevor etwas gesendet wird. Das ganze Bild steht in der Datenschutz-Dokumentation.