Интеграция GTM Analytics
Вы можете подключить любой контейнер Google Tag Manager (GTM) к Wink, введя его GTM Container ID в портале Wink. После подключения ваш контейнер загружается автоматически для вашего объекта и считывает события бронирования Wink напрямую — охватывая весь путь гостя от поиска до завершённого бронирования. Частый вариант использования — контейнер Sojern для ретаргетинга и рекламы, но любой контейнер GTM работает одинаково.
Что нужно сделать
Заголовок раздела «Что нужно сделать»-
Получите ваш GTM Container ID
Получите ваш GTM Container ID (формат
GTM-XXXXXXX). Если он предоставлен партнёром, например Sojern, запросите именно GTM Container ID — он отличается от пикселя или ID тега. -
Введите его в портале Wink
Войдите в app.wink.travel, выберите ваш аккаунт и перейдите на вкладку Customizations. Вставьте ваш GTM Container ID в поле GTM и сохраните. Интеграция теперь активна.
-
(Опционально) Добавьте GA4 Measurement ID + API Secret для серверной обработки покупок
Контейнеры GTM работают полностью в браузере гостя, поэтому завершённое бронирование может не зафиксироваться, если гость закроет вкладку во время перенаправления на оплату. Если ваш контейнер загружает GA4-свойство и вы хотите надёжно фиксировать завершённые бронирования, также введите Measurement ID и Measurement Protocol API secret этого GA4 в разделе GTM. Wink тогда отправит событие
purchaseдля этого свойства с серверной стороны, как описано в руководстве по GA4 Analytics Integration. Оставьте эти поля пустыми, если нужна только браузерная аналитика. -
Подтвердите с вашим провайдером
Если ваш контейнер предоставлен партнёром, например Sojern, сообщите менеджеру, что интеграция активна. Они смогут проверить, что теги корректно срабатывают на
wink.travelдля вашего объекта и данные поступают в ваш аккаунт.
Что делает Wink на своей стороне
Заголовок раздела «Что делает Wink на своей стороне»Для прозрачности, вот что Wink настраивает для работы этой интеграции:
- Вкладка Customizations в портале Wink содержит поле GTM Container ID. При вводе ID Wink проверяет формат (
GTM-XXXXXXX) и надёжно сохраняет его для вашего объекта. - На каждой странице, где активен ваш объект в Wink, ваш контейнер внедряется прямо в страницу — используя общий
window.dataLayerWink — так что он загружается вместе с собственным контейнером Wink без дополнительной настройки. Это происходит автоматически, без дополнительной работы команды Wink для каждого объекта. - Ваш контейнер загружается асинхронно, чтобы не влиять на скорость загрузки страниц для гостей.
- Отслеживание Wink и ваш контейнер работают параллельно, читая из общего
dataLayer. Каждое событие бронирования, которое отслеживает Wink, одновременно доступно вашему контейнеру. - Если ваш объект не просматривается — например, гость смотрит другой отель на Wink — ваш контейнер не загружается, поэтому получает только данные, относящиеся к вашему объекту.
- Если вы указали GA4 Measurement ID + API secret (шаг 3 выше), событие
purchaseдля завершённых бронирований дополнительно отправляется с серверной стороны через GA4 Measurement Protocol, чтобы продажа фиксировалась даже если гость не возвращается на страницу подтверждения.
Справочник DataLayer
Заголовок раздела «Справочник DataLayer»Wink отправляет события, совместимые с GA4, в dataLayer на протяжении всего пути гостя. Ваш GTM контейнер читает из того же общего dataLayer, поэтому любой триггер или переменная, которые вы настроите, имеют доступ ко всем описанным ниже свойствам.
Каждое событие следует стандартной структуре GA4 Enhanced Ecommerce: строка верхнего уровня event и объект ecommerce. Перед каждой отправкой Wink очищает предыдущие данные ecommerce, чтобы избежать устаревших данных в новых триггерах.
События пути бронирования
Заголовок раздела «События пути бронирования»Эти события срабатывают автоматически, когда гость проходит воронку бронирования. Настройте триггеры GTM как Custom Event с именами событий, приведёнными ниже.
| Шаг | Событие | Когда срабатывает |
|---|---|---|
| 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 присутствует только при применении кода скидки.
Срабатывает при аутентификации гостя через единый вход (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 присутствуют только при необходимости.
Срабатывает при отмене бронирования.
{ "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 и отображаются в стандартных отчётах ecommerce без дополнительной настройки.
| Свойство | Тип | Обязательно | Описание |
|---|---|---|---|
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.
-
Откройте Custom Definitions
В GA4 перейдите в Admin (значок шестерёнки внизу слева) → выберите ваше свойство → Data display → Custom definitions.
-
Создайте новое пользовательское измерение
Нажмите Create custom dimensions.
-
Заполните данные измерения
- Dimension name — читаемое название, которое будет отображаться в отчётах GA4 (см. таблицу ниже)
- Scope — выберите Item
- Event parameter — точное имя параметра, как в dataLayer (см. таблицу ниже)
- Description — необязательно, но рекомендуется
-
Сохраните и повторите
Нажмите Save, затем повторите для каждого параметра, который хотите отслеживать.
Используйте следующую таблицу как справочник при создании пользовательских измерений. Значение Event parameter должно совпадать точно — GA4 чувствителен к регистру.
| Название измерения | Event parameter | Тип |
|---|---|---|
| Property ID | property_id | Текст |
| Property name | property_name | Текст |
| Property brand | property_brand | Текст |
| Property chain | property_chain | Текст |
| Property URL name | property_url_name | Текст |
| City name | city_name | Текст |
| Country code | country_code | Текст |
| Check-in date | start_date | Текст |
| Check-out date | end_date | Текст |
| Number of adults | num_adults | Число |
| Number of children | num_children | Число |
| Cancellation policy | cancellation_policy | Текст |
| Rate plan ID | rate_plan_id | Текст |
| Room rate ID | room_rate_id | Текст |
| Room rate name | room_rate_name | Текст |
| Number of perks | num_perks | Число |
| Room location | room_location | Текст |
| Room view | room_view | Текст |
| Room classification | room_classification | Текст |
| Bed type | bed_type | Текст |
Дополнительные доступные события
Заголовок раздела «Дополнительные доступные события»Следующие события доступны в dataLayer Wink, но не входят в стандартную воронку бронирования. Они могут срабатывать при других взаимодействиях на платформе.
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": [ ] }}{ "event": "search", "ecommerce": { "search_term": "beachfront resort" }}select_content
Заголовок раздела «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
Заголовок раздела «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 | Исходная строка user agent |
os | Определённая операционная система — Windows, MacOS, Linux, UNIX |
path | Текущий путь страницы |
title | Текущий заголовок страницы |
userId | Идентификатор аутентифицированного пользователя (отсутствует, если не вошли) |
startDate | Дата заезда из текущей сессии поиска |
endDate | Дата выезда из текущей сессии поиска |
guests | Количество гостей из текущей сессии поиска |
rooms | Количество номеров из текущей сессии поиска |
