Bỏ qua để đến nội dung

Tích hợp GTM Analytics

Bạn có thể kết nối bất kỳ container Google Tag Manager (GTM) nào với Wink bằng cách nhập GTM Container ID của nó vào cổng thông tin Wink. Khi đã kết nối, container của bạn sẽ tự động tải cho cơ sở lưu trú của bạn và đọc trực tiếp các sự kiện đặt phòng của Wink — bao phủ toàn bộ hành trình khách từ tìm kiếm đến khi hoàn tất đặt phòng. Một trường hợp sử dụng phổ biến là container Sojern cho tiếp thị lại và quảng cáo, nhưng bất kỳ container GTM nào cũng hoạt động tương tự.


  1. Lấy GTM Container ID của bạn

    Lấy GTM Container ID (định dạng GTM-XXXXXXX). Nếu nó đến từ đối tác như Sojern, hãy yêu cầu GTM Container ID cụ thể — nó khác với pixel hoặc tag ID.

  2. Nhập vào cổng thông tin Wink

    Đăng nhập vào app.wink.travel, chọn tài khoản của bạn và vào tab Customizations. Dán GTM Container ID vào trường GTM và lưu lại. Tích hợp của bạn giờ đã hoạt động.

  3. (Tùy chọn) Thêm GA4 Measurement ID + API Secret cho mua hàng phía máy chủ

    Container GTM chạy hoàn toàn trong trình duyệt của khách, nên một đặt phòng hoàn tất có thể bị bỏ lỡ nếu khách đóng tab trong lúc chuyển hướng thanh toán. Nếu container của bạn tải một thuộc tính GA4 và bạn muốn ghi nhận đặt phòng hoàn tất một cách đáng tin cậy, hãy nhập thêm Measurement IDMeasurement Protocol API secret của GA4 đó trong phần GTM. Wink sẽ gửi sự kiện purchase cho thuộc tính đó phía máy chủ, chính xác như mô tả trong hướng dẫn Tích hợp GA4 Analytics. Để trống nếu bạn chỉ cần theo dõi trong trình duyệt.

  4. Xác nhận với nhà cung cấp của bạn

    Nếu container của bạn đến từ đối tác như Sojern, hãy thông báo với quản lý tài khoản rằng tích hợp đã hoạt động. Họ có thể kiểm tra từ phía họ rằng các tag đang kích hoạt đúng trên wink.travel cho cơ sở lưu trú của bạn và dữ liệu đang chảy vào tài khoản của bạn.


Để minh bạch, đây là những gì Wink cấu hình để tích hợp này hoạt động:

  • Có trường GTM Container ID trong tab Customizations của cổng thông tin Wink. Khi bạn nhập Container ID, Wink kiểm tra định dạng (GTM-XXXXXXX) và lưu trữ an toàn theo cơ sở lưu trú của bạn.
  • Trên mọi trang nơi cơ sở lưu trú của bạn hoạt động trên Wink, container của bạn được chèn trực tiếp vào trang — dùng chung window.dataLayer của Wink — nên nó tải cùng container của Wink mà không cần cấu hình thêm. Việc này diễn ra tự động, không cần làm việc riêng cho từng cơ sở lưu trú từ đội Wink.
  • Container của bạn được tải không đồng bộ, nên không ảnh hưởng đến hiệu suất tải trang cho khách.
  • Theo dõi của Wink và container của bạn chạy song song, đọc từ cùng dataLayer chia sẻ. Mỗi sự kiện đặt phòng Wink theo dõi đều có sẵn đồng thời cho container của bạn.
  • Khi cơ sở lưu trú của bạn không được xem — ví dụ khi khách đang duyệt khách sạn khác trên Wink — container của bạn không được tải, nên chỉ nhận dữ liệu liên quan đến cơ sở lưu trú của bạn.
  • Nếu bạn cung cấp GA4 Measurement ID + API secret (bước 3 ở trên), sự kiện purchase cho các đặt phòng hoàn tất cũng được gửi phía máy chủ qua GA4 Measurement Protocol, nên một giao dịch được ghi nhận ngay cả khi khách không quay lại trang xác nhận.

Wink đẩy các sự kiện tương thích GA4 vào dataLayer xuyên suốt hành trình khách. Container GTM của bạn đọc từ cùng dataLayer chia sẻ này, nên bất kỳ trigger hoặc biến nào bạn cấu hình đều có quyền truy cập vào tất cả thuộc tính mô tả dưới đây.

Mỗi sự kiện theo cấu trúc GA4 Enhanced Ecommerce tiêu chuẩn: một chuỗi event cấp cao và một đối tượng ecommerce. Trước mỗi lần đẩy, Wink xóa payload ecommerce trước đó để tránh dữ liệu cũ ảnh hưởng đến trigger mới.


Các sự kiện này tự động kích hoạt khi khách di chuyển qua phễu đặt phòng. Cấu hình trigger GTM của bạn là trigger Custom Event khớp với tên sự kiện bên dưới.

BướcSự kiệnKhi nào kích hoạt
1view_item_listLưới hoặc danh sách kho khách sạn tải
2view_itemKhách xem trang cơ sở lưu trú cụ thể
3add_to_cartKhách thêm phòng vào giỏ hàng
4begin_checkoutTrang thanh toán / checkout tải
5add_payment_infoKhách chọn phương thức thanh toán
6loginKhách xác thực qua SSO
7purchaseĐặt phòng được xác nhận
8refundĐặt phòng bị hủy

Kích hoạt khi lưới hoặc danh sách kho khách sạn được hiển thị.

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

Kích hoạt khi khách xem một cơ sở lưu trú cụ thể.

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

Kích hoạt khi khách thêm phòng vào giỏ hàng.

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

Kích hoạt khi trang thanh toán / checkout tải.

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

coupon chỉ xuất hiện khi mã giảm giá được áp dụng.


Kích hoạt khi khách chọn hoặc xác nhận phương thức thanh toán.

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

payment_type được lấy từ loại nhà cung cấp thanh toán. coupon chỉ xuất hiện khi mã giảm giá được áp dụng.


Kích hoạt khi khách xác thực qua đăng nhập một lần (SSO).

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

Kích hoạt khi đặt phòng được xác nhận.

{
"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 là mã định danh hợp đồng đặt phòng duy nhất. coupon, shipping, và tax chỉ xuất hiện khi có áp dụng.


Kích hoạt khi đặt phòng bị hủy.

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

transaction_id trùng với sự kiện purchase của cùng đặt phòng. coupon, shipping, và tax chỉ xuất hiện khi có áp dụng.


Tất cả sự kiện có mảng items dùng chung cấu trúc mục. Mỗi thuộc tính là tùy chọn trừ khi được đánh dấu bắt buộc.

Các trường này được GA4 hiểu sẵn và xuất hiện trong báo cáo ecommerce tiêu chuẩn mà không cần cấu hình thêm.

Thuộc tínhKiểuBắt buộcMô tả
item_idchuỗiMã định danh duy nhất cho phòng hoặc sản phẩm
item_namechuỗiTên phòng hoặc sản phẩm
affiliationchuỗiTên đối tác hoặc người bán
couponchuỗiMã giảm giá áp dụng cho mục
currencychuỗiMã tiền tệ ISO 4217 (ví dụ USD)
creative_namechuỗiTên sáng tạo dùng trong khuyến mãi
creative_slotchuỗiVị trí slot của sáng tạo khuyến mãi
discountsốSố tiền giảm giá áp dụng
indexsốVị trí trong danh sách (bắt đầu từ 1)
item_brandchuỗiTên khách sạn hoặc thương hiệu
item_categorychuỗiLoại sản phẩm — ví dụ GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idchuỗiMã định danh danh sách chứa mục này
item_list_namechuỗiTên hiển thị danh sách
location_idchuỗiTọa độ địa lý của cơ sở lưu trú
pricesốGiá đơn vị
promotion_idchuỗiMã định danh khuyến mãi
promotion_namechuỗiTên hiển thị khuyến mãi
quantitysốSố lượng (mặc định 1)

Các tham số này mang ngữ cảnh đặt phòng đặc thù của Wink. GA4 không tự động hiển thị trong báo cáo — bạn phải đăng ký từng tham số này làm custom dimension theo mục trong thuộc tính GA4 của bạn trước khi nó xuất hiện trong báo cáo hoặc phân tích. Xem phần Custom Dimensions in GA4 bên dưới để biết hướng dẫn.

Thuộc tínhKiểuMô tả
property_idchuỗiMã định danh cơ sở lưu trú Wink
property_namechuỗiTên hiển thị cơ sở lưu trú
property_brandchuỗiThương hiệu cơ sở lưu trú thuộc về
property_chainchuỗiChuỗi khách sạn cơ sở lưu trú thuộc về
property_url_namechuỗiSlug thân thiện URL cho cơ sở lưu trú
city_namechuỗiThành phố nơi cơ sở lưu trú tọa lạc
country_codechuỗiMã quốc gia ISO 3166-1 alpha-2
start_datechuỗiNgày nhận phòng theo định dạng YYYY-MM-DD
end_datechuỗiNgày trả phòng theo định dạng YYYY-MM-DD
num_adultssốSố người lớn trong đặt phòng
num_childrensốSố trẻ em trong đặt phòng
cancellation_policychuỗiMột trong: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idchuỗiMã định danh kế hoạch giá
room_rate_idchuỗiMã định danh giá phòng cụ thể
room_rate_namechuỗiTên hiển thị giá phòng
num_perkssốSố ưu đãi kèm theo giá
room_locationchuỗiMô tả vị trí phòng (ví dụ Overwater, Garden)
room_viewchuỗiMô tả tầm nhìn phòng (ví dụ Ocean, City)
room_classificationchuỗiPhân loại hoặc hạng phòng (ví dụ Suite, Standard)
bed_typechuỗiCấu hình giường cho phòng (ví dụ King, Twin)

GA4 bỏ qua các tham số tùy chỉnh theo mục trong báo cáo cho đến khi bạn đăng ký chúng làm custom dimension theo mục. Bạn chỉ cần đăng ký các tham số bạn muốn dùng trong báo cáo — không cần đăng ký tất cả 20 tham số.

  1. Mở Custom Definitions

    Trong GA4, vào Admin (biểu tượng bánh răng dưới cùng bên trái) → chọn thuộc tính của bạn → Data displayCustom definitions.

  2. Tạo custom dimension mới

    Nhấn Create custom dimensions.

  3. Điền thông tin dimension

    • Dimension name — nhãn dễ đọc hiển thị trong báo cáo GA4 (xem bảng bên dưới)
    • Scope — chọn Item
    • Event parameter — tên tham số chính xác như trong dataLayer (xem bảng bên dưới)
    • Description — tùy chọn nhưng nên có
  4. Lưu và lặp lại

    Nhấn Save, rồi lặp lại cho từng tham số bạn muốn theo dõi.

Dùng bảng sau làm tham khảo khi tạo custom dimension. Giá trị Event parameter phải chính xác — GA4 phân biệt chữ hoa chữ thường.

Tên dimensionEvent parameterKiểu
Property IDproperty_idVăn bản
Property nameproperty_nameVăn bản
Property brandproperty_brandVăn bản
Property chainproperty_chainVăn bản
Property URL nameproperty_url_nameVăn bản
City namecity_nameVăn bản
Country codecountry_codeVăn bản
Check-in datestart_dateVăn bản
Check-out dateend_dateVăn bản
Number of adultsnum_adultsSố
Number of childrennum_childrenSố
Cancellation policycancellation_policyVăn bản
Rate plan IDrate_plan_idVăn bản
Room rate IDroom_rate_idVăn bản
Room rate nameroom_rate_nameVăn bản
Number of perksnum_perksSố
Room locationroom_locationVăn bản
Room viewroom_viewVăn bản
Room classificationroom_classificationVăn bản
Bed typebed_typeVăn bản

Các sự kiện sau có trong dataLayer của Wink nhưng không thuộc phễu đặt phòng tiêu chuẩn. Chúng có thể được kích hoạt bởi các tương tác khác trên nền tảng.

{
"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"
}

Sự kiện này không kèm payload 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": {}
}

Đây là sự kiện tùy chỉnh của Wink — không thuộc bộ sự kiện GA4 tiêu chuẩn. Nó được đẩy trên mỗi lần chuyển trang và mang ngữ cảnh thiết bị và phiên. Nó không bao gồm đối tượng 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"
}
Thuộc tínhMô tả
deviceLoại thiết bị phát hiện — Desktop, Android, iPhone, iPad hoặc tương tự
deviceAgentChuỗi user agent thô
osHệ điều hành phát hiện — Windows, MacOS, Linux, UNIX
pathĐường dẫn trang hiện tại
titleTiêu đề trang hiện tại
userIdMã định danh người dùng đã xác thực (bỏ qua nếu chưa đăng nhập)
startDateNgày nhận phòng từ phiên tìm kiếm hiện tại
endDateNgày trả phòng từ phiên tìm kiếm hiện tại
guestsSố khách từ phiên tìm kiếm hiện tại
roomsSố phòng từ phiên tìm kiếm hiện tại