Импорт исторических данных в Adapty
После установки SDK Adapty и публикации приложения вы можете просматривать своих пользователей и подписчиков в разделе Profiles. Но что, если у вас есть устаревшая инфраструктура и нужно мигрировать на Adapty, или вы просто хотите видеть существующие данные в Adapty?
Импорт данных не обязателен
Adapty автоматически предоставит уровни доступа историческим пользователям и восстановит их события покупок, как только они откроют приложение с интегрированным SDK Adapty. Для этого сценария импорт исторических данных не нужен. Тем не менее импорт данных обеспечивает точную аналитику, если у вас большой объём исторических транзакций, хотя в целом он не является обязательным условием миграции.
Чтобы импортировать данные в Adapty:
- Экспортируйте транзакции в CSV-файл (для iOS, Android и Stripe нужны отдельные файлы). Подробные требования к формату файла описаны в разделе Формат файла импорта ниже.
- Если какой-либо файл превышает 1 ГБ, подготовьте выборку данных примерно из 100 строк.
- Загрузите все файлы на Google Drive (можно сжать их, но держите отдельно).
- Для транзакций iOS убедитесь, что раздел In-app purchase API в App settings заполнен Issuer ID, Key ID и Private key (файл .P8) — даже если вы используете StoreKit 1. Подробные инструкции см. в разделах Укажите Issuer ID и Key ID и Загрузите файл In-App Purchase Key.
- Поделитесь ссылками с нашей командой по email или через онлайн-чат в дашборде Adapty.
Не беспокойтесь: импорт исторических данных не создаст дубликатов, даже если данные пересекаются с уже существующими записями в Adapty.
Известные ограничения для Android
- Восстанавливаются только активные подписки; истёкшие транзакции восстановлены не будут.
- Восстанавливаются только последние продления подписки; вся цепочка покупок восстановлена не будет.
- Если цена продукта изменилась с момента покупки, будет использоваться текущая цена, что может привести к некорректным данным о стоимости.
Если у вас большой объём Android-транзакций, перед началом импорта может потребоваться запросить увеличение квоты Google Play Developer API, чтобы не превысить лимит по умолчанию.
Формат файла импорта
Если вы мигрируете с RevenueCat, можно отправить файл экспорта RevenueCat напрямую — конвертация не нужна. Инструкции по экспорту см. в документации RevenueCat.
Подготовьте данные в файле или нескольких файлах, соответствующих следующим требованиям:
- Формат файла — .CSV.
- Отдельные файлы для Android, iOS и Stripe.
- Каждый файл импорта содержит все обязательные столбцы.
- Столбцы в файлах импорта имеют заголовки.
- Заголовки столбцов точно соответствуют значениям в колонке Column name в таблице ниже. Проверьте наличие опечаток.
- Необязательные столбцы могут отсутствовать в файле. Не добавляйте пустые столбцы для данных, которых у вас нет.
- Файлы импорта не должны содержать дополнительных столбцов, не указанных в таблице. Если они есть, удалите их.
- Значения разделены запятыми.
- Значения не заключены в кавычки.
- Если у одного пользователя несколько apple_original_transaction_id, добавьте их отдельными строками для каждого apple_original_transaction_id. В противном случае мы можем не восстановить расходуемые покупки.
В качестве примеров используйте следующие файлы для iOS и Android.
Доступные столбцы файла импорта
| Название столбца | Наличие | Описание |
|---|---|---|
| user_id | обязательный | ID вашего пользователя |
| apple_original_transaction_id | обязательный для iOS | Оригинальный идентификатор транзакции или OTID (подробнее), используется в механизме импорта StoreKit 2. Поскольку у одного пользователя может быть несколько OTID, для успешного импорта достаточно указать хотя бы один. Примечание: Для этого импорта необходимо настроить учётные данные In-app purchase API в дашборде Adapty. Как это сделать — здесь. |
| google_product_id | обязательный для Google | ID продукта в Google Play Store. |
| google_purchase_token | обязательный для Google | Уникальный идентификатор, представляющий пользователя и ID продукта для приобретённой встроенной покупки |
| google_is_subscription | обязательный для Google | Возможные значения: 1 | 0 |
| stripe_token | обязательный для Stripe | Токен объекта Stripe, представляющий уникальную покупку. Может быть токеном подписки Stripe (sub_...) или Payment Intent (pi_...). |
| subscription_expiration_date | необязательный | Дата истечения подписки, т.е. следующая дата списания, дата и время с часовым поясом (2020-12-31T23:59:59-06:00) |
| created_at | необязательный | Дата и время создания профиля (2019-12-31 23:59:59-06:00) |
| birthday | необязательный | Дата рождения пользователя в формате 2000-12-31 |
| необязательный | Электронная почта вашего пользователя | |
| gender | необязательный | Пол пользователя |
| phone_number | необязательный | Номер телефона вашего пользователя |
| country | необязательный | формат ISO 3166-1 alpha-2 |
| first_name | необязательный | Имя вашего пользователя |
| last_name | необязательный | Фамилия вашего пользователя |
| last_seen | необязательный | Дата и время с часовым поясом (2020-12-31T23:59:59-06:00) |
| idfa | необязательный | Идентификатор для рекламодателей (IDFA) — случайный идентификатор устройства, назначаемый Apple. Применяется только для iOS-приложений |
| idfv | необязательный | Идентификатор для поставщиков (IDFV) — уникальный код, назначаемый всем приложениям одного разработчика. Применяется только для iOS-приложений |
| advertising_id | необязательный | Advertising ID — уникальный код, назначаемый операционной системой Android, который рекламодатели могут использовать для уникальной идентификации устройства пользователя |
| amplitude_user_id | необязательный | ID пользователя из Amplitude |
| amplitude_device_id | необязательный | ID устройства из Amplitude |
| mixpanel_user_id | необязательный | ID пользователя из Mixpanel |
| appmetrica_profile_id | необязательный | ID профиля пользователя из AppMetrica |
| appmetrica_device_id | необязательный | ID устройства из AppMetrica |
| appsflyer_id | необязательный | Уникальный идентификатор из AppsFlyer |
| adjust_device_id | необязательный | ID устройства из Adjust |
| facebook_anonymous_id | необязательный | Уникальный идентификатор, генерируемый Facebook для пользователей, анонимно взаимодействующих с вашим приложением или сайтом, то есть не вошедших в Facebook |
| branch_id | необязательный | Уникальный идентификатор из Branch |
| attribution_source | необязательный | Источник интеграции атрибуции, например appsflyer |
| attribution_status | необязательный | organic |
| attribution_channel | необязательный | Канал атрибуции, привлёкший транзакцию |
| attribution_campaign | необязательный | Кампания атрибуции, привлёкшая транзакцию |
| attribution_ad_group | необязательный | Группа объявлений атрибуции, привлёкшая транзакцию |
| attribution_ad_set | необязательный | Набор объявлений атрибуции, привлёкший транзакцию |
| attribution_creative | необязательный | Конкретные визуальные или текстовые элементы рекламного объявления или маркетинговой кампании, которые отслеживаются для оценки эффективности достижения целевых действий: кликов, конверсий или установок |
| custom_attributes | необязательный | Определите до 30 пользовательских атрибутов в виде JSON-словаря в формате ключ-значение:
Формат: Обратите внимание на использование двойных и одинарных кавычек в формате. Имейте в виду, что булевы значения и целые числа будут преобразованы в числа с плавающей точкой. |
Обязательные поля
Для каждой платформы существует 2 группы обязательных полей: user_id и данные, идентифицирующие покупки для соответствующей платформы. Обязательные поля по платформам указаны в таблице ниже.
| Платформа | Обязательные поля |
|---|---|
| iOS | user_id apple_original_transaction_id |
| Android | user_id google_product_id google_purchase_token google_is_subscription |
| Stripe | user_id stripe_token |
Без этих полей Adapty не сможет получить транзакции.
Для точной аналитики по когортам укажите created_at. Если это поле не заполнено, датой установки будет считаться дата первой покупки.
Импорт данных в Adapty
Свяжитесь с нами и поделитесь файлами импорта через [email protected] или через онлайн-чат в дашборде Adapty.