Kurzfassung
Sie haben das Google-Tag auf der Website, und die Google-Ads-Kampagne zeigt trotzdem „Conversion-Tracking-Setup unvollständig“? In 90 % der Fälle liegt das Problem nicht am „fehlenden Code“, sondern an einem Missmatch dreier Ebenen: dem globalen Tag AW-, der Conversion-Aktion im Ads-Panel (mit send_to-Label) und dem Event, das erst nach erfolgreichem Formularversand (HTTP 200) ausgelöst wird. Auf einer produktiven Next.js-15-Seite empfiehlt sich die Trennung von GA4 (afterInteractive) und Ads-Tags (lazyOnload) — andernfalls verlieren Sie entweder Leads in der Analyse oder verschlechtern den LCP. Im Folgenden: Einrichtung im Panel, was der Code senden soll und wie Sie mit Tag Assistant testen.
Für wen ist das
- Dienstleister mit Kampagnen auf Leads (Kontaktformular, Chatbot)
- Website-Betreiber mit Next.js / React, auf denen Marketing bereits einen oder mehrere
AW--Container eingebunden hat - Personen, die in der Kampagnen-Diagnose eine Warnung sehen, obwohl der Tag in der Seitenvorschau grün ist
- Teams, die GA4 und Google Ads verbinden, ohne Conversions aus Analytics zu importieren
Keyword (SEO)
google ads conversion tracking einrichten, google tag konversionen, conversion setup google ads, gtag send_to AW, conversion_event_submit_lead_form, setup unvollständig google ads
Warum der AW-Tag allein nicht reicht
Google Ads unterscheidet zwischen Tracking-Basis (globaler Tag auf jeder Unterseite) und Conversion-Aktion (Definition des Geschäftsziels). Der Tag gtag/js?id=AW-XXXXXXXX plus gtag('config', 'AW-XXXXXXXX') sagt Google: „Dieser Traffic gehört zu diesem Werbekonto.“ Das bedeutet noch nicht, dass das System weiß, welche Klicks auf „Senden“ wertvolle Leads sind.
| Element | Funktion | Reicht für Smart Bidding? |
|---|---|---|
Tag AW-... im Layout |
Verknüpft Session mit Ads-Konto | Nein |
| Conversion-Aktion im Panel | Definiert Ziel und Label | Ja — nach ersten Hits |
gtag('event', ...) nach Formular-Erfolg |
Sendet Conversion-Signal | Ja — muss zur Aktion passen |
Kampagnen mit Conversions maximieren oder Ziel-CPA benötigen registrierte Conversions, die an das Kampagnenziel gebunden sind. Solange das Panel „Keine Daten“ oder „Entwurf“ anzeigt, optimiert der Algorithmus den Traffic wie bei Klicks — daher der Eindruck, dass „die Anzeige läuft, aber Leads im Report fehlen“.
Tag-Architektur auf Next.js 15 (Produktionsbeispiel)
In einem modernen Unternehmensprojekt (z. B. Website eines Softwarehauses) finden Sie mehrere IDs gleichzeitig — normal bei Ads-Kontomigration oder historischen Kampagnen.
GA4 — früh laden, damit Formular-Events nicht verloren gehen
Google Analytics 4 (G-3HT7CZTN7P in diesem Projekt) wird mit der Strategie afterInteractive in layout.tsx geladen. Der Kommentar im Code ist eindeutig: Bei lazyOnload sendet der Nutzer das Formular oft bevor gtag bereit ist — dann erreicht generate_lead GA4 nicht, obwohl der Lead im CRM ankommt.
<Script
src={`https://www.googletagmanager.com/gtag/js?id=${GA4_MEASUREMENT_ID}`}
strategy="afterInteractive"
/>Das ist ein bewusster Kompromiss zwischen Performance und Datenqualität: Geschäftskritische Events (Lead) müssen zuverlässig sein.
Google Ads — später, für Core Web Vitals
Drei Ads-Container werden mit lazyOnload geladen:
AW-17557280025AW-17769880693AW-18151506857
Jeder hat eigenes gtag/js und gtag('config', 'AW-...'). So blockiert das Werbeskript nicht das erste Rendering (LCP), ist aber vor dem typischen Formular-Ausfüllen verfügbar — solange der Nutzer den Lead nicht in den ersten 2–3 Sekunden nach dem Seitenaufruf absendet (selten auf einer Dienstleistungsseite).
Entfernen Sie alte AW--Tags nicht, wenn Sie einen neuen Container hinzufügen. Historische Conversions, Attributionsberichte und alte Kampagnen können am vorherigen ID hängen. Fügen Sie einen neuen config hinzu, erstellen Sie eine neue Conversion-Aktion und binden Sie die neue Kampagne daran.
Was nach erfolgreichem Formular senden?
Zählen Sie Conversions erst nach Serverbestätigung (response.ok), nicht beim onClick auf „Senden“. Sonst überschätzen Ads und GA4 abgebrochene Sendungen und Validierungsfehler.
In diesem Projekt gilt dasselbe Muster im Kontaktformular (page.tsx) und im Chatbot (Chatbot.tsx):
1. GA4-Event — generate_lead
gtag('event', 'generate_lead', {
send_to: 'G-3HT7CZTN7P', // Konstante GA4_MEASUREMENT_ID im Code
form_type: 'contact_form', // oder 'chatbot_form'
locale: 'de',
project_type: '...',
});send_to mit der GA4-Mess-ID erzwingt die Zustellung an den richtigen Analytics-Stream (separater Stream ≠ automatischer Import in Ads).
2. Google-Ads-Event — conversion_event_submit_lead_form
gtag('event', 'conversion_event_submit_lead_form', {
event_callback: goThanks, // z. B. Redirect auf /danke
event_timeout: 2000,
form_type: 'contact_form',
project_type: '...',
budget: '...',
});event_callback plus event_timeout: 2000 geben dem Tag Zeit, den Hit vor der Navigation zu senden — ohne das bricht der Browser den Conversion-Request oft ab. Im Kontaktformular gibt es zusätzlich einen Fallback setTimeout(goThanks, 2200) für den Fall, dass der Callback nicht feuert.
3. Klassische Conversion mit send_to: 'AW-xxx/label'
Wenn Sie im Ads-Panel eine Aktion vom Typ „Website“ mit Conversion-ID anlegen, liefert Google das Format:
AW-123456789/AbCdEfGhIjKlMnOpQrDann senden Sie alternativ (oder zusätzlich):
gtag('event', 'conversion', {
send_to: 'AW-123456789/AbCdEfGhIjKlMnOpQr',
value: 1.0,
currency: 'EUR',
});Der Event-Name conversion_event_submit_lead_form muss exakt zur Konfiguration im Konto passen (in Ads definiertes Event). Abweichender Name = null Conversions im Kampagnenreport, obwohl Tag Assistant etwas „blinkt“.
Einrichtung in Google Ads — Schritt für Schritt
Conversion-Aktion anlegen
- Tools und Einstellungen → Conversions → Neue Conversion-Aktion.
- Quelle: Website (oder Import aus GA4 — separater Pfad).
- Kategorie: Kontaktformular senden oder benutzerdefiniertes Event passend zum Code.
- Conversion-ID kopieren (
AW-.../label) oder Event-Anweisung. - Status: Aktiv (nicht „Entwurf“).
Mit Kampagne verknüpfen
In den Kampagneneinstellungen: Ziele → Conversions — dieselbe Aktion aktivieren, die Hits von der Website erhält. Zeigt die Kampagne auf AW-17769880693, send_to oder der Standard-Container aber auf AW-17557280025, sehen Sie Traffic in einem Konto und Optimierung im anderen — klassischer Grund für „Setup unvollständig“.
Verzögerung 24–48 Stunden
Nach dem ersten Produktionstest ändert sich der Status in der Conversion-Liste oft erst nach 24–48 h von „Keine letzte Aktivität“. Starten Sie die Kampagne nach einem Test nicht neu; prüfen Sie Letzte Aktivität am nächsten Tag.
„Setup unvollständig“ — häufigste Ursachen
- Nur globaler Tag — keine Conversion-Aktion oder kein Event nach Submit.
- Kampagne vor erster Conversion gestartet — Google wartet auf Daten für den Algorithmus.
- Kampagnenziel ≠ Aktion, die Events empfängt — anderes
AW-oder anderes Label. - Test auf localhost / Preview — Ads erwartet die Werbedomain (Produktion).
- GA4 sieht
generate_lead, Ads nicht — getrennte Systeme; ohnesend_tozuAW-oder Import fließen keine Daten. - Adblock / Brave / Firefox ETP — bei Ihnen „funktioniert nicht“, bei Kunden schon; testen Sie Inkognito ohne Erweiterungen auf der Produktionsdomain.
lazyOnload+ sehr schneller Submit — selten, aber möglich; dannafterInteractivefür einen Haupt-Container der Kampagne oder Redirect-Verzögerung (wieevent_timeout).
Testen — 5–15 Minuten, die Wochen sparen
Tag Assistant (Chrome)
- Tag Assistant Companion installieren.
- Produktionsseite aufrufen (dieselbe Domain wie in den Anzeigen).
- Testformular mit eindeutiger E-Mail senden (
test+ads2026@ihredomain.de). - In der Vorschau prüfen: GA4 →
generate_lead; Ads →conversionoderconversion_event_submit_lead_form. - In Google Ads → Conversions — ob ein Hit erscheint (manchmal verzögert).
Echtzeit (GA4)
Unter Berichte → Echtzeit nach generate_lead mit Parameter form_type suchen. Wenn es hier erscheint, Ads aber schweigt — liegt das Problem in der AW--Schicht, nicht im Formular.
Checkliste vor Budget-Start
- Tag
AW-auf allen Sprachversionen (/pl,/en,/de, …) - Ein kanonischer Conversion-Pfad (Formular + Chatbot → dasselbe Ads-Event)
- Conversion-Aktion Aktiv und an Kampagne gebunden
- Thank-you-Redirect nach
event_callbackoder mit 2-s-Puffer - Keine falschen Conversions beim Klick auf „Senden“
Performance vs. Datenvollständigkeit
Typisches Layout auf einer Unternehmensseite:
- GA4
afterInteractive— keine Leads in Marketing- und CRM-Attribution verlieren. - Ads
lazyOnload— LCP und Performance-Score schützen (wichtig auch für Landing-Page-Qualität in Ads).
Wenn die Ads-Diagnose früheres Laden des Haupt-AW- verlangt, erwägen Sie afterInteractive nur für den Container der aktiven Kampagne; restliche AW- bleiben lazy — nicht alle drei müssen um denselben Slot in <head> konkurrieren.
FAQ
Muss ich den alten AW-Tag entfernen, wenn ich einen neuen hinzufüge?
Nein, wenn am alten ID historische Conversions und Reports hängen. Neuen gtag('config') hinzufügen, neue Conversion-Aktion anlegen und neue Kampagne an neues Ziel binden. Alte Tags erst nach Report-Migration und Auslauf alter Kampagnen abschalten.
Wie viele AW-Tags auf einer Seite sind zu viel?
2–3 sind bei Kontomigration oft akzeptabel. Jeder lädt ein eigenes Skript — lazyOnload, eine zentrale Conversion-Stelle am Formular und nicht dreimal dasselbe conversion (Überzählung). Lieber ein Hit pro Submit als drei „zur Sicherheit“.
Warum sieht GA4 generate_lead, Google Ads aber nicht?
GA4 und Ads sind getrennte Produkte. Events mit send_to: G-... landen in Analytics. Ads braucht send_to: AW-.../label, im Konto definiertes Event oder GA4-Import (mit Verzögerung und anderen Attributionsregeln). Gemeinsames gtag in dataLayer reicht ohne korrektes Ziel nicht.
Ersetzt conversion_event_submit_lead_form klassisches conversion?
Das hängt davon ab, wie Sie die Aktion im Panel angelegt haben. Bei benutzerdefiniertem Event — exakt diesen Namen verwenden. Bei ID AW-xxx/yyy — gtag('event', 'conversion', { send_to: '...' }). Praktisch oft beides: GA4 für Analyse, Ads für Kampagnenoptimierung.
Funktioniert der Test auf Vercel Preview URL?
Meist nicht für volle Ads-Diagnose, wenn Anzeigen auf die Produktionsdomain zeigen. Preview kann andere Cookies, robots und Traffic haben. Testen Sie die finale Domain der Kampagne.
GA4-Conversion-Import — wann sinnvoll?
Google Ads kann Events aus GA4 importieren. Praktisch, wenn Marketing in Analytics lebt und der Entwickler nur generate_lead mit send_to: G-... sendet. Nachteile:
- Verzögerung und andere Attributionsregeln als nativer
AW--Tag - Schwierigere Diagnose „ob Hit angekommen“ an einem Ort
- Risiko, dass GA4-Filter Teil des Traffics ausschließen (z. B. Cookie-Consent)
Für Kampagnen mit hartem CPA und kurzem Lernhorizont besser direkten Hit zu Ads (conversion oder Panel-Event) plus GA4 parallel — wie im beschriebenen Projekt. GA4-Import als Backup-Reporting, nicht als einziges Optimierungssignal.
Consent Mode und DSGVO — Daten nicht versehentlich zerstören
Wenn der Cookie-Banner gtag vor Marketing-Einwilligung blockiert, kann Ads „Tag installiert“ zeigen, aber modellierte oder null Conversions bis zur Zustimmung. Stellen Sie sicher:
- Tag lädt gemäß Richtlinie (z. B. Consent Mode v2),
- Conversion-Tests nach Akzeptanz der Marketing-Kategorie im Banner,
- Intern dokumentiert: „Lead im CRM“ ≠ „Conversion in Ads“ bei Cookie-Ablehnung.
Mehrsprachigkeit (/pl, /en, /de)
Jede Sprachversion braucht dieselbe Tag-Menge im gemeinsamen oder Locale-Layout. Formular in page.tsx und Chatbot senden Events mit Parameter locale — in Ads/GA4 filtern, um PL-Kampagnen nicht mit DE-Traffic zu vermischen. Bei separaten Ads-Konten pro Land muss send_to auf das richtige AW- der Kampagne zeigen.
Wenn DE-Anzeigen auf /de landen, muss der Thank-you-Flow und das Conversion-Event auch auf /de feuern — nicht nur auf der polnischen Startseite. Ein häufiger Fehler bei i18n-Rollouts: Tags im Root-Layout, aber Conversion-Code nur in einer page.tsx-Variante. Prüfen Sie alle Locales mit Tag Assistant, bevor Sie pro Sprache Budget skalieren.
Zusammenfassung
Google-Ads-Conversion-Tracking auf Next.js ist ein Puzzle: globaler AW--Tag, Aktion im Panel, Event nach API-Erfolg, konsistentes send_to und 24–48 h Geduld für erste Daten. Trennung GA4 (afterInteractive) und Ads (lazyOnload) ist ein reifer Kompromiss zwischen Core Web Vitals und nicht verlorenen Leads. Bevor Sie das Budget erhöhen: Conversion mit Tag Assistant auf Produktion bestätigen — nicht auf localhost. Bei mehreren AW--Containern — alte nicht ohne Kampagnen-Migration löschen.
Tracking bei Ihnen einrichten?
- Kontakt aufnehmen — Tags passend zu Kampagne und Formularen
- Portfolio ansehen — Websites mit korrekter Analyse und Performance
- Websites — Next.js, SEO und Conversions in einem Projekt