# Настройка передачи событий

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

Для отправки данных в GF необходимо внедрить небольшой кусочек кода для каждого необходимого события. В событии вы можете передавать тот набор параметров, которые в дальнейшем планируете использовать для работы. Ряд событий, таких как покупка или вход в личный кабинет требуют внедрения по определенной схеме, вместе с тем, для других целевых действий вы можете создавать и собственные события.

# Преднастроенные события

# Добавление в корзину обязательно для e-commerce

GF.API("event", {
  name: "Add to Cart",
  properties: {
    eventType: "add-to-cart-v1",
    value: 118.26,
    currency: "any supported currency code",
    productId: "item-34454",
    quantity: 2,
    cart: [{
        productId: "sku-4324-bg",
        quantity: 2,
        itemPrice: 12.34
      },
      {
        productId: "item-34454",
        quantity: 2,
        itemPrice: 59.13
      }
    ]
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "add-to-cart-v1" string
value обязательно Сумма добавляемого в корзину. Если добавляется больше одной единицы товара, то содержит количество умноженное на стоимость единицы. Например, для 99 рублей 99 копеек передается как 99.99 float
currency Код валюты ISO 421, например "RUB". Опционально, но необходимо для сайтов с поддержкой мультивалютности string
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество товаров, добавленных в корзину integer, только положительные значения
cart Текущее состояние корзины, включая последний добавленный товар. Товар должны идти в порядке добавления - от самых старых до самых новых array
Объект товара:
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество единиц данного товара в корзине integer, только положительные значения
itemPrice обязательно Стоимость одной единицы товара после применения скидок (при их наличии) float

# Покупка обязательно для e-commerce

GF.API("event", {
  name: "Purchase",
  properties: {
    uniqueTransactionId: "123456",
    eventType: "purchase-v1",
    value: 90.55,
    currency: "any supported currency code",
    cart: [
      {
        productId: "item-34454",
        quantity: 1,
        itemPrice: 65.87,
      }, {
        productId: "sku-4324-bg",
        quantity: 2,
        itemPrice: 12.34,
      }
    ]
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "purchase-v1" string
uniqueTransactionId обязательно Уникальный ID транзакции. Гарантирует, что к одной транзакции относится только одна покупка. Максимум 64 символа string
value обязательно Сумма добавляемого в корзину. Если добавляется больше одной единицы товара, то содержит количество умноженное на стоимость единицы. Например, для 99 рублей 99 копеек передается как 99.99 float
currency Код валюты ISO 421, например "RUB". Опционально, но необходимо для сайтов с поддержкой мультивалютности string
cart Текущее состояние корзины, включая последний добавленный товар. Товар должны идти в порядке добавления - от самых старых до самых новых array
Объект товара:
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество единиц данного товара в корзине integer, только положительные значения
itemPrice обязательно Стоимость одной единицы товара после применения скидок (при их наличии) float

# Удаление товара из корзины

GF.API("event", {
  name: "Remove from Cart",
  properties: {
    eventType: "remove-from-cart-v1",
    value: 34.45,
    currency: "any supported currency code",
    productId: "gswefd-34-454",
    quantity: 1,
    cart: [{
        productId: "sku-4324-bg",
        quantity: 2,
        itemPrice: 12.34
      },
      {
        productId: "item-34454",
        quantity: 1,
        itemPrice: 34.45
      }
    ]
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "remove-from-cart-v1" string
value обязательно Сумма удаляемого из корзины. Если удаляется больше одной единицы товара, то содержит количество умноженное на стоимость единицы. Если удаляются множественные артикулы сразу, рекомендуется использовать “синхронизацию корзины” (см. ниже) float
currency Код валюты ISO 421, например "RUB". Опционально, но необходимо для сайтов с поддержкой мультивалютности string
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество единиц товара, удалённого из корзины integer, только положительные значения
cart Текущее состояние корзины, включая последний добавленный товар. Товар должны идти в порядке добавления - от самых старых до самых новых array
Объект товара:
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество единиц данного товара в корзине integer, только положительные значения
itemPrice обязательно Стоимость одной единицы товара после применения скидок (при их наличии) float

# Синхронизация корзины

Данное событие обновляет текущее состояние корзины. Событие рекомендуется к использованию в случае пакетного изменения состава корзины или изменения сотава корзины без участия пользователя, например:

  1. Обновление корзины сервером (например, автоудаление из корзины товаров, которые закончились в процессе сессии пользователя)
  2. Обновление корзины при авторизации пользователя (объединение корзин до/после логина)
  3. Обновление корзины при заходе пользователя на сайт, в том числе автологин (например, автоматическая подгрузка корзины, собранной на mobile при заходе в web)
  4. Массовое единовременное удаление товаров из корзины - полная очистка корзины или удаление ряда позиций одним кликом
GF.API("event", {
  name: "Sync cart",
  properties: {
    eventType: "sync-cart-v1",
    currency: "any supported currency code", 
    cart: [ 
      {
        productId: "sku-4324-bg",
        quantity: 2,
        itemPrice: 12.34
      },
      {
        productId: "item-34454",
        quantity: 1,
        itemPrice: 34.45
      }
    ]
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "sync-cart-v1" string
currency Код валюты ISO 421, например "RUB". Опционально, но необходимо для сайтов с поддержкой мультивалютности string
cart Текущее состояние корзины, включая последний добавленный товар. Товар должны идти в порядке добавления - от самых старых до самых новых array
Объект товара:
productId обязательно SKU, указанный так же, как и в фиде string
quantity обязательно Количество единиц данного товара в корзине integer, только положительные значения
itemPrice обязательно Стоимость одной единицы товара после применения скидок (при их наличии) float

# Добавление в список желаемого

GF.API("event", {
  name: "Add to Wishlist",
  properties: {
    eventType: "add-to-wishlist-v1",
    productId: "item-34454"
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "add-to-wishlist-v1" string
productId обязательно SKU, указанный так же, как и в фиде string

# Смена атрибута

Используется при смене пользователем атрибута отображаемого продукта, например, размера или цвета.

GF.API("event", {
  name: "Change Attribute",
  properties: {
    eventType: "change-attr-v1",
    attributeType: "Color",
    attributeValue: "Navy Blue"
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "change-attr-v1" string
attributeType обязательно Цвет, размер, бренд и др., должно совпадать с заголовком колонки в фиде string
attributeValue обязательно Новое значение, должно совпадать со значениями в фиде string

# Фильтрация товаров

Используется, когда пользователь фильтрует товары по какому-либо значению поля.

GF.API("event", {
  name: "Filter Items",
  properties: {
    eventType: "filter-items-v1",
    filterType: "Color", // Name of filter (Color, Size, Brand, Fit, Author, Keyword, Category...)
    filterNumericValue: 4
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "filter-items-v1" string
filterType обязательно Название фильтра (цвет, размер, бренд и др). Должен совпадать со свойством товара, указанным в фиде string
filterNumericValue обязательно Необходимо указать значение для этого свойства или для filterStringValue, но не для обоих. Это влияет на то, как будут выполняться условия сегментации. number
filterStringValue обязательно Необходимо указать значение для этого свойства или для filterNumericValue, но не для обоих. Это влияет на то, как будут выполняться условия сегментации. string

# Поиск по ключевым словам в поисковой строке

GF.API("event", {
  name: "Keyword Search",
  properties: {
    eventType: "keyword-search-v1",
    keywords: "my search string"
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "keyword-search-v1" string
keywords обязательно Поисковой запрос в формате, как он был введен пользователем string

# Агрегация запросов при живом поиске

В случаях, когда на сайте доступен живой поиск (подбор ответов, соответствующий части введенного запроса), при передаче событий необходимо реализовать агрегацию запросов. При использовании данного метода игнорируется передача каждого введенного символа и в систему отправляется только последнее состояние ввода. Например, при вводе пользователем запроса “игра”, создается 4 записи: “и”, “иг”, “игр”, и, наконец, “игра”. Однако в систему отправляется только последний ввод “игра”, игнорируя предыдущие.

# Ввод промокода

GF.API("event", {
  name: "Promo Code Entered",
  properties: {
    eventType: "enter-promo-code-v1",
    code: "..."
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "enter-promo-code-v1" string
code обязательно Промокод string

# Сортировка товаров

GF.API("event", {
  name: "Sort Items",
  properties: {
    eventType: "sort-items-v1",
    sortBy: "price",
    sortOrder: "ASC"
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "sort-items-v1" string
sortBy обязательно Любой из параметров: цена, срок, популярность, рейтинг и другие, параметр должен совпадать с названием колонки в фиде string
sortOrder обязательно По возрастанию или по убыванию (ASC или DESC) string

# Подписка на почтовую рассылку

GF.API("event", {
  name: "Subscription",
  properties: {
    eventType: "newsletter-subscription-v1",
    hashedEmail: "хешированный ранее адрес",   }
});
// и/или; данные методы могут быть использованы параллельно
GF.API("event", {
  name: "Subscription",
  properties: {
    eventType: "newsletter-subscription-v1",
    cuid: "...", 
    cuidType: "..." 
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "newsletter-subscription-v1" string
hashedEmail Email, переведенный в lowercase и хешированный на стороне клиента string
cuid Если идентификация не с помощью email, передается любой другой customer ID (опционально) string
cuidType При передаче cuid передается его тип (обязательно при передаче поля cuid) string

сuid может означать один из заранее заданных типов идентификаторов (допустимые и предопределённые типы - справочник) или иметь значение не из справочника, если на стороне клиента есть свой внутренний идентификатор, например, CRM_ID, мобильный телефон и другие.

# Регистрация обязательно для e-commerce

GF.API("event", {
  name: "Signup",
  properties: {
    eventType: "signup-v1",
    hashedEmail: "хешированный ранее адрес",   }
});
// и/или; данные методы могут быть использованы параллельно
GF.API("event", {
  name: "Signup",
  properties: {
    eventType: "signup-v1",
    cuid: "...", 
    cuidType: "..." 
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "signup-v1" string
hashedEmail Email, переведенный в lowercase и хешированный на стороне клиента string
cuid Если идентификация не с помощью email, передается любой другой customer ID (опционально) string
cuidType При передаче cuid передается его тип (обязательно при передаче поля cuid) string

сuid может означать один из заранее заданных типов идентификаторов (допустимые и предопределённые типы - справочник) или иметь значение не из справочника, если на стороне клиента есть свой внутренний идентификатор, например, CRM_ID, мобильный телефон и другие.

# Логин обязательно для e-commerce

GF.API("event", {
  name: "Login",
  properties: {
    eventType: "login-v1",
    hashedEmail: "хешированный ранее адрес"
	}
});
// и/или; данные методы могут быть использованы параллельно
GF.API("event", {
  name: "Login",
  properties: {
    eventType: "login-v1",
    cuid: "...", 
    cuidType: "..." 
  }
});

Описание полей объекта properties:

Свойство Описание Тип
eventType обязательно Должен быть "login-v1" string
hashedEmail Email, переведенный в lowercase и хешированный на стороне клиента string
cuid Если идентификация не с помощью email, передается любой другой customer ID (опционально) string
cuidType При передаче cuid передается его тип (обязательно при передаче поля cuid) string

сuid может означать один из заранее заданных типов идентификаторов (допустимые и предопределённые типы - справочник) или иметь значение не из справочника, если на стороне клиента есть свой внутренний идентификатор, например, CRM_ID, мобильный телефон и другие.

# Кастомные события

Если вы хотите отслеживать событие, не указанное в списке выше, воспользуйтесь для его создания следующей структурой:

GF.API("event", {
  name: "EVENT_NAME",
  properties: {  
    [FIRST PROPERTY NAME]: "[PROPERTY VALUE]",  // Optional
    [SECOND PROPERTY NAME]: "[PROPERTY VALUE]",  // Optional
    value: "[MONETARY VALUE]" // Optional
  }
})

или

GF.API("event", {
  name: "EVENT_NAME"
})

# Идентификация пользователей

Происходит двумя способами:

С помощью поля hashedEmail

В нем передается sha256-хеш email или телефона пользователя. Если передается email, то адрес переводится в lowercase, затем хешируется. Пример:

Test@TEST.comtest@test.com - перевод в lowercase

test@test.comf660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a - хеширование

Если передается номер телефона, то приводится к виду 7XXXXXXXXXX (начинается с кода страны 7, без плюса в начала, без скобок, тире и т.д)

С помощью поля cuid

Cuid - Customer Unique Identifier. Cuid может быть любым уникальным значением, используемым для идентификации пользователя - это может быть CRM ID или любой другой ID.