Ein praktischer Leitfaden zu serverseitiges Tracking
TL;DR — Kurzantwort
5 Min. LesezeitMit benutzerdefinierten Ereignissen können Sie die tatsächliche Blog-Leserzahl anhand des Artikelfortschritts und der begrenzten aktiven Zeit messen und anschließend serverseitige Registrierungen genau verfolgen – weit über die grundlegenden Seitenaufrufmetriken hinaus.
Dieser Leitfaden erklärt serverseitiges Tracking praxisnah und mit Fokus auf datenschutzfreundliche Analytics-Entscheidungen.
Die serverseitige Analyseverfolgung ist nützlich, wenn das Ereignis auf Ihrem Server auftritt oder wenn die clientseitige Verfolgung unzuverlässig ist. Zwei gängige Beispiele sind Blog-Leserzahlen und Registrierungen. Ein Browser kann den Artikelfortschritt und die aktive sichtbare Zeit abschätzen; Der Server kann Ihnen sagen, ob tatsächlich ein Konto erstellt wurde.
Das beste Setup vereint beides, ohne unnötige persönliche Daten zu sammeln.
Messung des echten Blog-Lesens
Ein Seitenaufruf ist eine schwache Inhaltsmetrik. Jemand springt möglicherweise sofort ab, lässt den Tab geöffnet oder scrollt nach unten, ohne zu lesen. Eine bessere „Lese“-Event vereint:
- Mindestaktive Zeit basierend auf der Wortanzahl.
- Scrolltiefe innerhalb des Artikelcontainers.
- Sichtbarkeitsstatus, sodass Hintergrundregisterkarten nicht gezählt werden.
- Ein einmaliges Ereignis, sodass Aktualisierungen keine doppelten Lesevorgänge verursachen.
Beispielsweise könnte ein Artikel mit 1.200 Wörtern mindestens 5 Minuten aktive Zeit bei etwa 220 bis 250 Wörtern pro Minute plus 80 Prozent Scrollen des Artikels erfordern. Betrachten Sie diese Zahl nicht als universell. Technische Dokumente, rechtliche Inhalte und Vergleichsbeiträge werden unterschiedlich schnell gelesen.
Beispiel für ein clientseitiges Ereignis
const article = document.querySelector('[data-article]');
const words = Number(article?.dataset.words || 0);
const estimatedSeconds = Math.round((words / 230) * 60);
const minSeconds = Math.min(420, Math.max(30, estimatedSeconds * 0.6));
const maxCreditSeconds = Math.min(900, Math.max(90, estimatedSeconds * 1.5));
let activeSeconds = 0;
let articleVisible = false;
let reachedDepth = false;
let sent = false;
const depthMarker = document.createElement('span');
depthMarker.setAttribute('aria-hidden', 'true');
depthMarker.style.cssText = 'position:absolute;top:75%;left:0;width:1px;height:1px;';
if (article) {
article.style.position ||= 'relative';
article.appendChild(depthMarker);
}
function maybeSendRead() {
if (sent || !article || !reachedDepth || activeSeconds < minSeconds) return;
sent = true;
navigator.sendBeacon(
'/analytics/article-read',
JSON.stringify({
slug: article.dataset.slug,
wordCount: words,
activeSeconds,
})
);
}
const observer = new IntersectionObserver(
(entries) => {
for (const entry of entries) {
if (entry.target === article) articleVisible = entry.isIntersecting;
if (entry.target === depthMarker && entry.isIntersecting) reachedDepth = true;
}
maybeSendRead();
},
{ threshold: 0 }
);
if (article) {
observer.observe(article);
observer.observe(depthMarker);
}
setInterval(() => {
if (sent || !articleVisible || document.visibilityState !== 'visible') return;
activeSeconds = Math.min(activeSeconds + 1, maxCreditSeconds);
maybeSendRead();
}, 1000);Dadurch wird vermieden, dass ein schnelles Scrollen nach unten als Lesevorgang gezählt wird. Außerdem wird die Gutschrift für die aktive Zeit begrenzt, es wird pausiert, wenn die Seite ausgeblendet wird, und es wird eine Tiefenmarkierung auf Artikelebene verwendet, anstatt die Scrolltiefe anhand des gesamten Dokuments zu messen.
Serverseitige Registrierungsverfolgung
Registrierungen sollten nachverfolgt werden, nachdem der Server den Erfolg bestätigt hat, und nicht, wenn der Benutzer auf „Senden“ klickt. Bei clientseitigen Formularen werden zu viele Formulare übermittelt, da die Validierung fehlschlagen kann, doppelte Anforderungen auftreten können und Bots Formulare auslösen können.
Ein serverseitiges Ereignis sollte nur sichere Felder enthalten:
- Ereignisname:
registration_completed. - Zeitstempel.
- Anonyme Besucher- oder Sitzungsreferenz, sofern verfügbar und rechtmäßig.
- Plan- oder Anmeldepfad.
- UTM-Quelle bei der Landung erfasst.
- Kontotyp oder Arbeitsbereichsgröße.
Vermeiden Sie E-Mail-, Namens-, IP-Adressen, rohe Benutzer-IDs, Passwortstatus oder Freitextfelder in Analysen. Wenn Sie Ereignisse intern mit Konten verknüpfen müssen, speichern Sie diese Zuordnung in Ihrer Produktdatenbank und nicht in einem Analyseereignis eines Drittanbieters.
Deduplizierung
Verwenden Sie einen Idempotenzschlüssel für Serverereignisse. Ein Registrierungsereignis sollte einmal pro Kontoerstellung ausgelöst werden, auch wenn der Benutzer die Erfolgsseite aktualisiert oder einen Webhook erneut versucht.
await analytics.track({
event: 'registration_completed',
idempotencyKey: `registration:${account.id}`,
properties: {
plan: account.plan,
source: attribution.source,
campaign: attribution.campaign,
},
});Datenschutz-Checkliste
- Verfolgen Sie Lesevorgänge auf sensiblen Seiten nicht, es sei denn, dies ist erforderlich.
- Halten Sie Artikelereignisse nach Möglichkeit aggregiert.
- Entfernen Sie Abfrageparameter, bevor Sie Pfade speichern.
- Senden Sie keine personenbezogenen Daten in Event-Eigenschaften.
- Dokumentieren Sie die Aufbewahrung von Rohereignissen.
- Respektieren Sie die Zustimmungsanforderungen für clientseitige Speicherung oder Identifikatoren.
Serverseitiges Tracking ist nicht automatisch datenschutzfreundlich. Besser ist es, wenn es verifizierte Geschäftsereignisse mit minimierter Nutzlast aufzeichnet. Verwenden Sie den Browser für Signale, die nur der Browser kennen kann, und verwenden Sie den Server für Fakten, die nur der Server bestätigen kann.
Datenqualitätsprüfungen
Vergleichen Sie Artikelleseereignisse mit Seitenaufrufen. Wenn jeder Seitenaufruf zu einem Lesevorgang wird, ist der Schwellenwert zu niedrig oder das Ereignis wird beim Laden ausgelöst. Wenn bei langen Artikeln mit starkem Engagement fast keine Lesevorgänge auftreten, ist die Scroll-Berechnung möglicherweise falsch, da das gesamte Dokument anstelle des Artikelcontainers verwendet wird.
Gleichen Sie für Registrierungen Analyseereignisse mit der Anwendungsdatenbank ab. Eine tägliche Zählung von registration_completed sollte mit der Kontoerstellung innerhalb des erwarteten Wiederholungs- und Löschverhaltens übereinstimmen. Ist dies nicht der Fall, beheben Sie das Serverereignis, bevor Sie es für die Marketingzuordnung verwenden.
Einwilligung und Transparenz
Wenn das Tracking nur aggregierte Ereignisse und keine Gerätespeicherung verwendet, ist die Belastung für den Datenschutz geringer. Wenn Sie Identifikatoren festlegen, Leseereignisse mit Konten verknüpfen oder die Daten zur Personalisierung verwenden, aktualisieren Sie die Einwilligungs- und Datenschutzhinweise entsprechend. Serverseitig bedeutet nicht unsichtbar; Benutzer verdienen immer noch eine ehrliche Erklärung.
Zuverlässigkeitsdetails, die wichtig sind
Bevorzugen Sie beim Senden von Leseereignissen vom Browser Übermittlungsmethoden, die für das Entladen von Seiten konzipiert sind. Mit dem Beacon API kann der Browser eine kleine asynchrone Anfrage senden, ohne die Navigation zu blockieren. Dies ist nützlich für Analyseereignisse, die gegen Ende eines Besuchs ausgelöst werden (MDN Beacon API). Halten Sie die Nutzdaten klein und unempfindlich, da Beacons kein Ort für große Debug-Objekte sind.
Flowsery
Kostenlos testen
Echtzeit-Dashboard
Zielverfolgung
Cookie-freies Tracking
Gestalten Sie bei Registrierungsereignissen das serverseitige Ereignis wie eine Finanztransaktion:
- Lösen Sie es erst aus, nachdem das Konto oder der Registrierungsdatensatz festgeschrieben wurde.
- Fügen Sie einen Idempotenzschlüssel basierend auf dem internen Datensatz hinzu.
- Versuchen Sie es sicher noch einmal, wenn der Analyseendpunkt vorübergehend nicht verfügbar ist.
- Speichern Sie ein kurzes Prüfprotokoll des Lieferstatus.
- Anzahlen mit der Produktdatenbank abgleichen.
Wenn es auf die Attribution ankommt, erfassen Sie UTMs zum Zeitpunkt der Landung und speichern Sie sie in einem First-Party-Attributionsdatensatz mit einer klaren Aufbewahrungsfrist. Wenn die Registrierung erfolgreich ist, fügen Sie sichere Kampagnenfelder wie Quelle, Medium, Kampagne und Zielseite hinzu. Hängen Sie nicht den vollständigen Browserverlauf des Besuchers an.
Seien Sie bei der Lesezeitanalyse vorsichtig, wenn Tabs geöffnet bleiben. Zählen Sie die aktive sichtbare Zeit, pausieren Sie, wenn die Seite ausgeblendet ist, und berücksichtigen Sie ein maximales Credit-Fenster, damit ein Tab in der Mittagspause nicht zu einer „40-Minuten-Lesung“ wird. Verwenden Sie für sehr kurze Beiträge einen Mindestschwellenwert; Vermeiden Sie bei langen Beiträgen das Erfordernis eines 100-prozentigen Scrollens, da die Leser möglicherweise vor der endgültigen Biografie des Autors oder dem Abschnitt mit verwandten Beiträgen einen Mehrwert erhalten.
Das beste Signal ist nicht nur die „verbrachte Zeit“. Es ist Zeit plus sinnvoller Fortschritt plus Folgeaktion wie Newsletter-Anmeldung, Besuch einer Produktseite oder Registrierung.
Lese- und Registrierungs-QA
Behandeln Sie das Lesen von Artikeln als ein Signal für die Qualität des Inhalts und nicht als Beweis dafür, dass jedes Wort von einer identifizierbaren Person gelesen wurde. Bestätigen Sie Folgendes:
- Eine Hintergrundregisterkarte sammelt keine Zeit.
- Ein schnelles Scrollen löst keinen Lesevorgang aus.
- Lange Artikel begrenzen das aktive Zeitguthaben.
- Das Ereignis wird einmal pro Seitenaufruf ausgelöst.
- Für sensible Artikelkategorien wird nur die aggregierte Berichterstattung verwendet.
- Registrierungsereignisse stimmen mit bestätigten Konten überein, nicht mit Schaltflächenklicks.
Halten Sie das Browsersignal und die Serverfakten getrennt. Der Browser kann sinnvolle Lektüre einschätzen. Der Server kann die Registrierung bestätigen. Es ist nützlich, sie sorgfältig zu kombinieren. Wenn man vorgibt, dass eines davon perfekt ist, entstehen verrauschte Analysen.
War dieser Artikel hilfreich?
Teilen Sie uns Ihre Meinung mit!
Bevor Sie gehen...
Flowsery
Umsatzorientierte Analysen für Ihre Website
Verfolgen Sie jeden Besucher, jede Quelle und jede Conversion in Echtzeit. Einfach, leistungsstark und vollständig DSGVO-konform.
Echtzeit-Dashboard
Zielverfolgung
Cookie-freies Tracking
Verwandte Artikel
Ein praktischer Leitfaden zu Verfolgen Sie die Videowiedergabe mit
Erfahren Sie, wie Verfolgen Sie die Videowiedergabe mit datenschutzfreundliche Analytics, Messqualität und praktische Website-Entscheidungen beeinflusst.
Ein praktischer Leitfaden zu Scroll-Tiefe
Erfahren Sie, wie Scroll-Tiefe datenschutzfreundliche Analytics, Messqualität und praktische Website-Entscheidungen beeinflusst.
Ein praktischer Leitfaden zu 404-Fehler
404-Fehler beeinträchtigen die Benutzererfahrung, die Sichtbarkeit in der Suche und die Conversions. Erfahren Sie, wie Sie fehlerhafte Seiten in Ihren Analysen erkennen, die schlimmsten Probleme priorisieren und sie mit Weiterleitungen und saubereren Links beheben.