Modulseite

Lektion 1 von 9

Ereignisse, Sitzungen, Nutzer: so misst Web-Analytics

Du verstehst, was ein Analysetool wirklich aufzeichnet, unterscheidest Ereignisse, Sitzungen und Nutzer sicher und berechnest Grundkennzahlen selbst mit SQL.

ca. 40 Min.0/4 Checks gelöst

Worum es geht

Die Sprachschule LinguaPlus AG in Luzern hat eine schöne Website mit über hundert Kursseiten. Jeden Monat kommen Tausende Besucherinnen und Besucher, aber die Online-Anmeldungen stagnieren. Die Marketingleiterin stellt Aylin, Lernende im 3. Lehrjahr, eine scheinbar einfache Frage: "Wie viele Leute schauen sich einen Kurs an und melden sich dann nicht an?"

Niemand kann antworten. Es gibt zwar ein altes Analysetool, aber dort stehen dreissig Zahlen, und niemand weiss genau, was "Besucher", "Besuche" oder "Aktionen" eigentlich bedeuten. Genau hier beginnt Web-Analytics: nicht mit bunten Dashboards, sondern mit der Frage, was ein Analysetool überhaupt aufzeichnet.

In dieser Lektion lernst du die drei Grundbausteine jeder Auswertung kennen: Ereignisse, Sitzungen und Nutzer. Wenn du diese drei sauber auseinanderhalten kannst, verstehst du jede Kennzahl in Google Analytics 4 (GA4), Matomo oder Plausible, und du kannst sie sogar selbst mit SQL aus Rohdaten berechnen.

Was bei einem Seitenaufruf passiert

Stell dir eine Stempelkarte im Café vor. Jedes Mal, wenn du einen Kaffee kaufst, gibt es einen Stempel. Das Café weiss danach nicht, wer du bist, aber es sieht auf deiner Karte, wie oft du da warst. Ein Analysetool funktioniert ähnlich, nur viel detaillierter.

Wenn jemand www.linguaplus.ch/kurse/spanisch-a2 öffnet, passiert Folgendes:

Das Tracking-Script schickt eine kleine Nachricht an den Analytics-Server. Vereinfacht sieht sie so aus:

JSON
{
  "ereignis": "page_view",
  "client_id": "1873462.1759480211",
  "session_id": "1759480211",
  "zeitpunkt": "2026-09-14T19:42:07+02:00",
  "seite": "/kurse/spanisch-a2",
  "referrer": "https://www.google.ch/",
  "geraet": "mobile"
}

Der Server ergänzt weitere Angaben, zum Beispiel ein grobes Land oder eine Region aus der IP-Adresse, Browser und Betriebssystem. Später, wenn die lernende Person auf "Termin wählen" klickt oder das Anmeldeformular abschickt, sendet das Script weitere Nachrichten mit anderen Ereignisnamen.

Wichtig: Das Tool sieht keine Menschen, sondern nur einen Strom solcher Nachrichten. Alles, was du später in Berichten siehst, wird aus diesem Strom berechnet.

Ereignisse, Sitzungen und Nutzer

Nimm als Bild ein Einkaufszentrum. Es gibt Personen, die kommen (Nutzer). Jede Person kann an mehreren Tagen kommen (Sitzungen). Bei jedem Besuch macht sie Dinge: Laden betreten, Pullover anprobieren, an der Kasse zahlen (Ereignisse).

BegriffWas es istBeispiel LinguaPlus
Ereignis (Event)eine einzelne gemessene Aktion mit Name, Zeitpunkt und Parameternpage_view auf /kurse/spanisch-a2, anmeldung_start mit Parameter sprache = spanisch
Sitzung (Session, in Matomo "Besuch")eine Folge von Ereignissen desselben Nutzers ohne längere PauseAbends von 19:42 bis 19:55 drei Kursseiten angeschaut
Nutzer (User, in Matomo "Besucher")ein wiedererkannter Browser oder ein Gerät, erkannt über eine IDdasselbe Handy kommt am Montag und am Donnerstag wieder

Daraus folgt eine einfache Hierarchie: Ein Nutzer hat mindestens eine Sitzung, eine Sitzung hat mindestens ein Ereignis.

Wann endet eine Sitzung? In GA4 und in Matomo standardmässig nach 30 Minuten ohne Aktivität. Wer um 19:42 eine Seite öffnet, um 19:55 die nächste und dann erst um 20:40 weiterliest, hat zwei Sitzungen. GA4 beginnt um Mitternacht oder bei einer neuen Kampagnenquelle keine neue Sitzung, andere Tools tun das teilweise.

Wer ist ein Nutzer? Das Script speichert beim ersten Besuch eine zufällige ID in einem Cookie (bei GA4 die client_id). Kommt derselbe Browser wieder, ist es derselbe Nutzer. Das hat Folgen:

  • Lea auf dem Handy und Lea am Laptop sind zwei Nutzer.
  • Löscht Lea ihre Cookies oder surft privat, ist sie danach ein neuer Nutzer.
  • Lehnt Lea das Tracking im Consent-Banner ab, wird sie je nach Einstellung gar nicht gezählt.
  • Meldet sich Lea in einem Kundenkonto an, kann die Website eine eigene User-ID mitschicken. Dann lassen sich Geräte zusammenführen.

Die Tools verwenden unterschiedliche Namen für dasselbe:

KonzeptGA4 (deutsche Oberfläche)Matomo
NutzerNutzer, Aktive NutzerEindeutige Besucher
SitzungSitzungenBesuche
EreignisEreignisseAktionen, Ereignisse
Ziel-EreignisSchlüsselereignis (früher Conversion)Ziel
Check 1 · Eine AntwortEinstieg

Lea besucht die Website von LinguaPlus am Montagabend mit dem Handy: Um 19:42 öffnet sie die Startseite, um 19:50 eine Kursseite und um 20:35 nochmals dieselbe Kursseite. Am Dienstag öffnet sie die Kursseite am Laptop. Sie hat auf beiden Geräten in die Statistik eingewilligt und ist nicht eingeloggt. Was zählt das Analysetool (Sitzungsende nach 30 Minuten Inaktivität)?

Vom Ereignis zur Kennzahl

Aus dem Ereignisstrom berechnet das Tool alle Kennzahlen. Die wichtigsten:

KennzahlBerechnung
SeitenaufrufeAnzahl Ereignisse page_view
Sitzungen mit Interaktion (GA4)Sitzungen, die länger als 10 Sekunden dauern oder ein Schlüsselereignis enthalten oder mindestens 2 Seitenaufrufe haben
Interaktionsrate (Engagement-Rate)Sitzungen mit Interaktion / Sitzungen
Absprungrate (GA4)1 minus Interaktionsrate
Conversion-Rate (sitzungsbasiert)Sitzungen mit Conversion / Sitzungen
Ereignisse pro SitzungEreignisse / Sitzungen

Ein Beispiel: An einem Tag zählt GA4 für LinguaPlus 1'200 Sitzungen, davon 780 mit Interaktion. Die Interaktionsrate beträgt 780 / 1'200 = 65 %, die Absprungrate damit 35 %.

Auch bei der Conversion-Rate musst du die Basis nennen. "4 % Conversion-Rate" kann heissen: 4 % der Sitzungen enthalten eine Anmeldung, oder 4 % der Nutzer haben sich angemeldet. Wer pro Nutzer rechnet, bekommt meist einen höheren Wert, weil ein Nutzer mehrere Sitzungen braucht, bis er sich entscheidet.

Check 2 · BerechnenEinstieg

An einem Tag zählt GA4 für LinguaPlus 1'600 Sitzungen. 1'040 davon dauerten länger als 10 Sekunden, enthielten ein Schlüsselereignis oder hatten mindestens zwei Seitenaufrufe. Wie hoch ist die Absprungrate in GA4 (in %)?

%

Schritt für Schritt: Grundzahlen aus einer Ereignistabelle

Viele Tools erlauben einen Export der Rohdaten (GA4 zum Beispiel nach BigQuery, Matomo direkt aus seiner MySQL-Datenbank). Dann liegen die Ereignisse als Tabelle vor, und du kannst jede Kennzahl selbst nachrechnen. Das ist die beste Art, die Begriffe wirklich zu verstehen.

Aylin bekommt einen Auszug mit zehn Ereignissen:

nutzer_idsitzung_idzeitpunktereignisseite
u1s12026-09-14 19:42page_view/startseite
u1s12026-09-14 19:43page_view/kurse/spanisch-a2
u1s12026-09-14 19:44kurs_ansehen/kurse/spanisch-a2
u2s22026-09-14 20:05page_view/kurse/englisch-b1
u1s32026-09-17 12:10page_view/kurse/spanisch-a2
u1s32026-09-17 12:12anmeldung_start/anmeldung
u1s32026-09-17 12:16anmeldung_abgeschlossen/anmeldung/danke
u3s42026-09-17 21:30page_view/startseite
u3s42026-09-17 21:31page_view/kurse/italienisch-a1
u2s52026-09-18 08:02page_view/kontakt

Schritt 1: Ereignisse zählen. Jede Zeile ist ein Ereignis.

SQL
SELECT COUNT(*) AS ereignisse FROM ereignis;   -- 10

Schritt 2: Nutzer zählen. Ein Nutzer kommt mehrfach vor, deshalb DISTINCT.

SQL
SELECT COUNT(DISTINCT nutzer_id) AS nutzer FROM ereignis;   -- 3 (u1, u2, u3)

Schritt 3: Sitzungen zählen.

SQL
SELECT COUNT(DISTINCT sitzung_id) AS sitzungen FROM ereignis;   -- 5 (s1 bis s5)

Schritt 4: Seitenaufrufe zählen. Nur Ereignisse mit dem Namen page_view.

SQL
SELECT COUNT(*) AS seitenaufrufe FROM ereignis WHERE ereignis = 'page_view';   -- 7

Schritt 5: Sitzungen pro Nutzer. 5 / 3 = 1.67. Achtung: COUNT liefert ganze Zahlen, und SQLite teilt ganze Zahlen ganzzahlig (5 / 3 = 1). Mit 1.0 * erzwingst du eine Kommazahl.

SQL
SELECT ROUND(1.0 * COUNT(DISTINCT sitzung_id) / COUNT(DISTINCT nutzer_id), 2) AS sitzungen_pro_nutzer
FROM ereignis;   -- 1.67

Schritt 6: Conversion-Rate pro Sitzung. Nur Sitzung s3 enthält anmeldung_abgeschlossen. 1 von 5 Sitzungen ergibt 20 %. Pro Nutzer gerechnet ist es 1 von 3, also 33.3 %. Beides ist richtig, aber es sind zwei verschiedene Kennzahlen.

SQL
SELECT ROUND(100.0 * COUNT(DISTINCT CASE WHEN ereignis = 'anmeldung_abgeschlossen'
                                         THEN sitzung_id END)
             / COUNT(DISTINCT sitzung_id), 1) AS cr_sitzung
FROM ereignis;   -- 20.0

Der Trick mit CASE WHEN ... THEN sitzung_id END liefert für alle anderen Zeilen NULL, und COUNT(DISTINCT ...) ignoriert NULL. So zählst du nur die Sitzungen mit Anmeldung.

Jetzt bist du dran. Im Labor rechnest du dieselben Grundzahlen für einen grösseren Auszug.

Check 3 · Code-LaborEinstieg

Labor: die Grundzahlen einer Woche

Die Tabelle ereignis enthält einen Auszug aus dem Matomo-Rohdatenexport von LinguaPlus (21. bis 24. September 2026). Jede Zeile ist ein Ereignis.

Schreibe eine Abfrage, die genau eine Zeile mit diesen fünf Spalten liefert (in dieser Reihenfolge):

SpalteInhalt
ereignisseAnzahl aller Ereignisse
nutzerAnzahl verschiedener Nutzer
sitzungenAnzahl verschiedener Sitzungen
seitenaufrufeAnzahl Ereignisse mit dem Namen page_view
cr_sitzungAnteil der Sitzungen mit mindestens einem anmeldung_abgeschlossen, in Prozent, auf eine Dezimale gerundet

Überlege vor dem Ausführen: Wie viele Sitzungen pro Nutzer erwartest du ungefähr?

Code-Labor · SQL · SQLite
Tabellen und Testdaten ansehen
SQL
CREATE TABLE ereignis (
  id         INTEGER PRIMARY KEY,
  nutzer_id  TEXT NOT NULL,   -- pseudonyme ID aus dem Cookie
  sitzung_id TEXT NOT NULL,
  zeitpunkt  TEXT NOT NULL,   -- JJJJ-MM-TT HH:MM
  ereignis   TEXT NOT NULL,
  seite      TEXT NOT NULL
);
INSERT INTO ereignis VALUES
(1,  'u1', 's1', '2026-09-21 18:02', 'page_view', '/startseite'),
(2,  'u1', 's1', '2026-09-21 18:03', 'page_view', '/kurse/englisch-b2'),
(3,  'u1', 's1', '2026-09-21 18:04', 'kurs_ansehen', '/kurse/englisch-b2'),
(4,  'u2', 's2', '2026-09-21 19:15', 'page_view', '/kurse/franzoesisch-a1'),
(5,  'u2', 's2', '2026-09-21 19:16', 'kurs_ansehen', '/kurse/franzoesisch-a1'),
(6,  'u2', 's2', '2026-09-21 19:20', 'anmeldung_start', '/anmeldung'),
(7,  'u2', 's2', '2026-09-21 19:26', 'anmeldung_abgeschlossen', '/anmeldung/danke'),
(8,  'u3', 's3', '2026-09-22 07:40', 'page_view', '/startseite'),
(9,  'u1', 's4', '2026-09-22 12:05', 'page_view', '/kurse/englisch-b2'),
(10, 'u1', 's4', '2026-09-22 12:07', 'anmeldung_start', '/anmeldung'),
(11, 'u4', 's5', '2026-09-22 20:30', 'page_view', '/kontakt'),
(12, 'u4', 's5', '2026-09-22 20:31', 'beratung_angefragt', '/kontakt/danke'),
(13, 'u3', 's6', '2026-09-23 08:10', 'page_view', '/kurse/italienisch-a2'),
(14, 'u3', 's6', '2026-09-23 08:11', 'kurs_ansehen', '/kurse/italienisch-a2'),
(15, 'u5', 's7', '2026-09-23 21:45', 'page_view', '/startseite'),
(16, 'u1', 's8', '2026-09-24 18:30', 'page_view', '/anmeldung'),
(17, 'u1', 's8', '2026-09-24 18:33', 'anmeldung_abgeschlossen', '/anmeldung/danke'),
(18, 'u6', 's9', '2026-09-24 22:02', 'page_view', '/kurse/spanisch-a1');
Strg + Enter

Typische Fehler

  1. Nutzer mit Menschen gleichsetzen. "Wir hatten 5'000 Kundinnen auf der Website" stimmt nicht. Es waren 5'000 Browser oder Geräte. Eine Person mit Handy und Laptop zählt doppelt, Personen ohne Einwilligung fehlen. Korrektur: von "Nutzern" sprechen und die Grenzen nennen.
  2. Nutzer über Tage addieren. Montag 300 Nutzer, Dienstag 280 Nutzer ergibt nicht 580 Nutzer für beide Tage, weil viele an beiden Tagen da waren. Sitzungen und Ereignisse darfst du addieren, Nutzer nicht. Korrektur: Den Zeitraum im Tool direkt auswählen.
  3. Conversion-Rate ohne Basis angeben. 20 % pro Sitzung und 33 % pro Nutzer beschreiben dieselben Daten. Korrektur: immer dazuschreiben, worauf sich die Rate bezieht.
  4. Kennzahlen verschiedener Tools 1:1 vergleichen. Matomo, GA4 und Plausible definieren Absprung, Sitzung und Nutzer leicht unterschiedlich. Korrektur: Beim Toolwechsel eine Übergangszeit mit beiden Tools messen und die Definitionen dokumentieren.
  5. Ganzzahlige Division in SQL. 5 / 3 ergibt in SQLite 1. Korrektur: mit 1.0 * oder 100.0 * multiplizieren, bevor du teilst.
Check 4 · Mehrere AntwortenFortgeschritten

Warum kann die Kennzahl 'Nutzer' in einem Analysetool von der Zahl der Menschen abweichen, die die Website tatsächlich besucht haben? Wähle alle zutreffenden Gründe.

Wähle alle zutreffenden Antworten.

Zusammenfassung

  • Ein Analysetool zeichnet nur Ereignisse auf: Name, Zeitpunkt, Seite, eine ID aus dem Cookie und Parameter. Alles andere wird daraus berechnet.
  • Eine Sitzung ist eine Folge von Ereignissen ohne mehr als 30 Minuten Pause, ein Nutzer ist ein wiedererkannter Browser oder ein Gerät.
  • Nutzer sind keine Menschen: Mehrere Geräte, gelöschte Cookies und abgelehnte Einwilligungen verzerren die Zahl.
  • Die Interaktionsrate in GA4 ist der Anteil Sitzungen mit mehr als 10 Sekunden, einem Schlüsselereignis oder mindestens zwei Seitenaufrufen. Die Absprungrate ist ihr Gegenteil.
  • Jede Rate braucht eine Basis: pro Sitzung oder pro Nutzer, in welchem Zeitraum.
  • Mit SQL berechnest du Grundzahlen aus Rohdaten selbst: COUNT(*), COUNT(DISTINCT ...) und bedingtes Zählen mit CASE WHEN.

Mit deiner eigenen KI vertiefen

Kopiere einen Prompt in Claude, ChatGPT oder Claude Code. Er macht die KI zur Lernbegleitung statt zum Lösungsautomaten.

Sokratischer Coach: Ereignisse, Sitzungen, Nutzer Chat-KI

Du festigst die Grundbegriffe an kleinen Fällen. Die KI stellt Fragen und lässt dich rechnen, statt dir die Lösung zu geben.