API межсерверных событий в вебе для PBA (веб-S2S)

Краткий обзор. Используйте API межсерверных событий в вебе (веб-S2S), чтобы сообщать в PBA о событиях и конверсиях, о которых не сообщает веб-SDK.

5107_Infographic_Web_S2S_759x270_option1.jpg

API межсерверных событий в вебе для PBA

API веб-S2S для атрибуции People-Based дополняет веб-SDK, позволяя маркетологам сообщать о событиях, происходящих на их сайтах, но не входящих в сферу веб-SDK. Например, посетитель сайта (веб-пользователь) запускает событие онлайн-платежа, которое обрабатывается внутренними системами. После обработки бэкэнд, используя API S2S, сообщает о событии в AppsFlyer.

События, отправленные API S2S:

  • регистрируются аналогично событиям, сообщаемым через веб-SDK,
  • показаны на дэшбордах PBA, если они указаны как события конверсии,
  • заполняют сырые данные PBA, где для поля event_source установлено веб-S2S.

Инструкции по использованию API

Создайте вызов API, используя следующие разделы. 

Элемент Примечания
1 Уникальный идентификатор пользователя
  • Стремитесь предоставить нам наилучший доступный уникальный идентификатор пользователя. Это существенно влияет на анализ данных.
  • Лучше всего отправлять CustomerUserId. Если он недоступен, отправьте afUserId — идентификатор cookie сайта, установленный WebSdk.
  • В любой момент, когда вы связываете идентификатор клиента (CUID) с afUserId, отправьте сообщение setCuID() с обоими идентификаторами.
2 Временная метка
  • Мы скроем вашу временную метку, если событие поступит с опозданием. Это означает, что события с временной меткой "понедельник" должны быть получены до полуночи вторника по UTC.
  • Временные метки основаны на UTC. При необходимости переведите местное время в UTC перед заполнением параметра.
3 Доходы и валюта Вы должны заполнить eventRevenueCurrency и eventRevenue, даже если значения содержатся в eventValue. Сделайте это, потому что мы используем их на наших дэшбордах.

Основы API

Для реализации API требуются следующие учетные данные, доступные на дэшборде:

  • Идентификатор пакета (он же идентификатор пакета бренда)
  • Веб-ключ разработчика 

Чтобы получить учетные данные: 

  1. В AppsFlyer в верхнем меню выберите Мои приложения > Просмотр пакетов брендов.
    Отобразится список пакетов.
  2. Скопируйте и запишите:
    • Идентификатор пакета бренда
    • Веб-ключ разработчика 

Основы API веб-S2S

Путь

https://webs2s.appsflyer.com/v1/bundleId/method

  • bundleId: идентификатор пакета приложения, доступный на дэшборде. 
  • method — одно из следующего: 
    • event: отправляется для отчетных событиях бэкенда
    • setCuId: отправляется при ассоциировании afUserId с вашим CUID
HTTP-метод POST
Принятый тип контента application/json 
Ограничение размера JSON  

Размер полезной нагрузки JSON: не более 1 КБ

Ограничение предоставления данных

Ограничение POST: 60 000 POST в минуту. Чтобы увеличить лимит, обратитесь к своему менеджеру.

TLS

Метод setCuId

Название метода

setCuId

Пример использования 

О привязке CUID к посетителю вашего сайта. Например, каждый раз, когда вы сопоставляете веб afUserId с идентификатором клиента. Это позволяет PBA сопоставлять данные из различных источников. Это аналогично setCustomerUserId на сайте.

Путь к методу

https://webs2s.appsflyer.com/v1/bundleId/setcuid

Полезная нагрузка

Полезная нагрузка JSON состоит из перечисленных здесь параметров. Все параметры являются обязательными.

 Пример Curl setCuId


curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/setcuid' \ --header 'Accept-Encoding: application/json' \ --header 'Content-Type: application/json' \ --data-raw '{ "customerUserId": "1234567890abcdef", "afUserId":"9999999-f848-4963-a091-568f0bf9a361", "webDevKey" : "99999999-9999-9999-9999-999999999999"}

Метод события

Название метода

event

Пример использования Отправить
Путь к методу

https://webs2s.appsflyer.com/v1/bundleId/event

 Подробная информация В разделе Описание метода события этой статьи содержится информация о полезной нагрузке, пример Curl, пример Python и рекомендации по тестированию.

Описание метода события

Параметры полезных данных

Параметры полезной нагрузки делятся на идентификаторы пользователей и параметры событий. 

  • Идентификатор пользователя: Вы должны отправить хотя бы один параметр идентификатора пользователя.
  • Событие: Отправьте обязательные параметры и необязательные по мере необходимости.

Параметры идентификатора пользователя (отправьте хотя бы один параметр)

Параметр Идентификатор пользователя  Описание

customerUserId

Идентификатор клиента (CUID) — это уникальный идентификатор, установленный вами.

  • Используйте идентичный идентификатор для событий, о которых AppsFlyer сообщает любым способом. Это означает, что один и тот же идентификатор используется в веб-SDK, мобильном SDK и S2S API.
  • Идентификатор клиента в веб-SDK
  • Формат: Строка
  • Например: "customerUserId" : "663274"
  • Заполняет поле сырых данных: customer_user_id

afUserId

Уникальный идентификатор пользователя, присваиваемый веб-SDK каждому пользователю, который посещает ваш сайт. Вам нужно будет передать значение cookie на внутренние серверы.

  •  Подробности о cookie:
    • Имя: afUserId
    • Значение: установите afUserId в это значение
    • Домен: website-domain
  • Пример: "afUserId" : "unique_cookie_uuid"
  • Заполняет поле сырых данных: af_web_id

Параметры события

Имя параметра Обязательно/Не обязательно Описание

webDevKey

Да

Заполните с помощью веб-ключа разработчика, доступного на дэшборде.

  • Пример:"webDevKey" : "ffffffff-ffff-ffff-ffff-ffffffffffff"
eventType Да

Идентификатор атрибута события для внутреннего использования AppsFlyer. Всегда устанавливается на EVENT.

  • Например: "eventType" : "EVENT"
eventName Да
  • Мы используем этот параметр для разграничения событий конверсии и не конверсии, используя список событий конверсии, установленный маркетологом в настройках PBA. 
  • Убедитесь, что вы заполнили его значениями, соответствующими логике конверсии маркетолога.
  • Формат: Строка
  • Например: "eventName" : "web_purchase"
  • Заполняет поле сырых данных: event_name
timestamp Нет

Время наступления события в миллисекундах. Отправьте в виде временной метки Unix, состоящей из 13 цифр.

  • Если временная метка не отправлена, время устанавливается по времени сервера. 
  • События, поступающие с опозданием, отмечаются по текущему времени сервера. Опоздание означает прибытие после полуночи по UTC на следующий день после события. Например, событие, произошедшее в понедельник, должно быть обработано до полуночи вторника по UTC. 
  • События, имеющие временную метку в будущем (относительно текущего времени сервера), отмечаются временем сервера.
  • Формат: Целое число
  • Например: "timestamp" : 1584835200123
  • Заполняет поле сырых данных: event_time
eventValue Нет
Сопоставление параметров события, описывающих событие. Используйте этот параметр для отправки расширенных внутренних событий приложения, таких как артикул товара, цена позиции.
  • Примечания о доходе: Вы можете заполнить этот параметр данными о доходе. Кроме того, необходимо заполнить поля eventRevenue, and eventRevenueCurrency.
  • Формат: JSON
  • Пример: Для отправки SKU ABC123, имеющего синий цвет и цену за единицу товара $3,99, установите eventValue на:
    {"Purchase": {"sku" : "ABC123", "color": "blue", "unit_price":3.99,"currency": "USD"}}
  • Ограничение: 1000 символов. Не превышайте этого значения, оно будет усечено.
  • Заполняет поле сырых данных: event_value
eventRevenueCurrency Нет

Код валюты для события выручки, представляющий собой код валюты по ISO 4217 из 3 символов.

  • По умолчанию: USD
  • Формат: Строка
  • Пример: "eventRevenueCurrency" : "EUR"
  • Заполняет поле сырых данных: event_revenue_currency
eventRevenue Нет 

Доход (денежное выражение), назначенный событию.

Внимание! Если доход указан в eventValue, укажите его также в eventRevenue и заполните eventRevenueCurrency. 

  • Допускаются отрицательные значения. Например, возврат денег.
  • Формат: Переменное число 
  • Примеры значений: 1 1.2 1234.20 -1234.20
  • Заполняет поле сырых данных: event_revenue
eventCategory Нет  Этот параметр устарел и будет удален из системы в будущем. Вместо этого используйте eventValue.
eventLabel Нет 

Этот параметр устарел и будет удален из системы в будущем. Вместо этого используйте eventValue.

Referrer Нет

Источник ссылки HTTP

  • Формат: Строка
  • Пример:"referrer" : "https://www.google.com/"
  • Заполняет поле сырых данных: http_referrer
userAgent Нет 

Запрос пользовательского агента, отправляемый браузером на сервер.

  • По возможности отправьте это значение, так как оно помогает определить тип устройства. 
  • Формат: Строка
  • Пример:"userAgent" : "Chrome/80.0.3987"
  • Заполняет поле сырых данных: user_agent
ip Нет

IP-адрес пользователя

  • По возможности отправьте значение этого поля. Оно помогает определить геолокацию пользователя.
  • Формат: Строка
  • Пример:"ip": "192.0.2.1"
  • Заполняет поле сырых данных: ip
 

Пример curl

curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/event' \
--header 'Accept-Encoding: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
	"customerUserId": "1234567890abcdef",
	"afUserId":"9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey" : "99999999-9999-9999-9999-999999999999",
    "ip" : "192.0.2.1",
	"eventType":"EVENT",
	"timestamp" : 1234567890123,
	"eventName":"my_web_event",
	"eventRevenueCurrency" : "EUR",
	"eventRevenue" : 1234.56,
	
		"eventValue": {
		"purchase":{
		 "shoes": "color",
		 "quantity" : "3",
		 "Revenue" : "1234.56",
		 "Currency" : "ZAR"
		}
	}

}'

Пример Python

''' using the requests python package, install using pip install requests  '''
import requests
url = "https://webs2s.appsflyer.com/v1/bundleId/event"
payload = {
    "customerUserId": "1234567890abcdef",
    "afUserId": "9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey": "99999999-9999-9999-9999-999999999999",
    "ip": "192.0.2.1",
    "eventType": "EVENT",
    "timestamp": 1234567890123,
    "eventName": "my_web_event",
    "eventRevenenuCurrency": "EUR",
    "eventRevenue": 1234.56,
    "eventValue":
        {
            "purchase":
            {
                "shoes": "color",
                "quantity": "3",
                "Revenue": "1234.56",
                "Currency": "ZAR"
            }
        }
    }
headers = {
    'Accept-Encoding': 'application/json',
    'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text.encode('utf8'))

Тестирование

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

  1. Отправьте событие.
  2. Убедитесь, что вы получили код возврата 200 OK. Если нет, примите меры по исправлению ситуации, используя коды возврата и сообщения об ошибках.
  3. Подождите несколько часов после полуночи UTC, чтобы увидеть зарегистрированное событие в сырых данных PBA. Вы должны подождать, потому что данные PBA обрабатываются один раз в день. 

Дополнительные сведения

Получение веб-ключа разработчика.

 Чтобы получить веб-ключ разработчика:

  1. В AppsFlyer перейдите на вкладку Мои приложения.
  2. Нажмите Просмотреть пакет бренда.

    GetWebDevKeyPba_us-en.pn

  3. Скопируйте необходимый  веб-ключ разработчика. 

Извлечение afUserID из веб-SDK

  • afUserId — это уникальный идентификатор, устанавливаемый в веб-SDK при первом посещении пользователем вашего сайта.
  • Если вам нужен afUserId, воспользуйтесь одним из следующих способов.


Получение afUserId из заголовка HTTP cookie

  • Значение afUserId отправляется браузером посетителя при обращении к вашему сайту.
  •  При необходимости извлеките его из заголовка HTTP cookie.


Просмотр afUserId в браузере посетителя

  •  Просмотрите afUserId в браузере посетителя в целях устранения неполадок и отладки.
  • Чтобы параметр стал доступен, посетитель должен хотя бы один раз зайти на страницу с веб-SDK. 
  • Файл cookie, содержащий afUserId, является файлом cookie первой стороны по отношению к вашему домену.
  • Следующая процедура была подготовлена с использованием Chrome 81. В разных браузерах и операционных системах могут быть некоторые различия.

Чтобы получить afUserId из браузера посетителя:

  1. В своем браузере перейдите на свой сайт.
  2. Нажмите правой кнопкой мыши, выберите Inspect.
    Откроется окно браузера для проверки элементов.

    S2S_inspect.jpg

  3. Перейти на вкладку (A) Application.
  4. В боковом меню (B) раскройте Cookies.
  5. Выберите свой сайт. Если он не отображается, обновите браузер.
  6. В поле (C) фильтр введите afUserId
    Отобразится значение afUserID. 

Коды ответа

Код ответа Сообщение Способ устранения
200 OK  
404 Not found
  • Проверьте конечную точку 
  • Проверьте правильность идентификатора пакета
400 Bad request
  • В JSON обнаружена ошибка. Подробности см. в сообщении об ошибке. 

Устранение неполадок

  • Признак ошибки:  Коды возврата HTTP не возвращаются
    Решение: Внесите серверы AppsFlyer в список разрешенных

Примечания


Заметки о выпуске веб-SDK
Дата  Версия конечной точки* Примечания
12.05.2020 1  Первоначальный выпуск
24.05.2020 1  
* Номер версии относится к номеру версии конечной точки. https://webs2s.appsflyer.com/v1/method