GTM 애널리틱스 통합
Wink 포털에 GTM 컨테이너 ID를 입력하여 어떤 Google Tag Manager(GTM) 컨테이너든 Wink에 연결할 수 있습니다. 연결되면 해당 컨테이너가 귀하의 숙소에 자동으로 로드되어 Wink의 예약 이벤트를 직접 읽습니다 — 검색부터 예약 완료까지 전체 고객 여정을 포괄합니다. 일반적인 사용 사례는 리타겟팅 및 광고를 위한 Sojern 컨테이너이지만, 모든 GTM 컨테이너가 동일하게 작동합니다.
해야 할 일
섹션 제목: “해야 할 일”-
GTM 컨테이너 ID 받기
GTM 컨테이너 ID(형식
GTM-XXXXXXX)를 받으세요. Sojern과 같은 파트너에서 제공된 경우, 픽셀 또는 태그 ID와 다르므로 GTM 컨테이너 ID를 구체적으로 요청하세요. -
Wink 포털에 입력하기
app.wink.travel에 로그인하여 계정을 선택한 후 Customizations 탭으로 이동하세요. GTM 필드에 GTM 컨테이너 ID를 붙여넣고 저장하세요. 통합이 활성화됩니다.
-
(선택 사항) 서버 측 구매를 위한 GA4 측정 ID + API 비밀 추가
GTM 컨테이너는 전적으로 고객의 브라우저에서 실행되므로, 결제 리디렉션 중 탭을 닫으면 완료된 예약이 누락될 수 있습니다. 컨테이너가 GA4 속성을 로드하고 완료된 예약을 신뢰성 있게 기록하려면, GTM 섹션에 해당 GA4의 측정 ID와 측정 프로토콜 API 비밀도 입력하세요. 그러면 Wink가 GA4 애널리틱스 통합 가이드에 설명된 대로
purchase이벤트를 서버 측으로 전송합니다. 브라우저 내 추적만 필요하면 이 항목은 비워 두세요. -
제공자에게 확인 요청
컨테이너가 Sojern과 같은 파트너에서 제공된 경우, 계정 관리자에게 통합이 활성화되었음을 알리세요. 그들은 귀하의 숙소에 대해
wink.travel에서 태그가 올바르게 작동하는지 확인하고 데이터가 계정으로 흐르는지 검증할 수 있습니다.
Wink가 처리하는 부분
섹션 제목: “Wink가 처리하는 부분”투명성을 위해 Wink가 이 통합을 위해 구성하는 내용을 안내합니다:
- GTM 컨테이너 ID 필드가 Wink 포털의 Customizations 탭에 제공됩니다. 컨테이너 ID를 입력하면 Wink가 형식(
GTM-XXXXXXX)을 검증하고 귀하의 숙소에 안전하게 저장합니다. - 귀하의 숙소가 활성화된 모든 페이지에서 Wink는 귀하의 컨테이너를 페이지에 직접 삽입하며, Wink 자체의
window.dataLayer를 공유하여 Wink 자체 컨테이너와 함께 추가 설정 없이 자동으로 로드됩니다. 이 작업은 Wink 팀의 별도 작업 없이 자동으로 이루어집니다. - 컨테이너는 비동기적으로 로드되어 고객의 페이지 로드 성능에 영향을 주지 않습니다.
- Wink의 자체 추적과 귀하의 컨테이너가 병행 실행되며, 동일한 공유
dataLayer를 읽습니다. Wink가 추적하는 모든 예약 이벤트가 동시에 귀하의 컨테이너에 제공됩니다. - 숙소가 조회되지 않을 때 — 예를 들어 고객이 Wink에서 다른 호텔을 탐색할 때 — 귀하의 컨테이너는 로드되지 않아 해당 숙소 관련 데이터만 수신합니다.
- GA4 측정 ID + API 비밀을 제공한 경우(위 3단계), 완료된 예약의
purchase이벤트가 GA4 측정 프로토콜을 통해 서버 측으로 추가 전송되어, 고객이 확인 페이지로 돌아오지 않아도 판매가 기록됩니다.
DataLayer 참조
섹션 제목: “DataLayer 참조”Wink는 고객 여정 전반에 걸쳐 GA4 호환 이벤트를 dataLayer에 푸시합니다. 귀하의 GTM 컨테이너는 동일한 공유 dataLayer를 읽으므로, 구성하는 모든 트리거나 변수는 아래 설명된 모든 속성에 접근할 수 있습니다.
각 이벤트는 표준 GA4 향상된 전자상거래 구조를 따릅니다: 최상위 event 문자열과 ecommerce 객체. 푸시하기 전에 Wink는 이전 전자상거래 페이로드를 지워 이전 데이터가 새 트리거에 섞이지 않도록 합니다.
예약 여정 이벤트
섹션 제목: “예약 여정 이벤트”고객이 예약 퍼널을 진행할 때 자동으로 발생하는 이벤트입니다. GTM 트리거를 아래 이벤트 이름과 일치하는 사용자 정의 이벤트 트리거로 구성하세요.
| 단계 | 이벤트 | 발생 시점 |
|---|---|---|
| 1 | view_item_list | 호텔 인벤토리 그리드 또는 목록 로드 시 |
| 2 | view_item | 고객이 특정 숙소 페이지 조회 시 |
| 3 | add_to_cart | 고객이 객실을 장바구니에 추가 시 |
| 4 | begin_checkout | 결제 페이지 로드 시 |
| 5 | add_payment_info | 고객이 결제 수단 선택 시 |
| 6 | login | 고객이 SSO로 인증 시 |
| 7 | purchase | 예약 확정 시 |
| 8 | refund | 예약 취소 시 |
view_item_list
섹션 제목: “view_item_list”호텔 인벤토리 그리드 또는 목록이 렌더링될 때 발생합니다.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
섹션 제목: “view_item”고객이 특정 숙소를 조회할 때 발생합니다.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
섹션 제목: “add_to_cart”고객이 객실을 장바구니에 추가할 때 발생합니다.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
섹션 제목: “begin_checkout”결제 페이지가 로드될 때 발생합니다.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon은 할인 코드가 적용된 경우에만 포함됩니다.
add_payment_info
섹션 제목: “add_payment_info”고객이 결제 수단을 선택하거나 확인할 때 발생합니다.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type은 결제 수단 유형에서 채워집니다. coupon은 할인 코드가 적용된 경우에만 포함됩니다.
login
섹션 제목: “login”고객이 싱글 사인온(SSO)으로 인증할 때 발생합니다.
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
섹션 제목: “purchase”예약이 확정될 때 발생합니다.
{ "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는 고유 예약 계약 식별자입니다. coupon, shipping, tax는 해당하는 경우에만 포함됩니다.
refund
섹션 제목: “refund”예약이 취소될 때 발생합니다.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id는 동일 예약의 purchase 이벤트와 일치합니다. coupon, shipping, tax는 해당하는 경우에만 포함됩니다.
아이템 속성
섹션 제목: “아이템 속성”items 배열을 포함하는 모든 이벤트는 동일한 아이템 스키마를 공유합니다. 모든 속성은 선택 사항이며, 필수로 표시된 경우에만 필수입니다.
표준 GA4 필드
섹션 제목: “표준 GA4 필드”이 필드는 GA4에서 기본적으로 인식하며 추가 구성 없이 표준 전자상거래 보고서에 나타납니다.
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
item_id | string | 예 | 객실 또는 상품의 고유 식별자 |
item_name | string | — | 객실 또는 상품 이름 |
affiliation | string | — | 제휴사 또는 판매자 이름 |
coupon | string | — | 아이템에 적용된 쿠폰 코드 |
currency | string | — | ISO 4217 통화 코드 (예: USD) |
creative_name | string | — | 프로모션에 사용된 크리에이티브 이름 |
creative_slot | string | — | 프로모션 크리에이티브의 슬롯 위치 |
discount | number | — | 적용된 할인 금액 |
index | number | — | 목록 내 위치 (1부터 시작) |
item_brand | string | — | 호텔 또는 브랜드 이름 |
item_category | string | — | 상품 유형 — 예: GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | 이 아이템이 속한 목록 식별자 |
item_list_name | string | — | 목록 표시 이름 |
location_id | string | — | 숙소의 지리 좌표 |
price | number | — | 단가 |
promotion_id | string | — | 프로모션 식별자 |
promotion_name | string | — | 프로모션 표시 이름 |
quantity | number | — | 수량 (기본값 1) |
맞춤 아이템 범위 매개변수
섹션 제목: “맞춤 아이템 범위 매개변수”이 매개변수는 Wink 고유의 예약 컨텍스트를 담고 있습니다. GA4는 보고서에 자동으로 표시하지 않으므로, 탐색 또는 표준 보고서에 나타나려면 GA4 속성에서 각 매개변수를 아이템 범위 맞춤 측정기준으로 등록해야 합니다. 설정 방법은 아래 GA4 맞춤 측정기준 참조.
| 속성 | 유형 | 설명 |
|---|---|---|
property_id | string | Wink 숙소 식별자 |
property_name | string | 숙소 표시 이름 |
property_brand | string | 숙소가 속한 브랜드 |
property_chain | string | 숙소가 속한 체인 |
property_url_name | string | 숙소 URL 친화적 슬러그 |
city_name | string | 숙소가 위치한 도시 |
country_code | string | ISO 3166-1 alpha-2 국가 코드 |
start_date | string | 체크인 날짜 (YYYY-MM-DD 형식) |
end_date | string | 체크아웃 날짜 (YYYY-MM-DD 형식) |
num_adults | number | 예약 성인 수 |
num_children | number | 예약 아동 수 |
cancellation_policy | string | 다음 중 하나: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | 요금제 식별자 |
room_rate_id | string | 특정 객실 요금 식별자 |
room_rate_name | string | 객실 요금 표시 이름 |
num_perks | number | 요금에 포함된 혜택 수 |
room_location | string | 객실 위치 설명 (예: Overwater, Garden) |
room_view | string | 객실 전망 설명 (예: Ocean, City) |
room_classification | string | 객실 분류 또는 등급 (예: Suite, Standard) |
bed_type | string | 객실 침대 구성 (예: King, Twin) |
GA4 맞춤 측정기준
섹션 제목: “GA4 맞춤 측정기준”GA4는 맞춤 아이템 매개변수를 명시적으로 아이템 범위 맞춤 측정기준으로 등록하기 전까지 보고서에서 무시합니다. 보고서에 사용할 매개변수만 등록하면 되며, 20개 전부를 등록할 필요는 없습니다.
-
맞춤 정의 열기
GA4에서 관리자(왼쪽 하단 톱니바퀴 아이콘) → 속성 선택 → 데이터 표시 → 맞춤 정의로 이동합니다.
-
새 맞춤 측정기준 생성
맞춤 측정기준 생성을 클릭합니다.
-
측정기준 세부정보 입력
- 측정기준 이름 — GA4 보고서에 표시될 사람이 읽기 쉬운 이름 (아래 표 참조)
- 범위 — 아이템 선택
- 이벤트 매개변수 — dataLayer에 나타나는 정확한 매개변수 이름 (아래 표 참조)
- 설명 — 선택 사항이지만 권장
-
저장 및 반복
저장을 클릭한 후 추적할 각 매개변수에 대해 반복합니다.
맞춤 측정기준 생성 시 아래 표를 참조하세요. 이벤트 매개변수 값은 대소문자까지 정확히 일치해야 합니다.
| 측정기준 이름 | 이벤트 매개변수 | 유형 |
|---|---|---|
| 숙소 ID | property_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 | 텍스트 |
| 요금제 ID | rate_plan_id | 텍스트 |
| 객실 요금 ID | room_rate_id | 텍스트 |
| 객실 요금 이름 | room_rate_name | 텍스트 |
| 혜택 수 | num_perks | 숫자 |
| 객실 위치 | room_location | 텍스트 |
| 객실 전망 | room_view | 텍스트 |
| 객실 분류 | room_classification | 텍스트 |
| 침대 유형 | bed_type | 텍스트 |
추가 사용 가능한 이벤트
섹션 제목: “추가 사용 가능한 이벤트”아래 이벤트들은 Wink dataLayer에 존재하지만 표준 예약 퍼널에는 포함되지 않습니다. 플랫폼 내 다른 상호작용에 의해 발생할 수 있습니다.
add_to_wishlist
섹션 제목: “add_to_wishlist”{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
섹션 제목: “remove_from_cart”{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
섹션 제목: “select_item”{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
섹션 제목: “view_cart”{ "event": "view_cart"}이 이벤트에는 ecommerce 페이로드가 포함되지 않습니다.
view_promotion
섹션 제목: “view_promotion”{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
섹션 제목: “select_promotion”{ "event": "select_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}search
섹션 제목: “search”{ "event": "search", "ecommerce": { "search_term": "beachfront resort" }}select_content
섹션 제목: “select_content”{ "event": "select_content", "ecommerce": { "content_type": "hotel", "content_id": "prop_12345" }}share
섹션 제목: “share”{ "event": "share", "ecommerce": { "method": "copy_link", "content_type": "hotel", "item_id": "prop_12345" }}sign_up
섹션 제목: “sign_up”{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
섹션 제목: “generate_lead”{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
섹션 제목: “join_group”{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
섹션 제목: “earn_virtual_currency”{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
섹션 제목: “spend_virtual_currency”{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
섹션 제목: “level_start”{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
섹션 제목: “level_end”{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
섹션 제목: “level_up”{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
섹션 제목: “post_score”{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
섹션 제목: “unlock_achievement”{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
섹션 제목: “tutorial_begin”{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
섹션 제목: “tutorial_complete”{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
섹션 제목: “virtualPageView”이 이벤트는 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 | 감지된 기기 유형 — Desktop, Android, iPhone, iPad 등 |
deviceAgent | 원시 사용자 에이전트 문자열 |
os | 감지된 운영체제 — Windows, MacOS, Linux, UNIX |
path | 현재 페이지 경로 |
title | 현재 페이지 제목 |
userId | 인증된 사용자 식별자 (로그인하지 않은 경우 생략) |
startDate | 현재 검색 세션의 체크인 날짜 |
endDate | 현재 검색 세션의 체크아웃 날짜 |
guests | 현재 검색 세션의 투숙객 수 |
rooms | 현재 검색 세션의 객실 수 |
