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

Интеграция 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, выберите ваш аккаунт и откройте настройки кастомизации. В разделе Analytics & integrations вставьте ваш GTM Container ID в поле GTM Container ID и сохраните. Интеграция теперь активна.

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

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


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

  • В разделе Analytics & integrations в настройках кастомизации доступно поле GTM Container ID. При вводе ID Wink проверяет формат (GTM-XXXXXXX) и надёжно сохраняет его для вашего объекта.
  • На каждой странице, где активен ваш объект на Wink, ваш контейнер внедряется напрямую в страницу — используя общий window.dataLayer Wink — так что он загружается вместе с собственным контейнером Wink без зависимости от дополнительной настройки. Это происходит автоматически, без дополнительной работы команды Wink для каждого объекта.
  • Ваш контейнер загружается асинхронно, поэтому не влияет на производительность загрузки страниц для гостей.
  • Отслеживание Wink и ваш контейнер работают параллельно, читая из одного общего dataLayer. Каждое событие бронирования, которое отслеживает Wink, одновременно доступно вашему контейнеру.
  • Когда ваш объект не просматривается — например, гость смотрит другой отель на Wink — ваш контейнер не загружается, поэтому получает только данные, относящиеся к вашему объекту.
  • Событие завершённого бронирования (purchase) срабатывает в браузере на странице благодарности. GTM Container ID — это «чёрный ящик» — Wink не знает, какие теги внутри — поэтому Wink никогда не вызывает Google от своего имени с серверов. Вместо этого любой тег GA4 или конверсии в вашем контейнере получает событие purchase на стороне клиента, как и все остальные события бронирования. Поскольку платёжный провайдер перенаправляет браузер гостя, Wink восстанавливает сессию аналитики, прерванную редиректом, до срабатывания purchase, чтобы продажа была приписана к исходному визиту гостя, а не считалась новой сессией.

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 присутствует только при применении кода скидки.


Срабатывает, когда гость аутентифицируется через единый вход.

{
"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-свойстве, чтобы они появились в исследованиях или стандартных отчётах. Инструкции по настройке см. ниже в разделе Custom Dimensions in 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Тип
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, но не входят в стандартную воронку бронирования. Они могут срабатывать при других взаимодействиях на платформе.

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