GTM Analytics Integration
Sie können jeden Google Tag Manager (GTM)-Container mit Wink verbinden, indem Sie die GTM Container-ID im Wink-Portal eingeben. Nach der Verbindung wird Ihr Container automatisch für Ihre Unterkunft geladen und liest Wink’s Buchungsereignisse direkt aus – und deckt so die gesamte Gästereise von der Suche bis zur abgeschlossenen Buchung ab. Ein häufiger Anwendungsfall ist ein Sojern-Container für Retargeting und Werbung, aber jeder GTM-Container funktioniert auf die gleiche Weise.
Was Sie tun müssen
Abschnitt betitelt „Was Sie tun müssen“-
Holen Sie sich Ihre GTM Container-ID
Erhalten Sie Ihre GTM Container-ID (Format
GTM-XXXXXXX). Wenn sie von einem Partner wie Sojern stammt, fordern Sie speziell die GTM Container-ID an – diese unterscheidet sich von einer Pixel- oder Tag-ID. -
Geben Sie sie im Wink-Portal ein
Melden Sie sich bei app.wink.travel an, wählen Sie Ihr Konto aus und gehen Sie zum Tab Anpassungen. Fügen Sie Ihre GTM Container-ID in das Feld GTM ein und speichern Sie. Ihre Integration ist jetzt aktiv.
-
(Optional) Fügen Sie eine GA4 Measurement ID + API Secret für serverseitige Käufe hinzu
GTM-Container laufen vollständig im Browser des Gastes, daher kann eine abgeschlossene Buchung verpasst werden, wenn der Gast den Tab während der Zahlungsweiterleitung schließt. Wenn Ihr Container eine GA4-Property lädt und Sie abgeschlossene Buchungen zuverlässig erfassen möchten, geben Sie auch die Measurement ID und das Measurement Protocol API Secret dieser GA4-Property im GTM-Bereich ein. Wink sendet dann den
purchasefür diese Property serverseitig, genau wie im GA4 Analytics Integration Leitfaden beschrieben. Lassen Sie diese Felder leer, wenn Sie nur Tracking im Browser benötigen. -
Bestätigen Sie mit Ihrem Anbieter
Wenn Ihr Container von einem Partner wie Sojern stammt, informieren Sie Ihren Account Manager, dass die Integration aktiv ist. Er kann von seiner Seite aus überprüfen, ob die Tags auf
wink.travelfür Ihre Unterkunft korrekt ausgelöst werden und Daten in Ihr Konto fließen.
Was Wink auf unserer Seite macht
Abschnitt betitelt „Was Wink auf unserer Seite macht“Zur Transparenz hier, was Wink konfiguriert, um diese Integration zu ermöglichen:
- Ein GTM Container-ID-Feld ist im Tab Anpassungen Ihres Wink-Portals verfügbar. Wenn Sie Ihre Container-ID eingeben, validiert Wink das Format (
GTM-XXXXXXX) und speichert es sicher für Ihre Unterkunft. - Auf jeder Seite, auf der Ihre Unterkunft bei Wink aktiv ist, wird Ihr Container direkt in die Seite eingebunden – er teilt sich Wink’s eigenes
window.dataLayer– so lädt er parallel zum eigenen Container von Wink ohne Abhängigkeit von zusätzlicher Konfiguration. Dies geschieht automatisch, ohne dass das Wink-Team pro Unterkunft eingreifen muss. - Ihr Container wird asynchron geladen, sodass die Seitenladezeit für Ihre Gäste nicht beeinträchtigt wird.
- Wink’s eigenes Tracking und Ihr Container laufen parallel und lesen aus demselben gemeinsamen
dataLayer. Jedes von Wink getrackte Buchungsereignis steht Ihrem Container gleichzeitig zur Verfügung. - Wenn Ihre Unterkunft nicht angezeigt wird – z. B. wenn ein Gast ein anderes Hotel bei Wink durchsucht – wird Ihr Container nicht geladen und erhält nur Daten, die für Ihre Unterkunft relevant sind.
- Wenn Sie eine GA4 Measurement ID + API Secret angegeben haben (Schritt 3 oben), wird der
purchasefür abgeschlossene Buchungen zusätzlich serverseitig über das GA4 Measurement Protocol gesendet, sodass ein Verkauf auch dann erfasst wird, wenn der Gast nie zur Bestätigungsseite zurückkehrt.
DataLayer-Referenz
Abschnitt betitelt „DataLayer-Referenz“Wink pusht GA4-kompatible Events während der gesamten Gästereise in den dataLayer. Ihr GTM-Container liest aus demselben gemeinsamen dataLayer, sodass jeder Trigger oder jede Variable, die Sie konfigurieren, Zugriff auf alle unten beschriebenen Eigenschaften hat.
Jedes Event folgt der standardmäßigen GA4 Enhanced Ecommerce-Struktur: ein oberstes event-String und ein ecommerce-Objekt. Vor jedem Push löscht Wink die vorherigen Ecommerce-Daten, um zu verhindern, dass veraltete Daten in neue Trigger gelangen.
Buchungsreise-Ereignisse
Abschnitt betitelt „Buchungsreise-Ereignisse“Diese Events werden automatisch ausgelöst, wenn ein Gast den Buchungstrichter durchläuft. Konfigurieren Sie Ihre GTM-Trigger als Custom Event-Trigger, die den untenstehenden Event-Namen entsprechen.
| Schritt | Event | Wann es ausgelöst wird |
|---|---|---|
| 1 | view_item_list | Hotel-Inventar-Gitter oder Liste wird geladen |
| 2 | view_item | Gast sieht eine bestimmte Unterkunftsseite |
| 3 | add_to_cart | Gast legt ein Zimmer in den Warenkorb |
| 4 | begin_checkout | Checkout-/Zahlungsseite wird geladen |
| 5 | add_payment_info | Gast wählt eine Zahlungsmethode aus |
| 6 | login | Gast authentifiziert sich via SSO |
| 7 | purchase | Buchung wird bestätigt |
| 8 | refund | Buchung wird storniert |
view_item_list
Abschnitt betitelt „view_item_list“Wird ausgelöst, wenn ein Hotel-Inventar-Gitter oder eine Liste angezeigt wird.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
Abschnitt betitelt „view_item“Wird ausgelöst, wenn ein Gast eine bestimmte Unterkunft ansieht.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Abschnitt betitelt „add_to_cart“Wird ausgelöst, wenn ein Gast ein Zimmer in den Warenkorb legt.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Abschnitt betitelt „begin_checkout“Wird ausgelöst, wenn die Checkout-/Zahlungsseite geladen wird.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon ist nur vorhanden, wenn ein Rabattcode angewendet wurde.
add_payment_info
Abschnitt betitelt „add_payment_info“Wird ausgelöst, wenn der Gast eine Zahlungsmethode auswählt oder bestätigt.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type wird vom Typ des Zahlungsanbieters übernommen. coupon ist nur vorhanden, wenn ein Rabattcode angewendet wurde.
Wird ausgelöst, wenn sich ein Gast über Single Sign-On authentifiziert.
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Abschnitt betitelt „purchase“Wird ausgelöst, wenn eine Buchung bestätigt wird.
{ "event": "purchase", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ { "item_id": "rr-xyz789", "item_name": "Deluxe Ocean Suite", "item_brand": "Grand Resort", "item_category": "GUEST_ROOM", "price": 299.00, "quantity": 1, "property_id": "prop-abc123", "property_name": "Grand Resort Maldives", "property_brand": "Grand Collection", "property_chain": "Luxury Hotels International", "city_name": "Malé", "country_code": "MV", "start_date": "2026-06-01", "end_date": "2026-06-05", "num_adults": 2, "num_children": 0, "cancellation_policy": "Refundable", "rate_plan_id": "rp-summer2026", "room_rate_id": "rr-xyz789", "room_rate_name": "Summer Escape — Bed & Breakfast", "num_perks": 2, "room_location": "Overwater", "room_view": "Ocean", "room_classification": "Suite" } ] }}transaction_id ist die eindeutige Buchungsvertragskennung. coupon, shipping und tax sind nur vorhanden, wenn zutreffend.
Wird ausgelöst, wenn eine Buchung storniert wird.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id entspricht dem purchase-Event derselben Buchung. coupon, shipping und tax sind nur vorhanden, wenn zutreffend.
Artikel-Eigenschaften
Abschnitt betitelt „Artikel-Eigenschaften“Alle Events, die ein items-Array enthalten, verwenden dasselbe Artikelschema. Jede Eigenschaft ist optional, sofern nicht als erforderlich markiert.
Standard GA4-Felder
Abschnitt betitelt „Standard GA4-Felder“Diese Felder werden von GA4 nativ verstanden und erscheinen in Standard-Ecommerce-Berichten ohne zusätzliche Konfiguration.
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
item_id | string | Ja | Eindeutige Kennung für das Zimmer oder Produkt |
item_name | string | — | Name des Zimmers oder Produkts |
affiliation | string | — | Affiliate- oder Verkäufername |
coupon | string | — | Auf den Artikel angewendeter Gutscheincode |
currency | string | — | ISO 4217 Währungscode (z. B. USD) |
creative_name | string | — | Kreativname, der in einer Promotion verwendet wird |
creative_slot | string | — | Slot-Position der Promotion-Kreativ |
discount | number | — | Angewendeter Rabattbetrag |
index | number | — | Position in der Liste (1-basiert) |
item_brand | string | — | Hotel- oder Markenname |
item_category | string | — | Produkttyp – z. B. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | Kennung der Liste, zu der dieser Artikel gehört |
item_list_name | string | — | Anzeigename der Liste |
location_id | string | — | Geokoordinaten der Unterkunft |
price | number | — | Einzelpreis |
promotion_id | string | — | Kennung der Promotion |
promotion_name | string | — | Anzeigename der Promotion |
quantity | number | — | Menge (Standard ist 1) |
Benutzerdefinierte artikelbezogene Parameter
Abschnitt betitelt „Benutzerdefinierte artikelbezogene Parameter“Diese Parameter enthalten Wink-spezifischen Buchungskontext. GA4 zeigt sie nicht automatisch in Berichten an – Sie müssen jeden als artikelbezogene benutzerdefinierte Dimension in Ihrer GA4-Property registrieren, bevor er in Explorationen oder Standardberichten erscheint. Siehe Benutzerdefinierte Dimensionen in GA4 weiter unten für Anweisungen.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
property_id | string | Wink-Unterkunftskennung |
property_name | string | Anzeigename der Unterkunft |
property_brand | string | Marke, zu der die Unterkunft gehört |
property_chain | string | Kette, zu der die Unterkunft gehört |
property_url_name | string | URL-freundlicher Slug für die Unterkunft |
city_name | string | Stadt, in der sich die Unterkunft befindet |
country_code | string | ISO 3166-1 alpha-2 Ländercode |
start_date | string | Check-in-Datum im Format YYYY-MM-DD |
end_date | string | Check-out-Datum im Format YYYY-MM-DD |
num_adults | number | Anzahl der Erwachsenen in der Buchung |
num_children | number | Anzahl der Kinder in der Buchung |
cancellation_policy | string | Einer von: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | Kennung des Tarifplans |
room_rate_id | string | Kennung des spezifischen Zimmerpreises |
room_rate_name | string | Anzeigename des Zimmerpreises |
num_perks | number | Anzahl der im Tarif enthaltenen Extras |
room_location | string | Ortsbeschreibung für das Zimmer (z. B. Overwater, Garden) |
room_view | string | Ausblickbeschreibung für das Zimmer (z. B. Ocean, City) |
room_classification | string | Zimmerklassifikation oder Kategorie (z. B. Suite, Standard) |
bed_type | string | Bettenkonfiguration für das Zimmer (z. B. King, Twin) |
Benutzerdefinierte Dimensionen in GA4
Abschnitt betitelt „Benutzerdefinierte Dimensionen in GA4“GA4 ignoriert benutzerdefinierte Artikelparameter in Berichten, bis Sie sie explizit als artikelbezogene benutzerdefinierte Dimensionen registrieren. Sie müssen nur die Parameter registrieren, die Sie in Berichten verwenden möchten – nicht alle 20.
-
Öffnen Sie benutzerdefinierte Definitionen
Gehen Sie in GA4 zu Admin (Zahnrad-Symbol unten links) → wählen Sie Ihre Property → Datenanzeige → Benutzerdefinierte Definitionen.
-
Erstellen Sie eine neue benutzerdefinierte Dimension
Klicken Sie auf Benutzerdefinierte Dimensionen erstellen.
-
Füllen Sie die Details der Dimension aus
- Dimensionsname — die menschenlesbare Bezeichnung, die in GA4-Berichten erscheint (siehe Tabelle unten)
- Bereich — wählen Sie Artikel
- Ereignisparameter — der genaue Parametername, wie er im dataLayer erscheint (siehe Tabelle unten)
- Beschreibung — optional, aber empfohlen
-
Speichern und wiederholen
Klicken Sie auf Speichern und wiederholen Sie den Vorgang für jeden Parameter, den Sie verfolgen möchten.
Verwenden Sie die folgende Tabelle als Referenz beim Erstellen benutzerdefinierter Dimensionen. Der Wert für Ereignisparameter muss exakt übereinstimmen – GA4 ist case-sensitiv.
| Dimensionsname | Ereignisparameter | Typ |
|---|---|---|
| Property ID | property_id | Text |
| Property Name | property_name | Text |
| Property Brand | property_brand | Text |
| Property Chain | property_chain | Text |
| Property URL Name | property_url_name | Text |
| City Name | city_name | Text |
| Country Code | country_code | Text |
| Check-in Datum | start_date | Text |
| Check-out Datum | end_date | Text |
| Anzahl Erwachsene | num_adults | Zahl |
| Anzahl Kinder | num_children | Zahl |
| Stornierungsbedingungen | cancellation_policy | Text |
| Tarifplan-ID | rate_plan_id | Text |
| Zimmerpreis-ID | room_rate_id | Text |
| Zimmerpreis-Name | room_rate_name | Text |
| Anzahl Extras | num_perks | Zahl |
| Zimmerstandort | room_location | Text |
| Zimmerausblick | room_view | Text |
| Zimmerklassifikation | room_classification | Text |
| Bettenart | bed_type | Text |
Weitere verfügbare Events
Abschnitt betitelt „Weitere verfügbare Events“Die folgenden Events sind im Wink dataLayer verfügbar, gehören aber nicht zum Standard-Buchungstrichter. Sie können durch andere Interaktionen auf der Plattform ausgelöst werden.
add_to_wishlist
Abschnitt betitelt „add_to_wishlist“{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Abschnitt betitelt „remove_from_cart“{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Abschnitt betitelt „select_item“{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Abschnitt betitelt „view_cart“{ "event": "view_cart"}Dieses Event enthält keine ecommerce-Daten.
view_promotion
Abschnitt betitelt „view_promotion“{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Abschnitt betitelt „select_promotion“{ "event": "select_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}{ "event": "search", "ecommerce": { "search_term": "beachfront resort" }}select_content
Abschnitt betitelt „select_content“{ "event": "select_content", "ecommerce": { "content_type": "hotel", "content_id": "prop_12345" }}{ "event": "share", "ecommerce": { "method": "copy_link", "content_type": "hotel", "item_id": "prop_12345" }}sign_up
Abschnitt betitelt „sign_up“{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Abschnitt betitelt „generate_lead“{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Abschnitt betitelt „join_group“{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Abschnitt betitelt „earn_virtual_currency“{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Abschnitt betitelt „spend_virtual_currency“{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Abschnitt betitelt „level_start“{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Abschnitt betitelt „level_end“{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Abschnitt betitelt „level_up“{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Abschnitt betitelt „post_score“{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Abschnitt betitelt „unlock_achievement“{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Abschnitt betitelt „tutorial_begin“{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Abschnitt betitelt „tutorial_complete“{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Abschnitt betitelt „virtualPageView“Dies ist ein benutzerdefiniertes Wink-Event – kein Teil des standardmäßigen GA4-Event-Sets. Es wird bei jeder Seiten-Navigation gepusht und enthält Geräte- und Sitzungs-Kontext. Es enthält kein ecommerce-Objekt.
{ "event": "virtualPageView", "device": "Desktop", "deviceAgent": "Mozilla/5.0 ...", "os": "MacOS", "path": "/hotels/grand-resort", "title": "Grand Resort — Wink", "userId": "user_abc123", "startDate": "2026-06-01", "endDate": "2026-06-05", "guests": "2", "rooms": "1"}| Eigenschaft | Beschreibung |
|---|---|
device | Erkanntes Gerätetyp – Desktop, Android, iPhone, iPad oder ähnlich |
deviceAgent | Rohes User-Agent-String |
os | Erkanntes Betriebssystem – Windows, MacOS, Linux, UNIX |
path | Aktueller Seitenpfad |
title | Aktueller Seitentitel |
userId | Authentifizierte Benutzerkennung (wird weggelassen, wenn nicht eingeloggt) |
startDate | Check-in-Datum aus der aktuellen Suchsitzung |
endDate | Check-out-Datum aus der aktuellen Suchsitzung |
guests | Anzahl der Gäste aus der aktuellen Suchsitzung |
rooms | Anzahl der Zimmer aus der aktuellen Suchsitzung |
