Google Cloud Storage

Включите интеграцию с Google Cloud Storage, чтобы безопасно хранить события подписок и данные о посещениях пейволов в одном месте — в вашем бакете Google Cloud Storage.

Каждый день в 4:00 UTC Adapty загружает .csv-файлы с данными за предыдущий день в ваши бакеты. Вы можете выбрать, какие данные получать: событий, посещений пейвола или оба варианта. Также можно экспортировать данные вручную в любое время за любой период.

Чтобы настроить интеграцию, создайте ключ доступа к бакету в Google Cloud Console и добавьте его в настройки Adapty.

Расписание и продолжительность загрузки

Adapty загружает данные в Google Cloud Storage каждые 24 часа в 04:00 UTC.

Файлы содержат данные о событиях, созданных в течение предыдущего календарного дня (UTC). Файл, загруженный 8 марта, будет содержать все события, созданные 7 марта с 00:00:00 до 23:59:59 UTC.

Процесс может занять несколько часов — в зависимости от общего числа файлов в очереди и объёма запрошенных вами данных. Если Adapty включает в первую загрузку исторические данные, это займёт больше времени, чем последующие ежедневные загрузки.

Настройка интеграции с Google Cloud Storage

Вам понадобится действующий ключ сервисного аккаунта Google Cloud с правом на запись. Чтобы его создать, следуйте инструкциям в разделе создания учётных данных.

Warning

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

Перейдите в Integrations -> Google Cloud Storage и откройте нужную вкладку (Events или Paywall visits). Включите интеграцию.

Загрузите файл с вашим ключом сервисного аккаунта Google Cloud. Укажите целевой бакет и папку. Сохраните изменения.

google-cloud-storage-setup.webp

Дополнительные настройки для данных о событиях

Вы можете указать, какие события включать в отчёт, и задать для них пользовательские названия. Полный список доступных событий см. в статье Events.

event-specific-settings.webp
НазваниеЗначение по умолчаниюОписание
Exclude historical eventstrueИсключить информацию о событиях, произошедших до интеграции Adapty SDK в ваше приложение.

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

Пользователь оформил ежемесячную подписку 10 января. Обновление приложения от 1 марта было первым, включавшим Adapty SDK.

Если этот параметр включён, отчёт не будет содержать событие «подписка оформлена» от января и событие «подписка продлена» от февраля. Будет включено событие «подписка продлена» от 10 марта.

Include events without profilefalseВключить транзакции, не связанные с профилем пользователя или не привязанные к конкретному пользователю. Сюда могут входить покупки, совершённые до установки Adapty SDK, или транзакции, полученные через серверные уведомления.
Send user attributesfalseВключить пользовательские атрибуты, например данные о пользователе и использовании приложения. Выберите этот параметр, если ваш тарифный план поддерживает более 10 тегов. Превышение лимита тегов может привести к ошибкам.

Создание учётных данных Google Cloud Storage

Это руководство поможет вам создать необходимые учётные данные в Google Cloud Platform Console.

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

Warning

Обратите внимание, что поддерживается только авторизация через HMAC-ключ сервисного аккаунта. Убедитесь, что вашему HMAC-ключу присвоены роли «Storage Object Viewer», «Storage Legacy Bucket Writer» и «Storage Object Creator» — это необходимо для корректного доступа к Google Cloud Storage.

  1. Для начала перейдите в раздел IAM вашего аккаунта Google Cloud и выберите нужный проект или создайте новый.
30a81ef-CleanShot_2023-03-17_at_15.22.142x.webp
  1. Затем создайте новый сервисный аккаунт для Adapty, нажав кнопку ”+ CREATE SERVICE ACCOUNT”.

    98f8ebf-CleanShot_2023-03-17_at_15.40.062x.webp
  2. Заполните поля на первом шаге — доступ будет предоставлен позже. Подробнее об этой странице читайте в документации.

    2190c50-CleanShot_2023-03-17_at_15.48.552x.webp
  3. Чтобы создать и скачать приватный JSON-ключ, перейдите в раздел KEYS и нажмите кнопку “ADD KEY”.

    8a45468-CleanShot_2023-03-17_at_15.58.092x.webp
  4. В разделе DETAILS найдите значение Email, связанное с только что созданным сервисным аккаунтом, и скопируйте его. Эта информация потребуется на следующих шагах для авторизации аккаунта и предоставления прав на запись в бакет.

    6ccd0f0-CleanShot_2023-03-17_at_16.03.162x.webp
  5. Перейдите на страницу Buckets в Google Cloud Storage, выберите существующий бакет или создайте новый для хранения отчётов о событиях или посещениях из Adapty. Затем перейдите в раздел PERMISSIONS и выберите GRANT ACCESS.

    3cdd937-CleanShot_2023-03-17_at_16.14.232x.webp
  6. В разделе PERMISSIONS введите Email сервисного аккаунта, полученный на пятом шаге, выберите роль Storage Object Creator и нажмите SAVE для сохранения изменений.

    62801f4-CleanShot_2023-03-17_at_16.17.312x.webp

    Запомните название бакета — оно понадобится в будущем.

Ручной экспорт данных

Помимо автоматического экспорта данных о событиях в Google Cloud Storage, Adapty поддерживает ручной экспорт файлов. С его помощью вы можете выбрать конкретный временной интервал и экспортировать данные о событиях в бакет GCS вручную. Это даёт вам больше контроля над тем, какие данные и когда экспортировать.

Указанный диапазон дат используется для экспорта событий, созданных с Даты А 00:00:00 UTC до Даты Б 23:59:59 UTC.

e347308-CleanShot_2023-03-17_at_17.39.452x.webp

Структура данных

Adapty использует файлы .csv для экспорта данных в табличном формате.

Warning

Состав событий может меняться со временем — мы или наши партнёры можем добавлять новые данные. Убедитесь, что ваш код, обрабатывающий эти данные, достаточно гибок и опирается на конкретные поля, а не на структуру в целом.

События

Вы можете изменить список событий, которые включаются в ваши отчёты.

Note

Adapty конвертирует другие валюты в USD по курсу currencylayer.com (обновляется каждые 8 часов). Курс фиксируется на момент транзакции — последующие изменения не влияют на результат конвертации.

СтолбецОписание
profile_idИдентификатор пользователя в Adapty.
event_typeНазвание события в нижнем регистре. Типы событий описаны в разделе События.
event_datetimeДата в формате ISO 8601.
transaction_idУникальный идентификатор транзакции (покупки или продления).
original_transaction_idИдентификатор транзакции первоначальной покупки.
subscription_expires_atДата окончания подписки. Как правило, в будущем.
environmentSandbox или Production.
revenue_usdВыручка в USD. Может быть пустым.
proceeds_usdПоступления в USD. Может быть пустым.
net_revenue_usdЧистая выручка (доход после уплаты налогов) в USD. Может быть пустым.
tax_amount_usdСумма налоговых вычетов в USD. Может быть пустым.
revenue_localВыручка в местной валюте. Может быть пустым.
proceeds_localПоступления в местной валюте. Может быть пустым.
net_revenue_localЧистая выручка (доход после уплаты налогов) в местной валюте. Может быть пустым.
tax_amount_localСумма налоговых вычетов в местной валюте. Может быть пустым.
customer_user_idИдентификатор пользователя разработчика. Например, UUID, email или любой другой идентификатор. Null, если не задан.
storeЗначение app_store или play_store.
product_idИдентификатор продукта в Apple App Store, Google Play Store или Stripe. Для 12-месячного тарифного плана значение имеет вид <product_id>:monthly.
base_plan_idИдентификатор базового плана в Google Play Store или идентификатор цены в Stripe.
developer_idИдентификатор (SDK) разработчика пейвола, из которого была совершена транзакция.
ab_test_nameНазвание A/B-теста, из которого была совершена транзакция. Для кросс-плейсментного A/B-теста — название теста на одном плейсменте (<название теста> child-N). Чтобы сгруппировать кросс-плейсментный тест по плейсментам, используйте ab_test_id.
ab_test_revisionРевизия A/B-теста, из которого была совершена транзакция.
paywall_nameНазвание пейвола, из которого была совершена транзакция. Для флоу — идентификатор экрана пейвола (scr_...). Название флоу указано в поле flow_name.
paywall_revisionРевизия пейвола, из которого была совершена транзакция.
profile_countryСтрана профиля, определённая Adapty на основе IP-адреса.
install_dateДата установки в формате ISO 8601.
idfvidentifierForVendor на устройствах iOS.
idfaadvertisingIdentifier на устройствах iOS.
advertising_idУникальный код, присваиваемый операционной системой Android, который рекламодатели могут использовать для однозначной идентификации устройства пользователя.
ip_addressIP-адрес устройства (IPv4 или IPv6; при наличии предпочтительно IPv4). Обновляется каждый раз при изменении IP-адреса устройства.
cancellation_reason

Причина отмены подписки пользователем.

Возможные значения:

iOS и Android — voluntarily_cancelled, billing_error, refund

Только iOS — price_increase, product_was_not_available, unknown, upgraded

Только Android — new_subscription_replace, cancelled_by_developer

android_app_set_idAppSetId — уникальный, задаваемый на уровне устройства и аккаунта разработчика, сбрасываемый пользователем идентификатор для нерекламных монетизационных сценариев использования.
android_idНа Android 8.0 (API уровня 26) и выше — 64-битное число (в виде шестнадцатеричной строки), уникальное для каждой комбинации ключа подписи приложения, пользователя и устройства. Подробнее см. документацию для разработчиков Android.
deviceНазвание модели устройства, отображаемое конечному пользователю.
currencyТрёхбуквенный код валюты транзакции (ISO-4217).
store_countryСтрана профиля, определённая стором Apple/Google.
attribution_sourceИсточник атрибуции.
attribution_network_user_idИдентификатор пользователя, присвоенный источником атрибуции.
attribution_statusМожет принимать значения organic, non_organic или unknown.
attribution_channelНазвание маркетингового канала.
attribution_campaignНазвание маркетинговой кампании.
attribution_ad_groupГруппа объявлений атрибуции.
attribution_ad_setНабор объявлений атрибуции.
attribution_creativeКлючевое слово креатива атрибуции.
attributesJSON с пользовательскими атрибутами. Включает все пользовательские атрибуты, настроенные для отправки из мобильного приложения. Для отправки включите опцию Send User Attributes на странице Integrations -> Webhooks.
integration_idsВсе идентификаторы интеграций, связанные с профилем. Словарь. Пример: {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}
variation_idУникальный идентификатор пейвола, из которого была совершена транзакция. Для флоу — идентификатор экрана пейвола внутри флоу, а не вариант A/B-теста.
flow_idИдентификатор флоу, из которого была совершена транзакция.
flow_nameНазвание флоу, из которого была совершена транзакция.
flow_variation_idИдентификатор варианта флоу на данном плейсменте, соответствует flow.variationId в SDK.
ab_test_idИдентификатор A/B-теста, из которого была совершена транзакция. Для кросс-плейсментного A/B-теста одинаков на всех плейсментах.
ab_test_variant_idИдентификатор варианта A/B-теста, из которого была совершена транзакция. Используйте его для разбивки транзакций по вариантам теста.
ab_test_variant_nameНазвание варианта A/B-теста.
ab_test_parent_nameНазвание кросс-плейсментного A/B-теста. Для остальных A/B-тестов поле пустое.

Столбцы флоу и A/B-теста — последние в файле. Adapty вычисляет их в момент экспорта, поэтому название в экспорте может отличаться от названия в более раннем webhook-событии, если вы переименовали A/B-тест, вариант или флоу в промежутке. Подробнее о том, что хранится в каждом столбце для разных типов A/B-тестов, см. в разделе Поля флоу и A/B-теста.

Посещения пейволов

СтолбецОписание
profile_idИдентификатор пользователя Adapty.
customer_user_idИдентификатор пользователя разработчика. Например, UUID пользователя, email или любой другой идентификатор. Null, если не задан.
profile_countryСтрана профиля, определённая Apple/Google store.
install_dateДата установки в формате ISO 8601.
storeМожет быть app_store или play_store.
paywall_showed_atДата, когда пейвол был показан пользователю.
developer_idID разработчика (SDK) пейвола, из которого пришла транзакция.
ab_test_nameНазвание A/B-теста, из которого пришла транзакция.
ab_test_revisionРевизия A/B-теста, из которого пришла транзакция.
paywall_nameНазвание пейвола, из которого пришла транзакция.
paywall_revisionРевизия пейвола, из которого пришла транзакция.

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

Adapty проверяет действительность ключей доступа до начала загрузки. Если хотя бы один ключ Google Cloud Storage окажется недействительным, Adapty прерывает загрузку и выдаёт ошибку.

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