コンテンツにスキップ

GTMアナリティクス連携

WinkポータルにGTMコンテナIDを入力することで、任意のGoogle Tag Manager(GTM)コンテナをWinkに接続できます。接続後は、あなたの物件に対してコンテナが自動的に読み込まれ、Winkの予約イベントを直接読み取ります。これにより、検索から予約完了までのゲストの全旅程をカバーします。一般的な利用例は、リターゲティングや広告用のSojernコンテナですが、どのGTMコンテナでも同様に機能します。


  1. GTMコンテナIDを取得する

    GTMコンテナID(形式はGTM-XXXXXXX)を入手してください。Sojernなどのパートナーからの場合は、ピクセルやタグIDではなくGTMコンテナIDを特に依頼してください。

  2. Winkポータルに入力する

    app.wink.travelにログインし、アカウントを選択してカスタマイズタブに移動します。GTM欄にGTMコンテナIDを貼り付けて保存してください。これで連携が有効になります。

  3. (任意)サーバーサイド購入のためにGA4の測定IDとAPIシークレットを追加する

    GTMコンテナはゲストのブラウザ上で動作するため、支払いリダイレクト中にタブを閉じると予約完了が検知されない場合があります。コンテナがGA4プロパティを読み込んでいて、予約完了を確実に記録したい場合は、GTM欄にGA4の測定IDMeasurement Protocol APIシークレットも入力してください。WinkはGA4アナリティクス連携ガイドに記載の通り、purchaseイベントをサーバーサイドで送信します。ブラウザ内トラッキングのみでよければ空欄のままで構いません。

  4. 提供元に連携完了を確認する

    Sojernなどのパートナーからのコンテナの場合は、アカウントマネージャーに連携が有効になったことを伝えてください。彼らはwink.travel上でタグが正しく発火し、データがアカウントに流れていることを確認できます。


透明性のために、この連携を実現するためにWinkが設定している内容を説明します。

  • WinkポータルのカスタマイズタブにGTMコンテナID入力欄を用意しています。入力されたIDは形式(GTM-XXXXXXX)を検証し、安全に物件に紐づけて保存します。
  • Wink上で物件が有効なすべてのページに、あなたのコンテナを直接ページに注入します。Wink自身のwindow.dataLayerを共有し、Winkのコンテナと並行して読み込まれます。追加設定は不要で、Winkチームによる物件ごとの作業もありません。
  • コンテナは非同期で読み込まれるため、ゲストのページ読み込み速度に影響しません。
  • Winkのトラッキングとあなたのコンテナは並行して動作し、同じ共有dataLayerを読み取ります。Winkが追跡するすべての予約イベントは同時にあなたのコンテナでも利用可能です。
  • 物件が閲覧されていない場合(例:ゲストが別のホテルを閲覧中)はコンテナは読み込まれず、物件に関連するデータのみを受け取ります。
  • GA4の測定IDとAPIシークレットを提供した場合(上記ステップ3)、予約完了のpurchaseイベントはGA4 Measurement Protocolを使ってサーバーサイドでも送信されます。これにより、ゲストが確認ページに戻らなくても売上が記録されます。

Winkはゲストの旅程全体にわたりGA4互換のイベントをdataLayerにプッシュします。あなたのGTMコンテナは同じ共有dataLayerを読み取るため、設定したトリガーや変数は以下のすべてのプロパティにアクセス可能です。

各イベントは標準のGA4拡張eコマース構造に従い、トップレベルにevent文字列とecommerceオブジェクトを持ちます。イベントをプッシュする前にWinkは前回のeコマースペイロードをクリアし、古いデータが新しいトリガーに影響しないようにしています。


ゲストが予約ファネルを進むごとに自動で発火します。GTMトリガーは以下のイベント名に合わせてカスタムイベントトリガーとして設定してください。

ステップイベント発火タイミング
1view_item_listホテルの在庫グリッドまたはリストが読み込まれたとき
2view_itemゲストが特定の物件ページを閲覧したとき
3add_to_cartゲストが部屋をカートに追加したとき
4begin_checkoutチェックアウト/支払いページが読み込まれたとき
5add_payment_infoゲストが支払い方法を選択したとき
6loginゲストがSSOで認証したとき
7purchase予約が確定したとき
8refund予約がキャンセルされたとき

ホテルの在庫グリッドまたはリストが表示されたときに発火。

{
"event": "view_item_list",
"ecommerce": {
"item_list_id": "featured_hotels",
"item_list_name": "Featured Hotels",
"items": [ ]
}
}

ゲストが特定の物件を閲覧したときに発火。

{
"event": "view_item",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}

ゲストが部屋をカートに追加したときに発火。

{
"event": "add_to_cart",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}

チェックアウト/支払いページが読み込まれたときに発火。

{
"event": "begin_checkout",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"coupon": "SUMMER10",
"items": [ ]
}
}

couponは割引コードが適用された場合のみ含まれます。


ゲストが支払い方法を選択または確定したときに発火。

{
"event": "add_payment_info",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"coupon": "SUMMER10",
"payment_type": "STRIPE",
"items": [ ]
}
}

payment_typeは支払い取得者のタイプから設定されます。couponは割引コード適用時のみ含まれます。


ゲストがシングルサインオンで認証したときに発火。

{
"event": "login",
"ecommerce": {
"method": "IAM"
}
}

予約が確定したときに発火。

{
"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は予約契約の一意識別子です。couponshippingtaxは該当時のみ含まれます。


予約がキャンセルされたときに発火。

{
"event": "refund",
"ecommerce": {
"currency": "USD",
"transaction_id": "bc-a1b2c3d4",
"value": 299.00,
"coupon": "SUMMER10",
"shipping": 0.00,
"tax": 0.00,
"items": [ ]
}
}

transaction_idは同一予約のpurchaseイベントと一致します。couponshippingtaxは該当時のみ含まれます。


items配列を含むすべてのイベントは同じアイテムスキーマを共有します。すべてのプロパティは任意ですが、必須のものは明記しています。

これらはGA4にネイティブ対応しており、追加設定なしで標準のeコマースレポートに表示されます。

プロパティ必須説明
item_idstringはい部屋または商品の一意識別子
item_namestring部屋または商品の名称
affiliationstringアフィリエイトまたは販売者名
couponstringアイテムに適用されたクーポンコード
currencystringISO 4217通貨コード(例:USD
creative_namestringプロモーションで使用されたクリエイティブ名
creative_slotstringプロモーションクリエイティブのスロット位置
discountnumber適用された割引額
indexnumberリスト内の位置(1始まり)
item_brandstringホテルまたはブランド名
item_categorystring商品タイプ(例:GUEST_ROOMACTIVITYATTRACTIONMEETING_ROOMRESTAURANTSPA
item_list_idstringこのアイテムが属するリストの識別子
item_list_namestringリストの表示名
location_idstring物件の地理座標
pricenumber単価
promotion_idstringプロモーションの識別子
promotion_namestringプロモーションの表示名
quantitynumber数量(デフォルトは1

カスタムアイテムスコープパラメータ

Section titled “カスタムアイテムスコープパラメータ”

これらはWink固有の予約コンテキストを含みます。GA4では自動的にレポートに表示されないため、探索や標準レポートで使うにはGA4プロパティでアイテムスコープのカスタムディメンションとして登録が必要です。設定方法は以下のGA4のカスタムディメンションを参照してください。

プロパティ説明
property_idstringWink物件識別子
property_namestring物件表示名
property_brandstring物件が属するブランド
property_chainstring物件が属するチェーン
property_url_namestring物件のURL用スラッグ
city_namestring物件所在地の都市名
country_codestringISO 3166-1 alpha-2国コード
start_datestringチェックイン日(YYYY-MM-DD形式)
end_datestringチェックアウト日(YYYY-MM-DD形式)
num_adultsnumber予約の大人人数
num_childrennumber予約の子供人数
cancellation_policystring以下のいずれか:RefundableNon-RefundableRefundable-With-RestrictionsNon-Refundable-With-Restrictions
rate_plan_idstringレートプラン識別子
room_rate_idstring特定の部屋レート識別子
room_rate_namestring部屋レートの表示名
num_perksnumberレートに含まれる特典数
room_locationstring部屋の位置説明(例:OverwaterGarden
room_viewstring部屋の眺望説明(例:OceanCity
room_classificationstring部屋の分類またはランク(例:SuiteStandard
bed_typestring部屋のベッド構成(例:KingTwin

GA4はカスタムアイテムパラメータを、明示的にアイテムスコープのカスタムディメンションとして登録しない限りレポートに反映しません。すべての20項目を登録する必要はなく、レポートで使いたいものだけ登録してください。

  1. カスタム定義を開く

    GA4で、左下の歯車アイコンの管理 → 対象プロパティを選択 → データ表示カスタム定義に進みます。

  2. 新しいカスタムディメンションを作成

    カスタムディメンションを作成をクリックします。

  3. ディメンションの詳細を入力

    • ディメンション名 — GA4レポートに表示される人間向けラベル(下表参照)
    • スコープアイテムを選択
    • イベントパラメータ — dataLayerにある正確なパラメータ名(下表参照)
    • 説明 — 任意ですが推奨
  4. 保存して繰り返す

    保存をクリックし、追跡したいパラメータごとに繰り返します。

カスタムディメンション作成時の参照用テーブルです。イベントパラメータは大文字小文字を区別するため正確に入力してください。

ディメンション名イベントパラメータ
物件IDproperty_idテキスト
物件名property_nameテキスト
物件ブランドproperty_brandテキスト
物件チェーンproperty_chainテキスト
物件URL名property_url_nameテキスト
都市名city_nameテキスト
国コードcountry_codeテキスト
チェックイン日start_dateテキスト
チェックアウト日end_dateテキスト
大人の人数num_adults数値
子供の人数num_children数値
キャンセルポリシーcancellation_policyテキスト
レートプランIDrate_plan_idテキスト
部屋レートIDroom_rate_idテキスト
部屋レート名room_rate_nameテキスト
特典数num_perks数値
部屋の位置room_locationテキスト
部屋の眺望room_viewテキスト
部屋の分類room_classificationテキスト
ベッドタイプbed_typeテキスト

以下のイベントはWinkのdataLayerに存在しますが、標準の予約ファネルには含まれません。プラットフォーム上の他の操作で発火する可能性があります。

{
"event": "add_to_wishlist",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}
{
"event": "remove_from_cart",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}
{
"event": "select_item",
"ecommerce": {
"item_list_id": "featured_hotels",
"item_list_name": "Featured Hotels",
"items": [ ]
}
}
{
"event": "view_cart"
}

このイベントにはecommerceペイロードは含まれません。

{
"event": "view_promotion",
"ecommerce": {
"creative_name": "Summer Banner",
"creative_slot": "hero",
"promotion_id": "promo_001",
"promotion_name": "Summer Sale",
"items": [ ]
}
}
{
"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"
}
}
{
"event": "select_content",
"ecommerce": {
"content_type": "hotel",
"content_id": "prop_12345"
}
}
{
"event": "share",
"ecommerce": {
"method": "copy_link",
"content_type": "hotel",
"item_id": "prop_12345"
}
}
{
"event": "sign_up",
"ecommerce": {
"method": "email"
}
}
{
"event": "generate_lead",
"ecommerce": {
"currency": "USD",
"value": 0.00
}
}
{
"event": "join_group",
"ecommerce": {
"group_id": "group_abc"
}
}
{
"event": "earn_virtual_currency",
"ecommerce": {
"virtual_currency_name": "WinkPoints",
"value": 100
}
}
{
"event": "spend_virtual_currency",
"ecommerce": {
"virtual_currency_name": "WinkPoints",
"value": 50,
"item_name": "Room Upgrade"
}
}
{
"event": "level_start",
"ecommerce": {
"level_name": "Gold"
}
}
{
"event": "level_end",
"ecommerce": {
"level_name": "Gold",
"success": true
}
}
{
"event": "level_up",
"ecommerce": {
"level": 2,
"character": "traveler"
}
}
{
"event": "post_score",
"ecommerce": {
"score": 980,
"level": 2,
"character": "traveler"
}
}
{
"event": "unlock_achievement",
"ecommerce": {
"achievement_id": "first_booking"
}
}
{
"event": "tutorial_begin",
"ecommerce": {}
}
{
"event": "tutorial_complete",
"ecommerce": {}
}

これはWink独自のカスタムイベントで、標準のGA4イベントセットには含まれません。ページ遷移ごとにプッシュされ、デバイスやセッションのコンテキストを含みます。ecommerceオブジェクトは含みません。

{
"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"
}
プロパティ説明
device検出されたデバイスタイプ — DesktopAndroidiPhoneiPadなど
deviceAgent生のユーザーエージェント文字列
os検出されたOS — WindowsMacOSLinuxUNIX
path現在のページパス
title現在のページタイトル
userId認証済みユーザー識別子(未ログイン時は省略)
startDate現在の検索セッションのチェックイン日
endDate現在の検索セッションのチェックアウト日
guests現在の検索セッションのゲスト人数
rooms現在の検索セッションの部屋数