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 с правом на запись. Чтобы его создать, следуйте инструкциям в разделе создания учётных данных.
Для событий и посещений пейволов можно использовать разные бакеты с разными учётными данными. Однако если хотя бы один набор учётных данных окажется недействительным, обе загрузки завершатся ошибкой.
Перейдите в Integrations -> Google Cloud Storage и откройте нужную вкладку (Events или Paywall visits). Включите интеграцию.
Загрузите файл с вашим ключом сервисного аккаунта Google Cloud. Укажите целевой бакет и папку. Сохраните изменения.
Дополнительные настройки для данных о событиях
Вы можете указать, какие события включать в отчёт, и задать для них пользовательские названия. Полный список доступных событий см. в статье Events.
| Название | Значение по умолчанию | Описание |
|---|---|---|
| Exclude historical events | true | Исключить информацию о событиях, произошедших до интеграции Adapty SDK в ваше приложение. Если ваша аналитическая платформа получала события подписок до того, как вы начали использовать Adapty, этот параметр предотвращает появление дублирующих событий. Практический примерПользователь оформил ежемесячную подписку 10 января. Обновление приложения от 1 марта было первым, включавшим Adapty SDK. |
| Include events without profile | false | Включить транзакции, не связанные с профилем пользователя или не привязанные к конкретному пользователю. Сюда могут входить покупки, совершённые до установки Adapty SDK, или транзакции, полученные через серверные уведомления. |
| Send user attributes | false | Включить пользовательские атрибуты, например данные о пользователе и использовании приложения. Выберите этот параметр, если ваш тарифный план поддерживает более 10 тегов. Превышение лимита тегов может привести к ошибкам. |
Создание учётных данных Google Cloud Storage
Это руководство поможет вам создать необходимые учётные данные в Google Cloud Platform Console.
Чтобы Adapty мог загружать отчёты с необработанными данными в указанный бакет, требуется ключ сервисного аккаунта и права на запись в соответствующий бакет. Предоставив ключ сервисного аккаунта и выдав права на запись, вы позволяете Adapty безопасно и эффективно передавать отчёты с необработанными данными из своей платформы в ваше хранилище.
Обратите внимание, что поддерживается только авторизация через HMAC-ключ сервисного аккаунта. Убедитесь, что вашему HMAC-ключу присвоены роли «Storage Object Viewer», «Storage Legacy Bucket Writer» и «Storage Object Creator» — это необходимо для корректного доступа к Google Cloud Storage.
- Для начала перейдите в раздел IAM вашего аккаунта Google Cloud и выберите нужный проект или создайте новый.
-
Затем создайте новый сервисный аккаунт для Adapty, нажав кнопку ”+ CREATE SERVICE ACCOUNT”.
-
Заполните поля на первом шаге — доступ будет предоставлен позже. Подробнее об этой странице читайте в документации.
-
Чтобы создать и скачать приватный JSON-ключ, перейдите в раздел KEYS и нажмите кнопку “ADD KEY”.
-
В разделе DETAILS найдите значение Email, связанное с только что созданным сервисным аккаунтом, и скопируйте его. Эта информация потребуется на следующих шагах для авторизации аккаунта и предоставления прав на запись в бакет.
-
Перейдите на страницу Buckets в Google Cloud Storage, выберите существующий бакет или создайте новый для хранения отчётов о событиях или посещениях из Adapty. Затем перейдите в раздел PERMISSIONS и выберите GRANT ACCESS.
-
В разделе PERMISSIONS введите Email сервисного аккаунта, полученный на пятом шаге, выберите роль Storage Object Creator и нажмите SAVE для сохранения изменений.
Запомните название бакета — оно понадобится в будущем.
Ручной экспорт данных
Помимо автоматического экспорта данных о событиях в Google Cloud Storage, Adapty поддерживает ручной экспорт файлов. С его помощью вы можете выбрать конкретный временной интервал и экспортировать данные о событиях в бакет GCS вручную. Это даёт вам больше контроля над тем, какие данные и когда экспортировать.
Указанный диапазон дат используется для экспорта событий, созданных с Даты А 00:00:00 UTC до Даты Б 23:59:59 UTC.
Структура данных
Adapty использует файлы .csv для экспорта данных в табличном формате.
Состав событий может меняться со временем — мы или наши партнёры можем добавлять новые данные. Убедитесь, что ваш код, обрабатывающий эти данные, достаточно гибок и опирается на конкретные поля, а не на структуру в целом.
События
Вы можете изменить список событий, которые включаются в ваши отчёты.
Adapty конвертирует другие валюты в USD по курсу currencylayer.com (обновляется каждые 8 часов). Курс фиксируется на момент транзакции — последующие изменения не влияют на результат конвертации.
| Столбец | Описание |
|---|---|
| profile_id | Идентификатор пользователя в Adapty. |
| event_type | Название события в нижнем регистре. Типы событий описаны в разделе События. |
| event_datetime | Дата в формате ISO 8601. |
| transaction_id | Уникальный идентификатор транзакции (покупки или продления). |
| original_transaction_id | Идентификатор транзакции первоначальной покупки. |
| subscription_expires_at | Дата окончания подписки. Как правило, в будущем. |
| environment | Sandbox или 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. |
| idfv | identifierForVendor на устройствах iOS. |
| idfa | advertisingIdentifier на устройствах iOS. |
| advertising_id | Уникальный код, присваиваемый операционной системой Android, который рекламодатели могут использовать для однозначной идентификации устройства пользователя. |
| ip_address | IP-адрес устройства (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_id | AppSetId — уникальный, задаваемый на уровне устройства и аккаунта разработчика, сбрасываемый пользователем идентификатор для нерекламных монетизационных сценариев использования. |
| 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 | Ключевое слово креатива атрибуции. |
| attributes | JSON с пользовательскими атрибутами. Включает все пользовательские атрибуты, настроенные для отправки из мобильного приложения. Для отправки включите опцию 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_id | ID разработчика (SDK) пейвола, из которого пришла транзакция. |
| ab_test_name | Название A/B-теста, из которого пришла транзакция. |
| ab_test_revision | Ревизия A/B-теста, из которого пришла транзакция. |
| paywall_name | Название пейвола, из которого пришла транзакция. |
| paywall_revision | Ревизия пейвола, из которого пришла транзакция. |
Устранение неполадок
Adapty проверяет действительность ключей доступа до начала загрузки. Если хотя бы один ключ Google Cloud Storage окажется недействительным, Adapty прерывает загрузку и выдаёт ошибку.
Чтобы загрузки проходили без перебоев, заменяйте ключи до истечения срока их действия. Если вы обновляете ключ для событий, не забудьте обновить ключ для посещений пейволов, и наоборот.