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에 로그인하고 계정을 선택한 후 맞춤 설정을 엽니다. Analytics & integrations 섹션에서 GTM 컨테이너 ID를 GTM Container ID 필드에 붙여넣고 저장하세요. 통합이 활성화됩니다.
-
제공자에게 확인 요청
컨테이너가 Sojern과 같은 파트너에서 온 경우, 계정 관리자에게 통합이 활성화되었음을 알리세요. 그들은
wink.travel에서 귀하의 숙소에 태그가 올바르게 작동하는지 확인하고 데이터가 귀하의 계정으로 흐르는지 검증할 수 있습니다.
Wink가 처리하는 내용
섹션 제목: “Wink가 처리하는 내용”투명성을 위해 Wink가 이 통합을 위해 구성하는 내용을 안내합니다:
- GTM 컨테이너 ID 필드가 맞춤 설정의 Analytics & integrations 섹션에 제공됩니다. 컨테이너 ID를 입력하면 Wink가 형식(
GTM-XXXXXXX)을 검증하고 귀하의 숙소에 안전하게 저장합니다. - 귀하의 숙소가 활성화된 모든 Wink 페이지에 컨테이너가 직접 삽입됩니다 — Wink의 자체
window.dataLayer를 공유하여 Wink 자체 컨테이너와 함께 별도의 추가 설정 없이 자동으로 로드됩니다. 이는 Wink 팀의 별도 작업 없이 자동으로 이루어집니다. - 컨테이너는 비동기적으로 로드되어 고객의 페이지 로드 성능에 영향을 주지 않습니다.
- Wink의 자체 추적과 귀하의 컨테이너가 병행 실행되며 동일한 공유
dataLayer를 읽습니다. Wink가 추적하는 모든 예약 이벤트가 동시에 귀하의 컨테이너에 전달됩니다. - 숙소가 조회되지 않을 때는 — 예를 들어 고객이 Wink에서 다른 호텔을 탐색할 때 — 귀하의 컨테이너는 로드되지 않아 해당 숙소 관련 데이터만 수신합니다.
- 완료된 예약(
purchase) 이벤트는 감사 페이지에서 브라우저에서 실행됩니다. GTM 컨테이너 ID는 블랙박스이므로 Wink는 서버에서 Google에 대신 호출하지 않습니다. 대신 컨테이너 내 GA4 또는 전환 태그가 클라이언트 측에서purchase를 받습니다. 결제 제공자가 고객 브라우저를 리디렉션했다가 다시 돌아오므로, Wink는purchase실행 전에 리디렉션으로 중단된 분석 세션을 재연결하여 판매가 고객의 원래 방문에 귀속되도록 합니다.
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 보고서에 표시될 사람이 읽을 수 있는 이름 (아래 표 참조)
- 범위 — 아이템(Item) 선택
- 이벤트 매개변수 — 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 | 현재 검색 세션의 객실 수 |
