Das Wichtigste in Kürze
- Ein Funnel besteht aus wenigen Schritten zu einem einzigen Ziel; jeder Schritt ist ein eindeutig definiertes Ereignis.
- In einem geschlossenen Funnel zählt nur, wer beim ersten Schritt einsteigt, in einem offenen Funnel ist der Einstieg bei jedem Schritt möglich.
- Bevor du einen Abbruch deutest, prüfst du die Messung: Doppelte oder fehlende Ereignisse sehen genauso aus wie echte Abbrüche.
- Die Zahlen zeigen, wo du hinsehen musst; die Ursache findest du erst am Ablauf selbst.
Was eine Funnel-Analyse sichtbar macht
Ein Funnel (Trichter) ist eine Abfolge von Schritten, die Besucher auf dem Weg zu einem Ziel durchlaufen sollen: etwa von der Produktseite über den Warenkorb bis zum abgeschlossenen Kauf, oder von einer Einstiegsseite über das geöffnete Formular bis zur abgeschickten Anfrage. Die Analyse zeigt, an welchen Übergängen weniger Personen weitergehen.
Eine Abbruchstelle ist zunächst eine Beobachtung, keine Erklärung. Verlassen viele Besucher einen Schritt, ist damit offen, ob das Angebot nicht passt, ein Formular hakt oder schlicht die Messung lückenhaft ist. Aussagekräftig wird der Befund erst, wenn der Ablauf genau definiert, die Datenerfassung geprüft und der Schritt im Zusammenhang betrachtet ist.
Den Funnel vor der Auswertung festlegen
Schritte aus dem Ziel ableiten
Beginne mit dem Ziel und schreibe die nötigen Handlungen in der Reihenfolge auf, in der sie normalerweise passieren. Für eine Anmeldung können das der Besuch der Informationsseite, das Öffnen des Formulars und das erfolgreiche Absenden sein. Nimm nur Schritte auf, die zum selben Ziel gehören: Wer Newsletter-Anmeldungen und Käufe in einen Funnel packt, bekommt keinen klaren Ablauf.
Halte für jeden Schritt fest:
- welche Handlung er abbildet,
- welches Ereignis sie technisch auslöst,
- zu welcher Seite oder Funktion er gehört,
- woran ein erfolgreicher Abschluss erkennbar ist.
Ein Seitenaufruf ist nicht dasselbe wie eine abgeschlossene Handlung. Das bloße Laden der Formularseite ist noch keine Anmeldung, und ein Bestellabschluss gehört an eine bestätigte Rückmeldung, nicht an den Klick auf eine Schaltfläche.
Offener oder geschlossener Funnel
Entscheide, wo Besucher einsteigen dürfen. Die Google-Analytics-Hilfe unterscheidet zwei Varianten: In einem offenen Funnel können Nutzer bei jedem Schritt einsteigen, in einem geschlossenen Funnel müssen sie beim ersten Schritt beginnen. Ein offener Funnel passt, wenn Besucher regelmäßig direkt auf einer späteren Seite landen, etwa über einen Link direkt zum Formular. Ein geschlossener Funnel passt zu Abläufen, die streng aufeinander aufbauen.
Lege außerdem die Zähleinheit fest: Personen, Sitzungen oder einzelne Vorgänge. Für die Frage, wie viele Personen einen Ablauf abschließen, passt eine pseudonyme Nutzerkennung besser als die Zahl der Seitenaufrufe. Für Vorgänge, die sich wiederholen können, brauchst du eine Vorgangskennung. Die Einheit muss über alle Schritte gleich bleiben.
Schritt- und Gesamt-Conversion
Für jeden Übergang ergibt sich eine Schritt-Conversion: Besucher, die Schritt n erreichen, geteilt durch Besucher, die Schritt n − 1 erreicht haben. Die Gesamt-Conversion setzt den letzten Schritt ins Verhältnis zum ersten. Beide brauchst du: Die Gesamt-Conversion sagt, wie gut der Ablauf insgesamt funktioniert, die Schritt-Conversions zeigen, wo du zuerst hinsehen solltest. Wie die zugrunde liegende Conversion-Rate berechnet wird, erklärt der Artikel zur Conversion-Rate.
Lege schließlich Zeitraum und Segmente fest, bevor du auswertest: Ein Funnel über volle Wochen ist robuster als einer über zwei Tage, und eine Aufteilung nach Gerät oder Einstieg kann Unterschiede sichtbar machen, die der Gesamtwert verdeckt.
Ereignisse sauber erfassen
Ein Schritt gilt nur dann als erreicht, wenn das zugehörige Ereignis wirklich eingetreten ist. Ereignisnamen sollten eindeutig und stabil sein, etwa form_opened und form_submitted. Benenne ein Ereignis nicht nach der Gestaltung wie blue_button_click: Ändert sich die Oberfläche, passt der Name nicht mehr, obwohl die Handlung gleich bleibt.
Die folgende JavaScript-Funktion zeigt die Grundidee. Sie schickt ein Ereignis an einen eigenen Endpunkt; Verarbeitung und Speicherung müssen zu deiner Infrastruktur passen.
async function sendFunnelEvent(eventName, properties = {}) {
const payload = {
event_name: eventName,
occurred_at: new Date().toISOString(),
page_path: window.location.pathname,
...properties,
};
const response = await fetch("/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
keepalive: true,
});
if (!response.ok) {
console.error("Ereignis konnte nicht gespeichert werden");
}
}Die Option keepalive: true sorgt laut MDN dafür, dass der Browser die Anfrage nicht abbricht, wenn die Seite vorher verlassen wird; der Body solcher Anfragen ist auf 64 KiB begrenzt. Aufgerufen wird die Funktion dort, wo der Erfolg feststeht, nicht schon beim Klick:
form.addEventListener("submit", async (event) => {
event.preventDefault();
const submitted = await submitForm(form);
if (submitted) {
await sendFunnelEvent("form_submitted");
}
});Das Beispiel setzt eine vorhandene Funktion submitForm und einen passenden Endpunkt voraus. In einer echten Umsetzung kommen Fehlerbehandlung, Schutz vor doppeltem Absenden und die Anforderungen an Einwilligung und Datenschutz hinzu. Personenbezogene Formularinhalte gehören nicht in Analyseereignisse.
Erst die Messung prüfen, dann deuten
Prüfe, ob jedes Ereignis bei der vorgesehenen Handlung ausgelöst wird und nur einmal ankommt. Doppelte Ereignisse entstehen zum Beispiel, wenn ein Handler mehrfach registriert ist oder eine Bestätigungsseite neu geladen wird. Fehlende Ereignisse deuten auf blockierte Anfragen, technische Fehler oder eine Interaktion hin, die du nicht erfasst. Beides sieht in der Auswertung aus wie ein echter Abbruch.
Abbrüche auswerten: ein Python-Beispiel
Das folgende Skript liest eine CSV-Datei mit den Spalten user_id, event_name und occurred_at und zählt einen Schritt nur, wenn die vorherigen Schritte in der richtigen Reihenfolge erfasst wurden. Das entspricht einem geschlossenen Funnel. Die Daten sind ausgedacht:
user_id,event_name,occurred_at
u1,landing_viewed,2026-11-02T09:00:00Z
u1,form_opened,2026-11-02T09:01:10Z
u1,form_submitted,2026-11-02T09:03:40Z
u2,landing_viewed,2026-11-02T10:15:00Z
u2,form_opened,2026-11-02T10:16:30Z
u3,landing_viewed,2026-11-02T11:20:00Z
u4,form_opened,2026-11-02T12:00:00Z
u4,form_submitted,2026-11-02T12:02:00Z
u5,landing_viewed,2026-11-02T13:05:00Z
u5,form_opened,2026-11-02T13:06:00Z
u5,form_submitted,2026-11-02T13:09:00Z
u6,landing_viewed,2026-11-02T14:00:00Zimport csv
from collections import defaultdict
from datetime import datetime
schritte = ["landing_viewed", "form_opened", "form_submitted"]
ereignisse_je_nutzer = defaultdict(list)
with open("events.csv", newline="", encoding="utf-8") as datei:
for zeile in csv.DictReader(datei):
zeitpunkt = datetime.fromisoformat(zeile["occurred_at"].replace("Z", "+00:00"))
ereignisse_je_nutzer[zeile["user_id"]].append((zeitpunkt, zeile["event_name"]))
erreicht = [0] * len(schritte)
for ereignisse in ereignisse_je_nutzer.values():
ereignisse.sort(key=lambda e: e[0])
naechster = 0
for _, name in ereignisse:
if naechster < len(schritte) and name == schritte[naechster]:
erreicht[naechster] += 1
naechster += 1
for i, schritt in enumerate(schritte):
if i == 0:
print(f"{schritt}: {erreicht[i]}")
else:
uebergang = erreicht[i] / erreicht[i - 1] if erreicht[i - 1] else 0
print(f"{schritt}: {erreicht[i]} (Übergang vom Vorschritt: {uebergang:.0%})")
gesamt = erreicht[-1] / erreicht[0] if erreicht[0] else 0
print(f"Gesamt-Conversion: {gesamt:.0%}")Ausgabe:
landing_viewed: 5
form_opened: 3 (Übergang vom Vorschritt: 60%)
form_submitted: 2 (Übergang vom Vorschritt: 67%)
Gesamt-Conversion: 40%Nutzer u4 hat das Formular abgeschickt, taucht im Funnel aber nicht auf, weil er nicht auf der Einstiegsseite begonnen hat. In einem offenen Funnel würde er ab dem zweiten Schritt mitzählen. Genau solche Fälle entscheiden darüber, welche Variante zu deiner Frage passt. Das Skript wertet außerdem nur einen Durchlauf je Nutzerkennung aus; für Abläufe, die eine Person mehrmals durchläuft, bräuchtest du eine Vorgangskennung.
Warum Besucher abspringen
Ein Abbruch kann viele Ursachen haben: ein unklarer nächster Schritt, ein Formular mit unnötigen Pflichtfeldern, eine unverständliche Fehlermeldung, eine Funktion, die auf einem bestimmten Gerät nicht arbeitet, oder eine Seite, die nicht hält, was der Link davor versprochen hat. Auch Ladezeit kann eine Rolle spielen; wie du sie misst, steht bei den Core Web Vitals. Aus der Ereignisfolge allein lässt sich keine dieser Ursachen ablesen.
Sieh dir deshalb den betroffenen Schritt selbst an: Ist die nächste Handlung erkennbar? Sind Fehlermeldungen verständlich? Funktioniert der Ablauf auf dem Smartphone? Bei Formularen helfen Serverprotokolle und erfasste Fehlerzustände, sofern du sie datenschutzgerecht auswertest. Rückmeldungen von Nutzern, etwa über eine kurze Frage nach dem Abbruch oder über Support-Anfragen, liefern oft den entscheidenden Hinweis.
Auch die Zusammensetzung der Besucher macht einen Unterschied. Wer direkt auf einer Unterseite landet, braucht vielleicht andere Informationen als jemand, der den Ablauf von vorn beginnt. Eine Aufteilung nach Einstieg oder Gerät kann helfen; kleine Gruppen überinterpretierst du aber schnell.
Vom Befund zur Hypothese
Aus einem Abbruch wird erst etwas Nützliches, wenn du eine prüfbare Vermutung daraus machst: „Wenn das Formular nur noch die drei nötigen Felder abfragt, schicken mehr Besucher es ab, weil der Aufwand sinkt." Diese Hypothese prüfst du mit einer Änderung und einem vorab festgelegten Vergleich. Wie du zwei Varianten fair vergleichst und warum du nicht zu früh auswerten solltest, steht im Abschnitt zum A/B-Testing des Conversion-Rate-Artikels.
Dokumentiere dabei auch deine Ereignisdefinitionen: was jeden Namen auslöst, welche Kennung die Schritte verbindet und welche Fälle ausgeschlossen sind. So verschiebt eine geänderte Oberfläche nicht unbemerkt die Bedeutung der Auswertung.
Dein nächster Schritt
Wähle einen einzigen Ablauf auf deiner Website, zum Beispiel das Kontaktformular, und schreibe seine drei bis fünf Schritte mit Ereignisnamen und Erfolgsbedingung auf. Prüfe für jeden Schritt, ob das Ereignis genau einmal und erst beim tatsächlichen Erfolg ankommt. Erst dann lohnt die Auswertung; welche Kennzahlen du daneben im Blick behältst, klärt der Artikel zu Marketing-KPIs.
Häufige Fragen
Was tun, wenn derselbe Besucher den Ablauf mehrfach beginnt?
Lege vor der Auswertung fest, ob Wiederholungen als neue Vorgänge zählen. Eine Vorgangskennung trennt einzelne Durchläufe, eine Nutzerkennung fasst alles zu einer Person zusammen; welche passt, hängt vom Ziel des Funnels ab.
Wie trenne ich interne Aufrufe von echten Besuchen?
Am besten mit einer klar definierten Regel, die interne Nutzung schon vor der Auswertung erkennt. Nachträgliches Herausfiltern bleibt unvollständig, wenn interne und echte Besuche dieselben Merkmale haben; halte Ausschlüsse deshalb schriftlich fest.
Was ist bei einem Ablauf über mehrere Domains zu beachten?
Prüfe, ob die Kennung beim Wechsel zwischen den Domains erhalten bleibt und die Ereignisse zeitlich richtig zugeordnet werden. Sonst erscheint ein einziger Durchlauf als mehrere getrennte Besuche, und der Funnel zeigt Abbrüche, die es nicht gab.
Quellen
- [GA4] Funnel exploration Google Analytics-Hilfe (Google) · abgerufen am 13. November 2026
- RequestInit (keepalive) MDN Web Docs (Mozilla) · abgerufen am 13. November 2026
- HTMLFormElement: submit event MDN Web Docs (Mozilla) · abgerufen am 13. November 2026