Das Wichtigste in Kürze
- GA4 kennt neun UTM-Parameter, aber nur wenige davon sind im Alltag nötig: utm_source, utm_medium und utm_campaign.
- Parameterwerte sind case-sensitive: „Meta“ und „meta“ sind für GA4 zwei verschiedene Werte, deshalb gilt durchgängig Kleinschreibung.
- UTM-Parameter gehören nur an externe Links, nie an interne, und niemals mit personenbezogenen Daten in die URL.
- Ein URL-Builder im Code oder in der Tabelle erzwingt die Konvention, statt sie dem Gedächtnis zu überlassen.
Was UTM-Parameter sind
UTM-Parameter sind Schlüssel-Wert-Paare im Query-String einer URL, die mit utm_ beginnen. Sie sagen Google Analytics 4 (GA4), woher ein Besuch kommt: aus welcher Quelle, über welches Medium, in welcher Kampagne. Ohne sie hat GA4 für Links, die keinen aussagekräftigen Referrer mitliefern, etwa in vielen E-Mails, keine Kampagneninformation.
Ein Beispiel:
https://example.com/angebot/?utm_source=newsletter&utm_medium=email&utm_campaign=fruehjahrs-aktion-2027Alles nach dem Fragezeichen sind die Parameter. Die Seite selbst, /angebot/, bleibt dieselbe.
Die Parameter, die GA4 unterstützt
Die GA4-Hilfe listet neun Parameter. Im Alltag reichen die ersten drei.
| Parameter | Bedeutung laut GA4-Hilfe | Pflicht im Alltag? |
|---|---|---|
utm_source | Der Referrer, etwa newsletter oder google | Ja |
utm_medium | Das Marketingmedium, etwa email oder cpc | Ja |
utm_campaign | Produkt, Slogan oder Aktionscode | Ja |
utm_id | Kampagnen-ID, passend zu hochgeladenen Kampagnendaten | Optional |
utm_term | Das bezahlte Keyword | Optional, v. a. bei Suchanzeigen |
utm_content | Unterscheidet Creatives, etwa zwei Links in derselben E-Mail | Optional |
utm_source_platform | Die Plattform, die Traffic an die Property leitet | Optional |
utm_creative_format | Der Creative-Typ | Wird laut GA4-Hilfe derzeit nicht gemeldet |
utm_marketing_tactic | Die Targeting-Kriterien | Wird laut GA4-Hilfe derzeit nicht gemeldet |
Die beiden letzten kannst du setzen, siehst sie aber (Stand Oktober 2026) nicht in GA4-Berichten. Plane deine Auswertung deshalb nicht darauf.
Wie GA4 die Parameter zeigt
Die Hilfeseite nennt als Berichtsdimensionen im Bericht „Traffic-Akquisition“ Sitzungsquelle/-medium, Sitzungsmedium, Sitzungsquelle und Sitzungskampagne. Wie utm_id, utm_term, utm_content und utm_source_platform den Dimensionen im Einzelnen zugeordnet werden, führt die Seite nicht auf; schau dafür in deiner Property nach.
Zwei weitere Hinweise aus der Hilfe sind praktisch wichtig:
- UTM-Parameter fehlen in den Dimensionen „Landingpage + Abfragestring“ und „Seitenpfad + Abfragestring“. Du findest sie in der Dimension „Seitenstandort“.
- Fehlt ein Parameter, zeigt GA4 „(not set)“.
Namenskonvention
Parameterwerte sind case-sensitive. Laut GA4-Hilfe sind utm_source=google und utm_source=Google verschiedene Werte; Google empfiehlt Kleinschreibung als Standard. Aus „Meta“ und „meta“ werden sonst zwei Zeilen im Bericht.
Eine Konvention, die in der Praxis funktioniert, ist kurz genug zum Merken:
| Regel | Beispiel gut | Beispiel schlecht |
|---|---|---|
| Nur Kleinbuchstaben | newsletter | Newsletter |
| Bindestrich statt Leerzeichen | fruehjahrs-aktion | Frühjahrs Aktion |
| Keine Umlaute und Sonderzeichen | fruehjahr | frühjahr |
Feste Liste für utm_medium | email, cpc, social | Mail, E-Mail, emailing |
| Kampagnenname mit Jahr oder Datum | fruehjahrs-aktion-2027 | aktion |
| Keine personenbezogenen Daten | newsletter | max.mustermann@... |
Die Liste der Medien legst du einmal im Team fest und verwendest sie unverändert. Mehr als fünf bis sieben Einträge werden selten gebraucht.
Konvention im Team-Spreadsheet
Eine einfache Tabelle reicht für den Start. Sie hat pro Zeile einen Link:
| Datum | Kanal | Ziel-URL | source | medium | campaign | content | Fertige URL |
|---|---|---|---|---|---|---|---|
| 2027-03-01 | Newsletter | /angebot/ | newsletter | fruehjahrs-aktion-2027 | button-oben | per Formel |
Die letzte Spalte setzt die URL aus den Zellen zusammen, damit niemand sie von Hand tippt. Wer das lieber im Code erledigt, nutzt den Builder aus dem nächsten Abschnitt.
Ein URL-Builder in JavaScript
Der Builder nutzt die eingebauten Klassen URL und URLSearchParams. Er vereinheitlicht die Schreibweise (Kleinschreibung, Umlaute, Bindestriche), lässt leere Werte weg, bewahrt vorhandene Parameter und lehnt Medien außerhalb der erlaubten Liste ab. Gespeichert als utm.mjs:
const ALLOWED_MEDIUMS = new Set(["email", "cpc", "social", "referral", "display"]);
function slug(value) {
return value
.trim()
.toLowerCase()
.replace(/[äöüß]/g, (c) => ({ ä: "ae", ö: "oe", ü: "ue", ß: "ss" })[c])
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+|-+$/g, "");
}
export function buildUtmUrl(baseUrl, { source, medium, campaign, content, term, id }) {
const url = new URL(baseUrl);
const params = {
utm_source: source,
utm_medium: medium,
utm_campaign: campaign,
utm_content: content,
utm_term: term,
utm_id: id,
};
for (const [key, value] of Object.entries(params)) {
if (value === undefined || value === "") continue;
url.searchParams.set(key, slug(String(value)));
}
if (!ALLOWED_MEDIUMS.has(url.searchParams.get("utm_medium"))) {
throw new Error(`utm_medium nicht erlaubt: ${url.searchParams.get("utm_medium")}`);
}
return url.toString();
}
console.log(
buildUtmUrl("https://example.com/angebot/?ref=start", {
source: "Newsletter",
medium: "Email",
campaign: "Frühjahrs Aktion 2027",
content: "Button oben",
})
);
try {
buildUtmUrl("https://example.com/", { source: "x", medium: "Mail", campaign: "test" });
} catch (e) {
console.log("Fehler:", e.message);
}Ausgabe von node utm.mjs mit Node.js v26.3.0:
https://example.com/angebot/?ref=start&utm_source=newsletter&utm_medium=email&utm_campaign=fruehjahrs-aktion-2027&utm_content=button-oben
Fehler: utm_medium nicht erlaubt: mailZwei Details zahlen sich aus. searchParams.set ersetzt einen schon vorhandenen Parameter, statt ihn doppelt anzuhängen. Außerdem serialisiert URLSearchParams die Werte als Query-String; Sonderzeichen musst du nicht von Hand maskieren (hier sind sie durch die Normalisierung ohnehin entfernt).
Praxis-Tipp: Das Prinzip „Konvention im Code erzwingen“ funktioniert auch ohne JavaScript: Ein Spreadsheet mit Dropdown für
utm_mediumund einer Formel für die fertige URL leistet dasselbe. Wichtig ist, dass niemand URLs frei tippt.
Beispiele nach Kanal
Die Werte hängen von deiner Konvention ab. Als Vorlage für die Tabelle im Team:
| Kanal | utm_source | utm_medium | utm_campaign (Beispiel) | utm_content (Beispiel) |
|---|---|---|---|---|
| Newsletter | newsletter | email | fruehjahrs-aktion-2027 | button-oben |
| Suchanzeige | google | cpc | marke-2027 | anzeige-a |
| Beitrag in einem sozialen Netzwerk | linkedin | social | produktstart-2027 | beitrag-1 |
| Link in einer Partner-E-Mail | partnername | referral | kooperation-2027 | banner-footer |
| Banner auf einer anderen Seite | fachportal | display | awareness-2027 | skyscraper |
Wichtig ist nicht der einzelne Wert, sondern dass dieselbe Plattform immer gleich heißt. Wenn ein Kanal einmal linkedin und einmal linked-in heißt, hilft dir die schönste Tabelle nicht.
UTM-Parameter und Datenschutz
Die Parameter selbst sind Beschriftungen für Kampagnen, keine Nutzerdaten, solange du sie als solche verwendest. Problematisch wird es, wenn Werte Rückschlüsse auf Personen zulassen. Das passiert schneller als gedacht, etwa bei personalisierten Newsletter-Links mit Empfänger-ID im utm_content. Halte die Werte deshalb grundsätzlich auf der Ebene von Kanal, Kampagne und Creative.
Ob und wie GA4 selbst eingesetzt werden darf, hängt von Einwilligung und Setup ab; die rechtlichen Grundlagen dazu behandelt der Artikel zu Server-Side Tracking. Die Parameterbenennung selbst ändert daran nichts, und dieser Artikel ist keine Rechtsberatung.
So prüfst du, ob alles ankommt
- Rufe die fertige URL selbst im Browser auf, im besten Fall in einem Fenster, in dem du nicht bei deinen Tools angemeldet bist.
- Schau im Echtzeitbericht oder in der Debug-Ansicht von GA4 (sofern in deiner Property verfügbar) nach, ob Quelle, Medium und Kampagne erscheinen.
- Warte nach dem Livegang einer Kampagne etwas ab und prüfe dann den Bericht „Traffic-Akquisition“ auf „(not set)“-Zeilen und doppelte Schreibweisen.
- Pflege Auffälligkeiten in die Namenskonvention ein, statt sie nur im Bericht zu korrigieren.
Typische Fehler
- UTM-Parameter auf internen Links. Ein UTM-Link innerhalb deiner Website beschreibt eine Herkunft, die es dort nicht gibt, und kann die Zuordnung der eigentlichen Quelle verfälschen. Interne Links bleiben deshalb sauber; für interne Aktionen eignen sich Ereignisse.
- Uneinheitliche Schreibweise.
Email,emailunde-mailergeben drei Zeilen. Die Namenskonvention und der Builder verhindern das. - Personenbezogene Daten in der URL. E-Mail-Adressen, Namen oder Kundennummern gehören nicht in Parameter. URLs landen in Logs, Browserverläufen und Berichten. Auch
utm_contentist dafür nicht gedacht. - Zu viele Varianten. Jede Kombination erzeugt eine neue Zeile. Setze
utm_contentundutm_termnur ein, wenn du die Auswertung tatsächlich brauchst. - Doppelt gekennzeichnete Kanäle. Manche Werbeplattformen übergeben Kampagnendaten selbst. Prüfe in der Dokumentation deiner Plattform, was automatisch angehängt wird, bevor du zusätzlich von Hand taggst.
- Fehlende Dokumentation. Ohne Tabelle weiß nach einem Jahr niemand, was
kampagne1war.
UTM-URLs und Canonical
Eine URL mit Parametern ist technisch eine andere Adresse als die ohne. Gelangen solche Adressen in den Index, etwa weil jemand sie teilt oder verlinkt, entstehen Duplikate derselben Seite. Das Mittel dagegen ist ein Canonical Tag, das auf die parameterfreie URL zeigt. Wie du ihn setzt und warum er ein Hinweis und keine Anweisung ist, beschreibt der Artikel zum Canonical Tag.
Auswerten kannst du die Kampagnendaten später zusammen mit Zielen und Abschlüssen; wie du daraus eine Conversion-Rate berechnest, steht im Artikel zur Conversion-Rate. Wer Messdaten über einen eigenen Server leitet, sollte die Parameter dort ebenfalls einheitlich halten; mehr dazu im Beitrag zu Server-Side Tracking.
Nächster Schritt
Lege heute eine Tabelle mit den erlaubten Werten für utm_medium an, etwa email, cpc, social, referral, display. Passe dann den Builder oben an diese Liste an oder baue sie als Dropdown in dein Spreadsheet. Tagge als Nächstes den nächsten Newsletter-Link damit und prüfe ein paar Stunden nach dem Versand im Bericht „Traffic-Akquisition“, ob Quelle, Medium und Kampagne so erscheinen, wie du sie benannt hast.
Häufige Fragen
Brauche ich für jeden Link UTM-Parameter?
Nur für Links, die du selbst platzierst und deren Herkunft GA4 sonst nicht sauber erkennt, etwa Newsletter, Anzeigen oder Beiträge in sozialen Netzwerken. Links innerhalb deiner Website taggst du nicht.
Was bedeutet „(not set)“ in den Berichten?
Laut Google erscheint „(not set)“, wenn ein Parameter fehlt. Ein fehlendes utm_campaign führt also zu „(not set)“ in der Dimension Sitzungskampagne.
Zählen UTM-Parameter als eigene Seiten für Google?
Die URL mit Parametern ist technisch eine eigene Adresse. Sie sollte per Canonical auf die saubere URL zeigen, sonst entstehen Duplikate.
Quellen
- Campaign URL parameters / UTM parameters in Google Analytics (GA4 Hilfe) Google Analytics Help · abgerufen am 28. Oktober 2026
- URLSearchParams: set() method MDN Web Docs · abgerufen am 28. Oktober 2026