Zum Inhalt springen
Laptop mit Analytics-Dashboard aus Balkendiagrammen und Funnel

Wissen · Websites

Professionelles Website-Tracking mit Umami: Events, Funnel und Profi-Tricks

Wie man mit Umami über reines Besucherzählen hinauskommt: Events, Properties, Funnel, Goals, before-send-Hook und Server-Side-Tracking – datenschutzkonform und ohne Cookie-Banner.

Tracking richtig aufsetzen? Ich richte Umami samt Events und Funnels ein.

Anfragen

Die meisten Websites „tracken“ nur Besucherzahlen – und wissen am Ende trotzdem nicht, warum aus Besuchern keine Anfragen werden. Professionelles Tracking beantwortet andere Fragen: Wo brechen Interessenten ab? Welcher Kanal bringt echte Kontakte? Klickt überhaupt jemand auf die Telefonnummer? Mit Umami lassen sich diese Fragen beantworten – cookieless, DSGVO-konform und ohne Cookie-Banner. Ich nutze es auf dieser Seite selbst und zeige, wie man mehr herausholt als die nackte Besucherzahl.

Warum Umami – und warum ich es selbst nutze

Umami ist ein schlankes, quelloffenes Analyse-Werkzeug, das ohne Cookies und ohne seitenübergreifendes Tracking auskommt und sich selbst hosten lässt. Ich setze es aus mehreren Gründen ein: Die Daten liegen auf eigenen Servern in Deutschland, das Skript läuft über eine eigene Subdomain als Proxy (das macht es widerstandsfähiger gegen Ad-Blocker), und weil keine personenbezogenen Profile entstehen, brauche ich keinen Cookie-Banner. Tracking und digitale Souveränität schließen sich damit nicht aus.

Ein sauberes Fundament: Tracker-Konfiguration

Bevor es um Events geht, lohnt sich der Blick auf das Tracker-Skript selbst. Hier entscheidet sich, wie verlässlich und vollständig die Daten überhaupt ankommen. Ein robustes Setup sieht etwa so aus:

<script
  defer
  src="https://stats.ihre-domain.de/script.js"
  data-website-id="IHRE-WEBSITE-ID"
  data-host-url="https://stats.ihre-domain.de"
  data-cache="true"
  data-performance="true"
  data-exclude-search="true"
  data-do-not-track="true"
></script>

Die wichtigsten Stellschrauben:

  • data-host-url lenkt die gesammelten Daten gezielt auf Ihre eigene (Proxy-)Domain – die Grundlage für den Ad-Blocker-resistenten Aufbau über eine Subdomain.
  • data-cache="true" spart wiederholte Konfigurationsabfragen und beschleunigt das Tracking.
  • data-performance="true" erfasst zusätzlich Performance-Kennzahlen je Seitenaufruf (siehe nächster Abschnitt) – nützlich, um langsame Einstiegspunkte zu finden, ohne ein zweites Analyse-Tool einbinden zu müssen.
  • data-exclude-search="true" lässt URL-Parameter (?...) aus den Seitenpfaden heraus – das hält die Berichte sauber, wenn an URLs Tracking- oder Filterparameter hängen.
  • data-do-not-track="true" respektiert die „Do Not Track“-Einstellung des Browsers.
  • data-domains="ihre-domain.de" sorgt dafür, dass der Tracker nur auf der echten Domain feuert – praktisch, damit Staging- oder Entwicklungsumgebungen die Statistik nicht verfälschen.

Profi-Pflicht: Schließen Sie Ihren eigenen Traffic aus. Ein einziger Befehl in der Browser-Konsole markiert den Browser dauerhaft als ausgeschlossen:

localStorage.setItem('umami.disabled', 1);

Sonst zählen die täglichen Eigenbesuche der Inhaber und Pflegenden kräftig mit – gerade bei kleinen Seiten verzerrt das die Zahlen erheblich.

Ich richte cookieless Umami-Tracking ein — auf eigenen Servern, ohne Cookie-Banner.

Mehr erfahren

Performance gleich mitmessen

Mit data-performance="true" liest der Tracker zusätzlich die echten Ladezeiten aus dem Browser – aus der PerformanceNavigationTiming-API, die jeder moderne Browser sowieso schon mitschreibt. Pro Seitenaufruf landen damit ein paar Kennzahlen mit in den Berichten:

  • Total Time – wie lange es vom Klick bis zur fertigen Seite gedauert hat.
  • DNS-, Verbindungs- und TLS-Zeit – wo im Verbindungsaufbau Zeit verloren geht (z. B. langsamer DNS oder fehlendes HTTP/2).
  • Server-Antwortzeit (TTFB) – wie schnell der Server überhaupt anfängt zu antworten; oft der größte Hebel bei dynamischen Seiten.
  • DOM-Zeit – wie lange das Aufbauen und Rendern des Markups dauert.

Das ist bewusst kein Ersatz für ein vollwertiges RUM- oder APM-Werkzeug, aber es deckt 80 % der typischen Fragen ab: Welche Seite ist auf Mobilgeräten zu langsam? Hat mein letzter Deploy die Antwortzeit verschlechtert? Sind bestimmte Länder oder Provider auffällig? Weil die Daten aus echten Besuchen kommen, sehen Sie zudem die Realität – nicht das Laborbild eines Tools wie PageSpeed Insights.

Drei Punkte, die in der Praxis wichtig sind:

  • Datensparsam: Die Werte werden ohne IP, ohne Cookies und ohne Geräte-Fingerprint übertragen – also DSGVO-unkritisch, solange Sie Umami ohnehin schon einsetzen.
  • Kein Overhead: Die Messung läuft im Browser über bereits vorhandene APIs; es wird kein zusätzlicher Request abgesetzt, die Werte hängen sich an den Seitenaufruf-Ping dran.
  • Filter sinnvoll nutzen: Wer Bots oder bestimmte Bereiche ausschließt (z. B. data-exclude-search, data-domains oder ein beforeSend-Filter), bekommt automatisch sauberere Performance-Zahlen. Ausreißer von Crawlern verzerren sonst gerade die Durchschnitte.

Sinnvoll wird die Auswertung erst im Vergleich: Performance pro Seite (welche Templates sind langsam?), pro Gerät (Desktop vs. Mobile), pro Land und vor allem im Zeitverlauf rund um Deploys. Ein typischer Workflow: Nach jedem größeren Release einen Blick auf die Top-10-Einstiegsseiten – ist die Server-Antwortzeit dort über den Schwellenwert gerutscht, lohnt sich ein Profiling, bevor Nutzer es als Erste merken.

Events sind das Herzstück

Seitenaufrufe zeigen, dass jemand da war. Events zeigen, was er getan hat. Umami kennt dafür zwei Wege.

Deklarativ über Datenattribute – ideal für einfache Klicks, ganz ohne eigenes JavaScript:

<a href="tel:+4917600000000" data-umami-event="telefon-klick">
  Jetzt anrufen
</a>

<a href="/angebot.pdf"
   data-umami-event="download"
   data-umami-event-datei="angebot.pdf">
  Angebot herunterladen
</a>

Jedes data-umami-event-*-Attribut wird als zusätzliche Eigenschaft (Property) gespeichert – allerdings immer als Text.

Programmatisch über die JavaScript-API – für alles, was an einer Bedingung hängt:

umami.track('kontakt-formular', { schritt: 'abgeschickt', betreff: 'angebot' });

So halte ich es auf dieser Seite: Statt jedes Element von Hand zu verkabeln, lauscht ein kleines Skript auf ein data-track-Attribut und ruft im Hintergrund umami.track() auf. Telefon-, E-Mail- und Formular-Klicks sind damit zentral und einheitlich erfasst, ohne dass beim Pflegen der Inhalte jemand daran denken muss.

Ein Beispiel aus der Praxis

Ein Handwerksbetrieb will wissen, welcher Weg überhaupt zur Anfrage führt. Ich erfasse dafür drei Dinge: den Klick auf die Telefonnummer (und von welcher Stelle aus), den Klick auf eine Leistung und das Absenden des Formulars.

<a href="tel:+4917600000000"
   data-umami-event="telefon-klick"
   data-umami-event-quelle="seitenkopf">Anrufen</a>

<a href="/dachsanierung"
   data-umami-event="leistung-klick"
   data-umami-event-leistung="dachsanierung">Dachsanierung</a>

Nach zwei Wochen zeichnet sich oft ein klares Muster ab: Wenn die meisten Anrufe von der Leistungsseite „Dachsanierung“ kommen und das Formular kaum jemand nutzt, gehört die Telefonnummer genau dort nach oben – und über das Formular muss man sich vorerst keine Gedanken machen. Ohne Events wäre beides reine Vermutung.

Für Shops kommt Umsatz-Tracking dazu: Ein Event mit data-umami-event-revenue und data-umami-event-currency (oder die Werte im umami.track()-Aufruf) ordnet jedem Kauf einen Betrag zu. Im Revenue-Bericht steht dann nicht nur, dass gekauft wurde, sondern wie viel Umsatz aus welcher Quelle kommt.

Was Sie bei Event-Daten beachten müssen

Die Properties sind nützlich, haben aber Grenzen, die man kennen sollte:

Datentyp Grenze
Zahlen maximal 4 Nachkommastellen
Texte maximal 500 Zeichen
Arrays werden zu Text umgewandelt, max. 500 Zeichen
Objekte maximal 50 Eigenschaften

Namenskonvention statt Wildwuchs: Legen Sie früh feste, sprechende Event-Namen fest (telefon-klick, kontakt-formular, download) und halten Sie sich daran. Nichts macht ein Analyse-Konto unbrauchbarer als zehn Varianten desselben Klicks. Ein eigener, getypter Satz erlaubter Event-Namen im Code verhindert Tippfehler von vornherein.

Funnel und Goals: Wo brechen die Leute ab?

Ein einzelnes Event sagt wenig – die Abfolge sagt alles. Für einen Funnel tracken Sie die Schritte eines Ablaufs unter einem gemeinsamen Event-Namen mit unterschiedlicher Schritt-Property:

umami.track('kontaktpfad', { schritt: 'formular-gesehen' });
umami.track('kontaktpfad', { schritt: 'formular-begonnen' });
umami.track('kontaktpfad', { schritt: 'abgeschickt' });

Im Umami-Dashboard bauen Sie daraus unter Berichte → Funnel eine Trichter-Auswertung: Sie sehen, wie viele Besucher vom Sehen zum Ausfüllen und vom Ausfüllen zum Absenden kommen – und an welcher Stufe die meisten verloren gehen. Dort lohnt sich die Optimierung, statt blind an der ganzen Seite zu schrauben.

Ein erfundenes, aber typisches Beispiel macht das greifbar. Angenommen, der Funnel zeigt für einen Monat:

  • 1.000 Besucher sehen das Formular,
  • 220 fangen an zu tippen,
  • 140 schicken es ab.

Der größte Absprung liegt damit nicht beim Absende-Button, sondern davor – zwischen Sehen und Beginnen. Schuld ist also der erste Eindruck des Formulars, meist zu viele Pflichtfelder oder ein unklarer Nutzen. Hätte man nur die Gesamtzahl der Anfragen gesehen, würde man am falschen Ende optimieren.

Ein zweites Beispiel aus dem Alltag lokaler Betriebe: ein Termin-Funnel von „Kalender geöffnet“ über „Zeitfenster gewählt“ bis „Termin bestätigt“. Bricht es beim Zeitfenster ein, sind oft schlicht zu wenige freie Slots sichtbar – ein organisatorisches Problem, kein Website-Problem.

Goals ergänzen das um klare Zielwerte: „X Telefonklicks im Monat“ oder „Y abgeschickte Formulare“. Umami zeigt den Fortschritt gegen dieses Ziel, statt nur rohe Zahlen.

Profi-Tricks, die kaum jemand nutzt

Daten filtern und anonymisieren mit data-before-send. Diese Funktion läuft vor jedem Versand und kann den Datensatz prüfen, ändern oder ganz verwerfen (return false):

function beforeSend(type, payload) {
  // Bestimmte interne Pfade gar nicht erst senden
  if (payload.url.startsWith('/intern')) return false;
  return payload;
}
<script defer src="https://stats.ihre-domain.de/script.js"
  data-website-id="IHRE-WEBSITE-ID"
  data-before-send="beforeSend"></script>

Damit lassen sich versehentlich erfasste Parameter entfernen oder Bereiche klar ausklammern – die datensparsamste Variante, weil die Daten den Browser gar nicht erst verlassen.

Kampagnen messen mit UTM-Parametern. Hängen Sie an Links aus Newsletter, Anzeige oder QR-Code die üblichen utm_*-Parameter (?utm_source=newsletter&utm_medium=email&utm_campaign=fruehjahr). Umami wertet sie im UTM-Bericht automatisch aus – so wird sichtbar, welcher Kanal echte Kontakte bringt und nicht nur Klicks.

A/B-Auswertung mit data-tag. Mit einem data-tag am Tracker (z. B. startseite-variante-a vs. -b) lassen sich zwei Varianten getrennt auswerten und im Dashboard filtern.

Besucher segmentieren mit umami.identify(). In Login-Bereichen kann man der Sitzung Eigenschaften mitgeben, um später zu filtern – ohne Cookies:

umami.identify({ plan: 'premium', branche: 'handwerk' });

Server-Side-Tracking über die API. Ereignisse, die nicht im Browser passieren – eine bestätigte Bestellung, ein eingegangenes Formular auf dem Server – melden Sie direkt per POST an /api/send. Das ist auch der zuverlässigste Weg, Conversions zu zählen, die Ad-Blocker im Browser sonst verschlucken würden:

await fetch('https://stats.ihre-domain.de/api/send', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'User-Agent': '...' },
  body: JSON.stringify({
    type: 'event',
    payload: {
      website: 'IHRE-WEBSITE-ID',
      name: 'bestellung-bestaetigt',
      url: '/danke',
      data: { betrag: 79.99 },
    },
  }),
});

Umami hat zuletzt spürbar zugelegt – über Funnel und UTM hinaus lohnen sich diese Berichte: Attribution (welcher Kanal eine Conversion tatsächlich angestoßen hat, nicht nur den letzten Klick), Journeys (typische Pfade durch die Seite), Retention (kommen Besucher wieder?) sowie Segmente und Kohorten, mit denen sich Besuchergruppen nach gemeinsamen Merkmalen und über die Zeit vergleichen lassen. Wer die Ladezeit im Blick behält, kombiniert das sinnvoll mit den Core Web Vitals.

Umami im Vergleich: GA4, Matomo, Plausible

Umami ist nicht das einzige Werkzeug – aber für die meisten Unternehmen ein sehr guter Kompromiss aus Aussagekraft und Datenschutz. Die Alternativen im Überblick:

Kriterium Umami Google Analytics 4 Matomo Plausible
Cookie-Banner nötig nein in der Regel ja nein (konfigurierbar) nein
Datenhoheit self-hostbar Google verarbeitet self-hostbar / EU-Cloud self-hostbar / EU-Cloud
Funktionsumfang fokussiert (Events, Funnel, Attribution, Segmente) sehr groß, aber komplex am größten (Heatmaps, Aufzeichnungen, A/B) schlank
Einarbeitung gering hoch mittel–hoch gering
Ressourcenbedarf (self-hosted) sehr gering höher (PHP/MySQL) gering
Kosten Open Source, selbst kostenlos hostbar kostenlos Open Source / kostenpflichtige Cloud kostenpflichtige Cloud / selbst hostbar

Kurz gefasst: GA4 ist mächtig und kostenlos, aber komplex, in der Regel einwilligungspflichtig und gibt die Daten an Google – datenschutzrechtlich (Stichwort US-Datentransfer) für viele heikel. Matomo kann am meisten, bis hin zu Heatmaps und Sitzungsaufzeichnungen (die allerdings als kostenpflichtige Erweiterungen dazukommen), ist dafür aber schwerer und pflegeintensiver. Plausible ähnelt Umami in Philosophie und Schlankheit stark; die Wahl dazwischen ist oft Geschmackssache. Wer eine kostenlos selbst hostbare, datensparsame Lösung mit Funnels und Events will, fährt mit Umami gut.

Fazit

Gutes Tracking sammelt nicht möglichst viele Daten, sondern beantwortet die richtigen Fragen – mit Umami sogar ohne Cookie-Banner und ohne die Daten aus der Hand zu geben. Den Unterschied macht die Arbeit nach der Installation: Events klar benennen, Funnel auf die echten Ziele ausrichten und den eigenen Traffic ausschließen. Dann verrät die Statistik, wo aus Besuchern Kunden werden – und wo sie abspringen.

Ich richte Umami auf eigenen Servern ein, verkabele die passenden Events und baue Funnel und Berichte, die zu Ihren Zielen passen. Mehr dazu unter Webdesign, Suchmaschinenoptimierung und in der Datenschutzerklärung. Sagen Sie mir, was Sie über Ihre Besucher wirklich wissen wollen – den Kontakt finden Sie über mein Kontaktformular.

Wer dahintersteht

Patrick Hilker, Inhaber

Patrick Hilker

Inhaber · Rahden, seit 2018

Arbeitet seit über zehn Jahren für Unternehmen, Vereine und Privatleute in Ostwestfalen – digital wie gedruckt. Hosting kenne ich auch von der anderen Seite: Für den Webhoster mittwald in Espelkamp arbeite ich an den Produkten, die Agenturen und Entwickler nutzen.

Mehr über mich

Häufige Fragen dazu

Was kostet eine Website bei Ihnen?

Eine einfache Seite mit wenigen Unterseiten beginnt bei 1.500 € zzgl. MwSt., ein größerer Auftritt mit vielen Unterseiten und Pflegebereich ab 2.500 €, und mit Funktionen, die entwickelt werden müssen – Buchung, Mitgliederbereich, Portal – ab 5.000 €. Dazu kommen laufende Kosten für Hosting und Domain.

Am Preis lässt sich drehen: Wer Texte und Bilder selbst liefert, spart den Aufwand für die Inhalte. Und wer die Seite anschließend über ein einfaches System selbst pflegt, braucht von mir nur noch die technische Betreuung. Was Ihr Projekt konkret kostet, sage ich Ihnen nach einem kurzen Gespräch. Ob sich eine individuelle Website oder ein Baukasten lohnt, vergleicht mein Artikel Webdesign vs. Baukasten.

Website-Preis anfragen

Unverbindlich · kostenlose Ersteinschätzung

Wie lange dauert es, bis meine Website online ist?

In der Regel ist eine Website innerhalb weniger Wochen online. Wie lange es genau dauert, hängt davon ab, wie viele Seiten es sind, wie viel Individualisierung nötig ist und ob Texte und Bilder schon vorliegen oder erst erstellt werden müssen. Liegt alles bereit, geht es schnell; wenn ich auf Inhalte warten, zieht sich der Start.

Ich sage Ihnen am Anfang, was ich bis wann von Ihnen brauche, damit der Termin hält. Auf Wunsch helfe ich auch bei Texten und Bildern, dann plane ich das von vornherein mit ein.

Website anfragen

Unverbindlich · ich nenne Ihnen einen realistischen Termin

Was brauchen Sie von uns, um mit der Website anzufangen?

Am wichtigsten ist eine grobe Vorstellung, was die Website leisten soll. Nur informieren, Kontakt ermöglichen, Termine, ein kleiner Shop? Dazu Ihr Logo, vorhandene Texte und Bilder sowie ein, zwei Beispiele von Websites, die Ihnen gefallen.

Sie müssen nicht alles fertig haben. Wenn Texte oder Bilder fehlen, spreche ich das früh an und finde eine Lösung, zum Beispiel mit Unterstützung beim Texten oder mit passenden Bildern. Wichtig ist nur, dass ich mit jemandem reden kann, der weiß, worum es Ihrem Betrieb geht.

Alle Fragen und Antworten zu Webdesign

Kontakt

Tracking, das wirklich etwas verrät?

Ich richte Umami sauber ein – Events, Funnel und Reports, die zu Ihren Zielen passen, ohne Cookie-Banner und ohne Daten aus der Hand zu geben.

5,0bei Google
Patrick Hilker, InhaberPatrick HilkerIhr Ansprechpartner

Lieber direkt?

Antwort in der Regel innerhalb eines Werktags.

Kostenlos & unverbindlich – kein Verkaufsgespräch.

Ihre Angaben nutze ich nur, um Ihre Anfrage zu bearbeiten – keine Weitergabe, keine Werbung. Felder mit * sind Pflicht. Wie Ihre Angaben verarbeitet werden, steht in der Datenschutzerklärung.

TerminAnfragen