Интеграция 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, выберите ваш аккаунт и откройте настройки кастомизации. В разделе Analytics & integrations вставьте ваш GTM Container ID в поле GTM Container ID и сохраните. Интеграция теперь активна.
-
Подтвердите с вашим провайдером
Если ваш контейнер предоставлен партнёром, например Sojern, сообщите менеджеру по аккаунту, что интеграция активна. Они смогут проверить со своей стороны, что теги корректно срабатывают на
wink.travelдля вашего объекта и данные поступают в ваш аккаунт.
Что Wink делает со своей стороны
Заголовок раздела «Что Wink делает со своей стороны»Для прозрачности, вот что Wink настраивает, чтобы интеграция работала:
- В разделе Analytics & integrations в настройках кастомизации доступно поле GTM Container ID. При вводе ID Wink проверяет формат (
GTM-XXXXXXX) и надёжно сохраняет его для вашего объекта. - На каждой странице, где активен ваш объект на Wink, ваш контейнер внедряется напрямую в страницу — используя общий
window.dataLayerWink — так что он загружается вместе с собственным контейнером Wink без зависимости от дополнительной настройки. Это происходит автоматически, без дополнительной работы команды Wink для каждого объекта. - Ваш контейнер загружается асинхронно, поэтому не влияет на производительность загрузки страниц для гостей.
- Отслеживание Wink и ваш контейнер работают параллельно, читая из одного общего
dataLayer. Каждое событие бронирования, которое отслеживает Wink, одновременно доступно вашему контейнеру. - Когда ваш объект не просматривается — например, гость смотрит другой отель на Wink — ваш контейнер не загружается, поэтому получает только данные, относящиеся к вашему объекту.
- Событие завершённого бронирования (
purchase) срабатывает в браузере на странице благодарности. GTM Container ID — это «чёрный ящик» — Wink не знает, какие теги внутри — поэтому Wink никогда не вызывает Google от своего имени с серверов. Вместо этого любой тег GA4 или конверсии в вашем контейнере получает событиеpurchaseна стороне клиента, как и все остальные события бронирования. Поскольку платёжный провайдер перенаправляет браузер гостя, Wink восстанавливает сессию аналитики, прерванную редиректом, до срабатыванияpurchase, чтобы продажа была приписана к исходному визиту гостя, а не считалась новой сессией.
Справочник 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 присутствует только при применении кода скидки.
Срабатывает, когда гость аутентифицируется через единый вход.
{ "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-свойстве, чтобы они появились в исследованиях или стандартных отчётах. Инструкции по настройке см. ниже в разделе Custom Dimensions in 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 | Тип |
|---|---|---|
| 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 | Текст |
Дополнительные доступные события
Заголовок раздела «Дополнительные доступные события»Следующие события доступны в 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 | Количество номеров из текущей сессии поиска |
