Настройка измерения дохода от покупок и подписок в приложении с помощью ROI360

Премиум

Краткий обзор. Настройте ROI360 – решение от AppsFlyer для измерения доходов от покупок в приложении и подписок.

Измерение дохода от покупок и подписок в приложении с помощью ROI360

Решение от AppsFlyer для ROI360 осуществляет измерение доходов от покупок и подписок в приложении. Это решение автоматически проверяет и измеряет доход от покупок в приложении и автоматически продлеваемых подписок, благодаря чему вы получаете полное представление о жизненном цикле клиентов и точные измерения ROAS.

Подробнее о решении

Настройка

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

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

  1. настройте интеграцию с Google Play;
  2. настройте интеграцию с iOS App Store;
  3. выполните интеграцию коннектора SDK для измерения дохода от покупок;
  4. выполните тестирование измерения доходов от внутренних покупок (IAP) и подписки;
  5. выпустите версию приложения с коннектором SDK.

См. подробную информацию о каждом этапе ниже.

Шаг 1: настройте интеграцию с Google Play;

Прежде чем начать:

  • Настройка измерения дохода от покупок в приложении и подписок включает в себя действия, выполняемые на Облачной платформе Google (Google Cloud Platform), в Google Play Console и в пользовательском интерфейсе AppsFlyer. Мы рекомендуем держать вкладки всех этих трёх служб открытыми на протяжении всего процесса настройки.
  • Для выполнения настройки в пользовательском интерфейсе AppsFlyer требуются права администратора.

Для настройки уведомлений из Google Play следуйте приведённым далее инструкциям на вкладках.

1.1. Привяжите аккаунт разработчика Google Play к проекту в Google Cloud

Необходимые условия: Доступ к Google Play Console и проекту в Google Cloud.

Для того, чтобы привязать свой аккаунт разработчика Google Play к проекту в Google Cloud:

  1. В Google Play Console зайдите в свой аккаунт разработчика Google Play.
  2. Привяжите аккаунт к своему проекту в Google Cloud. Инструкции см. в этом разделе справки Google.
  3. Активируйте API разработчика Google Play. Инструкции см. в этом разделе справки Google.

1.2. Настройте свой сервисный аккаунт на Google Cloud Platform

Необходимые условия: Доступ к Google Cloud Platform.

Для настройки сервисного аккаунта:

  1. Создайте или выберите сервисный аккаунт:
    1. В Google Cloud Platform перейдите на страницу Service accounts (Сервисные аккаунты), затем нажмите Create Service Account (Создать сервисный аккаунт).
       
    2. Введите данные для сервисного аккаунта.
    3. Скопируйте адрес электронной почты.
    4. Нажмите Create and continue (Создать и продолжить).
    5. На шаге Grant this service account access to the project (Предоставить сервисному аккаунту доступ к проекту) выберите роль Pub/sub subscriber (Подписчик Pub/sub).
    6. Нажмите Продолжить > Готово.
  2. Скачайте файл Service Account Private Key (Закрытый ключ сервисного аккаунта):
    1. В Google Cloud Platform перейдите в раздел Сервисные аккаунты, выберите из списка нужный аккаунт (тот, который вы только что создали) и нажмите на иконку More actions (Другие действия).
    2. Нажмите на Manage keys (Управление ключами).
    3. Нажмите Add key (Добавить ключ) > Create new key (Создать новый ключ).
    4. Во всплывающем окне Create private key (Создать закрытый ключ), в разделе Key type (Тип ключа) выберите JSON и нажмите Create (Создать).
    5. Нажмите Create (Создать). Загрузится файл JSON закрытого ключа.
    6. Сохраните файл ключа JSON, который нужно будет загрузить в AppsFlyer позже. Важно! Ключ необходимо сохранить; его нельзя будет загрузить позже. Если вы его не сохраните, вам придётся генерировать ключ заново.

1.3. Загрузите закрытый ключ сервисного аккаунта в AppsFlyer

Необходимые условия: Доступ администратора к AppsFlyer.

Чтобы загрузить закрытый ключ сервисного аккаунта в AppsFlyer:

  1. В боковом меню AppsFlyer выберите Параметры > Настройки дохода и выберите своё приложение из списка.
  2. На вкладке Покупки и подписки нажмите upload-2. png, чтобы загрузить файл JSON.
  3. Загрузите файл JSON закрытого ключа.
  4. Нажмите Сохранить.

1.4. Настройка прав доступа к API в Google Play Console

Необходимые условия: Доступ к Google Play Console.

Примечание: После установки учётных данных и разрешений аккаунта службы может пройти некоторое время (иногда до 24 часов), прежде чем вы сможете их использовать. Это может привести к появлению ошибок на последующих этапах.

Настройка прав доступа к API в Google Play Console:

  1. В Google Play Console перейдите в раздел Пользователи и разрешения, найдите созданный сервисный аккаунт и нажмите кнопку Пригласить новых пользователей.
  2. Введите адрес электронной почты, который вы скопировали при настройке учётной записи на шаге 1.2.1.3.
     
  3. В разделе Разрешения перейдите в Разрешения аккаунта и выберите оба варианта:
    • Просматривать финансовые данные, заказы и ответы на анкетирование после отмены.
    • Управлять заказами и подписками.
  4. Нажмите Пригласить пользователя.
  5. Во всплывающем окне подтверждения нажмите Отправить приглашение.

1.5. [Рекомендуется] Отправьте уведомление Google Play непосредственно в AppsFlyer

Для получения данных о доходах от покупок в приложении и подписок из Google Play можно либо:

  • Создать тему, в которой AppsFlyer будет напрямую получать уведомления RTDN из Google Play. Это рекомендуемый вариант, и если вы его выберете, следуйте инструкции ниже.
  • Установите AppsFlyer в качестве подписчика на уже существующую тему PUB/SUB. Если вы выбрали этот вариант вместо предыдущего, сразу переходите к следующему шагу.

Необходимые условия: Доступ к Google Play Console и пользовательскому интерфейсу AppsFlyer.

Чтобы отправлять уведомления Google Play непосредственно в AppsFlyer:

  1. В боковом меню AppsFlyer выберите Настройки > Настройки доходов, выберите приложение, а во вкладке Покупки & подписки выберите Разрешить теме AppsFlyer получать сообщения RTDN напрямую от Google.
  2. Скопируйте тему AppsFlyer в буфер обмена.
  3. В Google Play Console > Главная, выберите приложение для просмотра. Откроется дэшборд.
  4. Перейдите в меню Монетизация с Play > Настройка монетизации, а в разделе Выставление счетов Google Play убедитесь, что опция Включить оповещение в реальном времени активирована.
  5. В поле Название темы вставьте адрес темы AppsFlyer, который вы скопировали.
  6. В Содержание уведомлений выберите Подписки, аннулированные покупки и все одноразовые продукты.
  7. Нажмите Сохранить изменения.
    Чтобы изменения вступили в силу, может потребоваться время (иногда вплоть до 24 часов). Поэтому не спешите проводить тестирование.

1.6. [Необязательно] Перенаправление уведомлений Google Play в AppsFlyer

Примечание: Этот шаг предназначен только для тех случаев, когда вы не выбрали рекомендуемый способ получения данных о доходах от покупок в приложении и подписок от Google Play (отправление уведомлений в AppsFlyer напрямую). Если вы выполнили всё необходимое для выбора рекомендуемого метода и создали тему, в которой AppsFlyer напрямую получает RTDN-уведомления от Google Play, пропустите этот шаг.

Если вместо этого вы хотите сделать AppsFlyer подписчиком на вашу уже существующую тему PUB/SUB, следуйте инструкции ниже.

Необходимые условия: Доступ к Google Cloud Platform и пользовательскому интерфейсу AppsFlyer.

чтобы перенаправлять уведомления Google Play в AppsFlyer:

  1. В боковом меню AppsFlyer выберите Настройки > Настройки доходов, выберите приложение, а во вкладке Покупки и подписки выберите Переадресовать сообщения по теме RTDN в AppsFlyer.
  2. Скопируйте URL конечной точки в буфер обмена.
  3. В Google Cloud Platform в вашем проекте найдите Pub/Sub.
  4. В разделе Pub/Sub перейдите в раздел Темы и убедитесь, что у вас есть специальная тема pub/sub для подписок.
  5. В Pub/Sub перейдите в раздел Подписки и нажмите Создать подписку.
  6. Введите идентификатор подписки.
  7. Выберите соответствующую тему pub/sub подписки из раскрывающегося списка.
  8. Для Типа доставки выберите Push.
  9. Вставьте URL-адрес конечной точки, который вы скопировали из AppsFlyer.
  10. В Срок действия выберите Никогда не истекает.
  11. Нажмите Create (Создать).
  12. Перейдите в раздел Подписки и нажмите на нужное название темы.
  13. Скопируйте название темы в буфер обмена.
  14. В Google Play Console перейдите в Монетизация с Play > Настройка монетизации, а в разделе Выставление счетов Google Play в поле Название темы вставьте имя темы, которое было скопировано на предыдущем шаге.
  15. В Содержание уведомлений выберите Подписки, аннулированные покупки и все одноразовые продукты.
  16. Выберите Сохранить изменения.
    Чтобы изменения вступили в силу, может потребоваться время (иногда вплоть до 24 часов). Поэтому не спешите проводить тестирование.

1.7. Выбор типов измерения дохода в AppsFlyer

Чтобы выбрать типы измерения доходов:

  1. В боковом меню AppsFlyer выберите Настройка > Настройки доходов > Покупки и подписки и включите один из них или оба:
    • Валидация покупок через Google Play.
    • Атрибуция и учёт подписок с автопродлением.
  2. [Необязательно] Установите флажок Разрешить AppsFlyer дедуплицировать транзакции, которые уже были учтены. Таким образом можно исключить дублирование записей транзакций.
  3. [Необязательно] Выберите Разрешить AppsFlyer автоматически отслеживать от моего имени незавершённые и отложенные транзакции, а также транзакции возврата. Это позволит AppsFlyer правильно записывать все транзакции.
  4. Нажмите Сохранить.
    Чтобы изменения вступили в силу, может потребоваться время (иногда вплоть до 24 часов). Поэтому не спешите проводить тестирование.

Шаг 2: настройте интеграцию с iOS App Store;

Прежде чем начать:

  • Настройка дохода от покупок в приложении и подписок состоит из шагов, выполняемых в App Store Connect и в Пользовательском интерфейсе AppsFlyer. Держите вкладки App Store Connect и AppsFlyer открытыми во время настройки.
  • Для выполнения настройки в пользовательском интерфейсе AppsFlyer требуются права администратора.

Для настройки уведомлений из App Store следуйте приведённым далее инструкциям на вкладках.

2.1 Введите общий секретный ключ App Store Connect.

Чтобы сгенерировать общий секретный ключ App Store Connect:

  • Выберите своё приложение в App Store Connect. В разделе Информация о приложении прокрутите вниз до Общий секретный ключ приложения и нажмите кнопку Управление, чтобы получить общий секретный ключ App Store Connect. Скопируйте ключ в буфер обмена.

2.2 Загрузите общий секретный ключ в AppsFlyer

Чтобы загрузить общий секретный ключ:

  1. В боковом меню AppsFlyer выберите Настройка > Настройки доходов > Покупки и подписки.
    Откроется страница Конфигурация дохода.
  2. Введите свой общий секретный ключ App Store Connect.

2.3 [Рекомендуется] Отправляйте уведомления от App Store непосредственно в AppsFlyer

Apple может отправлять уведомления сервера только в одну конечную точку, либо в конечную точку AppsFlyer (рекомендовано), либо в выбранную конечную точку (после чего вы пересылаете уведомления в AppsFlyer).

Если вы выбрали рекомендуемый вариант отправки уведомлений непосредственно в AppsFlyer, следуйте приведённым ниже инструкциям.

Если вы решили перенаправлять уведомления от конечной точки в AppsFlyer, перейдите к следующему шагу.

Чтобы отправлять уведомления напрямую в AppsFlyer:

  1. В настройках доходов AppsFlyer скопируйте конечную точку уведомлений сервера AppsFlyer, чтобы ввести её в конфигурацию App Store Connect.
  2. В разделе App Store Connect, раздел Информация о приложении, прокрутите вниз до раздела Уведомления сервера App Store и вставьте конечную точку AppsFlyer в поля URL производственного сервера и URL сервера песочницы.
    /guide-media/01HH9D9BGV8H7XHW44WN00V11M
  3. В разделе Версия уведомлений выберите Уведомления второй версии.
    /guide-media/01J32P8MSTSSKYMSGSR25SN05H
  4. Нажмите Сохранить.
  5. Если вы хотите получать копию уведомлений, в AppsFlyer (как в Шаге 2) введите конечную точку пересылки уведомлений и нажмите Сохранить.

2.4 [Необязательно] Пересылка уведомлений от конечной точки в AppsFlyer

Примечание: Этот шаг предназначен только для тех случаев, когда вы не выбрали рекомендуемый способ отправки уведомлений напрямую в AppsFlyer. Если вы выполнили действия для выбора рекомендованного метода, пропустите этот шаг.

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

Для пересылки уведомлений сервера от конечной точки в AppsFlyer:

  1. В разделе App Store Connect, раздел Информация о приложении, прокрутите вниз до раздела Уведомления сервера App Store и вставьте свою конечную точку в поля URL производственного сервера и URL сервера песочницы.
    /guide-media/01HH9D9BGV8H7XHW44WN00V11M
  2. В разделе Версия уведомлений выберите Уведомления второй версии.
    /guide-media/01J32P8MSTSSKYMSGSR25SN05H
  3. Нажмите Сохранить.
  4. Настройте отправку уведомлений сервера Apple из вашего бэкенда на URL конечной точки AppsFlyer для уведомлений. Примечание: Запросы должны быть в точности такими, как они получены из App Store. См. требования к формату Apple

2.5 Выбор типов измерения дохода в AppsFlyer

  1. На странице настройки доходов от внутренних покупок и подписок в AppsFlyer включите один из следующих переключателей или оба сразу:
    • Атрибуция и учёт подписок с автопродлением (ARS).
    • Проверка покупок в Apple App Store.
  2. [Необязательно] Установите флажок для Разрешить AppsFlyer дедуплицировать транзакции, которые уже были учтены.
    Таким образом можно исключить дублирование записей транзакций.
  3. [Необязательно] Установите флажок для Разрешить AppsFlyer автоматически сообщать об отрицательном доходе при операции возврата. Это гарантирует, что возвраты, отмены и т. д. будут зарегистрированы.
  4. [Необязательно] Установите флажок для Дедупликация дохода от покупок в рамках Семейного доступа.
    Это гарантирует, что при покупках по семейному доступу не будет дублирования. События дохода для других членов семьи включают в себя параметр purchase_ownership_type=FAMILY_SHARED и показывают нулевой доход.

Шаг 3: выполните интеграцию коннектора SDK для измерения дохода от покупок;

Для интеграции коннектора SDK:

Шаг 4: выполните тестирование измерения доходов от внутренних покупок (IAP) и подписки;

Рекомендуем протестировать интеграции для доходов от покупок в приложении и подписок в среде песочницы, чтобы убедиться, что коннектор SDK правильно интегрирован и что уведомления сервера правильно настроены и получены AppsFlyer.

Перед началом тестирования убедитесь, что ваш разработчик настроил песочницу в коннекторе SDK (установив для Sandbox значение true). Это позволяет ROI360 специально создавать в песочнице для тестирования внутренние события с нулевыми доходами. Таким образом, рабочие данные не затрагиваются.

Важная информация о песочнице

В песочнице:

  • Только события первичной покупки заставляют коннектор SDK создавать событие, которое фиксируется AppsFlyer. Событие покупки в приложении называется af_purchase_sandbox_sdk. Событие подписки называется af_ars_sandbox_sdk.
  • Все остальные события покупки отбрасываются, то есть коннектор SDK не создаёт события.
  • Входящие уведомления сервера обрабатываются только в том случае, если коннектор SDK впервые записывает исходную транзакцию. В этом случае создаётся событие покупки в приложении под названием af_purchase_sandbox_s2s. Событие подписки создаётся под названием af_ars_sandbox_s2s.
  • Событие не создаётся для любого уведомления сервера, для которого коннектор SDK сначала не зарегистрировал исходную транзакцию.
  • Для iOS убедитесь, что в разделе уведомлений сервера App Store в App Store Connect конечная точка AppsFlyer настроена как ваш URL сервера песочницы.
    ASSN.png
  • Если в iOS событие af_purchase_sandbox_sdk содержит параметр af_sandbox_revenue со значением дохода, это означает, что в рабочей среде это будет обычное событие af_purchase. Если дохода нет, то в рабочей среде это будет событие af_purchase_free.
  • В результате тестирования, проводимого на Android тестировщиками лицензий, создаются события песочницы, даже если песочница в SDK не настроена.

Тестирование измерения доходов от внутренних покупок (IAP) и подписок

Чтобы выполнить тестирование измерения доходов от внутренних покупок и подписок:

  1. Скажите разработчикам, что для настройки среды песочницы в коннекторе SDK необходимо следовать инструкциям Android, iOS и Unity.
  2. Сделайте тестовую покупку. Также поддерживаются транзакции, выполняемые тестировщиком лицензий в Google Play и из TestFlight в iOS.
    Примечание: Любой продукт по подписке может быть протестирован только один раз с каждого тестового устройства. Другими словами, нельзя зарегистрировать несколько тестовых покупок по одной и той же подписке с одного и того же устройства, поскольку они не будут учтены.
  3. Убедитесь, что событие отображается на дэшборде активности AppsFlyer. Событие покупки в приложении называется af_purchase_sandbox_sdk. Событие подписки называется af_ars_sandbox_sdk. Эти события включают в себя:
    • Значение дохода, равное 0 (чтобы не искажать реальные отчёты AppsFlyer).
    • Параметр af_sandbox_revenue, который включает в себя значение дохода от приобретённого продукта, чтобы вы могли проверить правильность учтённого дохода.
  4. Если вы проверяете продукт по подписке, дайте AppsFlyer некоторое время на получение уведомления сервера. Обычно это происходит через несколько минут после исходной покупки. 
  5. Убедитесь, что событие отображается на дэшборде активности AppsFlyer. Автоматическое продление называется af_ars_sandbox_s2s. Мероприятие включает в себя:
    • Значение дохода, равное 0 (чтобы не искажать реальные отчёты AppsFlyer).
    • Параметр af_sandbox_revenue, который включает в себя значение дохода от приобретённого продукта, чтобы вы могли проверить правильность учтённого дохода.

Шаг 5: выпустите версию приложения с коннектором SDK.

После того, как все предыдущие шаги настроены, а коннектор SDK от AppsFlyer для измерения дохода от покупок интегрирован в приложение, вашему разработчику необходимо выпустить версию приложения с интегрированным коннектором SDK.

Однако, прежде чем разработчик выпустит новую версию приложения, убедитесь, что:

  • Внутренние события приложения, которые вы хотите регистрировать как покупки в приложении или подписки, не блокируются одним из правил проверки, которые вы настроили в AppsFlyer.
  • Ваш разработчик должен отметить все флажки, относящиеся к песочнице, как false.
  • Для iOS убедитесь, что в разделе уведомлений сервера App Store в App Store Connect конечная точка AppsFlyer настроена как ваш URL сервера песочницы.
    ASSN.png

Сразу после релиза приложения с коннектором SDK события покупки в приложении и подписки будут генерироваться и доступны на всех дэшбордах AppsFlyer, а также в сводных отчётах и отчётах по сырым данным, включая ETL дохода.

Примечание. События будут создаваться только для пользователей, которые обновились до версии приложения, содержащей коннектор SDK. Таким образом, пока обновлённая версия приложения не будет у всех пользователей, данные о доходах от приложения и от магазина будут различаться.