Перейти к содержимому

Интеграция GTM Analytics

Вы можете подключить любой контейнер Google Tag Manager (GTM) к Wink, введя его GTM Container ID в портале Wink. После подключения ваш контейнер загружается автоматически для вашего объекта и считывает события бронирования Wink напрямую — охватывая весь путь гостя от поиска до завершённого бронирования. Частый вариант использования — контейнер Sojern для ретаргетинга и рекламы, но любой контейнер GTM работает одинаково.


  1. Получите ваш GTM Container ID

    Получите ваш GTM Container ID (формат GTM-XXXXXXX). Если он предоставлен партнёром, например Sojern, запросите именно GTM Container ID — он отличается от пикселя или ID тега.

  2. Введите его в портале Wink

    Войдите в app.wink.travel, выберите ваш аккаунт и перейдите на вкладку Customizations. Вставьте ваш GTM Container ID в поле GTM и сохраните. Интеграция теперь активна.

  3. (Опционально) Добавьте GA4 Measurement ID + API Secret для серверной обработки покупок

    Контейнеры GTM работают полностью в браузере гостя, поэтому завершённое бронирование может не зафиксироваться, если гость закроет вкладку во время перенаправления на оплату. Если ваш контейнер загружает GA4-свойство и вы хотите надёжно фиксировать завершённые бронирования, также введите Measurement ID и Measurement Protocol API secret этого GA4 в разделе GTM. Wink тогда отправит событие purchase для этого свойства с серверной стороны, как описано в руководстве по GA4 Analytics Integration. Оставьте эти поля пустыми, если нужна только браузерная аналитика.

  4. Подтвердите с вашим провайдером

    Если ваш контейнер предоставлен партнёром, например Sojern, сообщите менеджеру, что интеграция активна. Они смогут проверить, что теги корректно срабатывают на wink.travel для вашего объекта и данные поступают в ваш аккаунт.


Для прозрачности, вот что Wink настраивает для работы этой интеграции:

  • Вкладка Customizations в портале Wink содержит поле GTM Container ID. При вводе ID Wink проверяет формат (GTM-XXXXXXX) и надёжно сохраняет его для вашего объекта.
  • На каждой странице, где активен ваш объект в Wink, ваш контейнер внедряется прямо в страницу — используя общий window.dataLayer Wink — так что он загружается вместе с собственным контейнером Wink без дополнительной настройки. Это происходит автоматически, без дополнительной работы команды Wink для каждого объекта.
  • Ваш контейнер загружается асинхронно, чтобы не влиять на скорость загрузки страниц для гостей.
  • Отслеживание Wink и ваш контейнер работают параллельно, читая из общего dataLayer. Каждое событие бронирования, которое отслеживает Wink, одновременно доступно вашему контейнеру.
  • Если ваш объект не просматривается — например, гость смотрит другой отель на Wink — ваш контейнер не загружается, поэтому получает только данные, относящиеся к вашему объекту.
  • Если вы указали GA4 Measurement ID + API secret (шаг 3 выше), событие purchase для завершённых бронирований дополнительно отправляется с серверной стороны через GA4 Measurement Protocol, чтобы продажа фиксировалась даже если гость не возвращается на страницу подтверждения.

Wink отправляет события, совместимые с GA4, в dataLayer на протяжении всего пути гостя. Ваш GTM контейнер читает из того же общего dataLayer, поэтому любой триггер или переменная, которые вы настроите, имеют доступ ко всем описанным ниже свойствам.

Каждое событие следует стандартной структуре GA4 Enhanced Ecommerce: строка верхнего уровня event и объект ecommerce. Перед каждой отправкой Wink очищает предыдущие данные ecommerce, чтобы избежать устаревших данных в новых триггерах.


Эти события срабатывают автоматически, когда гость проходит воронку бронирования. Настройте триггеры GTM как Custom Event с именами событий, приведёнными ниже.

ШагСобытиеКогда срабатывает
1view_item_listЗагружается сетка или список отелей
2view_itemГость просматривает страницу конкретного объекта
3add_to_cartГость добавляет номер в корзину
4begin_checkoutЗагружается страница оформления / оплаты
5add_payment_infoГость выбирает способ оплаты
6loginГость аутентифицируется через SSO
7purchaseБронирование подтверждено
8refundБронирование отменено

Срабатывает при отображении сетки или списка отелей.

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

Срабатывает, когда гость просматривает конкретный объект.

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

Срабатывает, когда гость добавляет номер в корзину.

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

Срабатывает при загрузке страницы оформления / оплаты.

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

coupon присутствует только при применении кода скидки.


Срабатывает, когда гость выбирает или подтверждает способ оплаты.

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

Срабатывает при подтверждении бронирования.

{
"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 и отображаются в стандартных отчётах ecommerce без дополнительной настройки.

СвойствоТипОбязательноОписание
item_idstringДаУникальный идентификатор номера или продукта
item_namestringНазвание номера или продукта
affiliationstringНазвание партнёра или продавца
couponstringПрименённый купон к элементу
currencystringКод валюты ISO 4217 (например, USD)
creative_namestringНазвание креатива в промоакции
creative_slotstringПозиция креатива в промоакции
discountnumberСумма скидки
indexnumberПозиция в списке (начинается с 1)
item_brandstringНазвание отеля или бренда
item_categorystringТип продукта — например, GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idstringИдентификатор списка, к которому принадлежит элемент
item_list_namestringОтображаемое название списка
location_idstringГеокоординаты объекта
pricenumberЦена за единицу
promotion_idstringИдентификатор промоакции
promotion_namestringОтображаемое название промоакции
quantitynumberКоличество (по умолчанию 1)

Пользовательские параметры на уровне элемента

Заголовок раздела «Пользовательские параметры на уровне элемента»

Эти параметры содержат контекст бронирования Wink. GA4 не отображает их автоматически в отчётах — их нужно зарегистрировать как пользовательские измерения с областью элемента в вашем GA4-свойстве, чтобы они появились в исследованиях или стандартных отчётах. Инструкции по настройке см. в разделе Пользовательские измерения в GA4 ниже.

СвойствоТипОписание
property_idstringИдентификатор объекта Wink
property_namestringОтображаемое название объекта
property_brandstringБренд, к которому принадлежит объект
property_chainstringСеть, к которой принадлежит объект
property_url_namestringURL-дружественный слаг объекта
city_namestringГород, где расположен объект
country_codestringКод страны ISO 3166-1 alpha-2
start_datestringДата заезда в формате YYYY-MM-DD
end_datestringДата выезда в формате YYYY-MM-DD
num_adultsnumberКоличество взрослых в бронировании
num_childrennumberКоличество детей в бронировании
cancellation_policystringОдин из: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idstringИдентификатор тарифного плана
room_rate_idstringИдентификатор конкретного тарифа номера
room_rate_namestringОтображаемое название тарифа номера
num_perksnumberКоличество бонусов, включённых в тариф
room_locationstringОписание расположения номера (например, Overwater, Garden)
room_viewstringОписание вида из номера (например, Ocean, City)
room_classificationstringКлассификация или категория номера (например, Suite, Standard)
bed_typestringКонфигурация кроватей в номере (например, King, Twin)

GA4 игнорирует пользовательские параметры элементов в отчётах, пока вы явно не зарегистрируете их как пользовательские измерения с областью элемента. Регистрировать нужно только те параметры, которые вы планируете использовать в отчётах — не обязательно регистрировать все 20.

  1. Откройте Custom Definitions

    В GA4 перейдите в Admin (значок шестерёнки внизу слева) → выберите ваше свойство → Data displayCustom definitions.

  2. Создайте новое пользовательское измерение

    Нажмите Create custom dimensions.

  3. Заполните данные измерения

    • Dimension name — читаемое название, которое будет отображаться в отчётах GA4 (см. таблицу ниже)
    • Scope — выберите Item
    • Event parameter — точное имя параметра, как в dataLayer (см. таблицу ниже)
    • Description — необязательно, но рекомендуется
  4. Сохраните и повторите

    Нажмите Save, затем повторите для каждого параметра, который хотите отслеживать.

Используйте следующую таблицу как справочник при создании пользовательских измерений. Значение Event parameter должно совпадать точно — GA4 чувствителен к регистру.

Название измеренияEvent parameterТип
Property IDproperty_idТекст
Property nameproperty_nameТекст
Property brandproperty_brandТекст
Property chainproperty_chainТекст
Property URL nameproperty_url_nameТекст
City namecity_nameТекст
Country codecountry_codeТекст
Check-in datestart_dateТекст
Check-out dateend_dateТекст
Number of adultsnum_adultsЧисло
Number of childrennum_childrenЧисло
Cancellation policycancellation_policyТекст
Rate plan IDrate_plan_idТекст
Room rate IDroom_rate_idТекст
Room rate nameroom_rate_nameТекст
Number of perksnum_perksЧисло
Room locationroom_locationТекст
Room viewroom_viewТекст
Room classificationroom_classificationТекст
Bed typebed_typeТекст

Следующие события доступны в dataLayer Wink, но не входят в стандартную воронку бронирования. Они могут срабатывать при других взаимодействиях на платформе.

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

Событие не содержит объекта 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": {}
}

Это пользовательское событие 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Количество номеров из текущей сессии поиска