---
title: "Импорт исторических данных в Adapty"
description: "Импортируйте исторические данные в Adapty для детальной аналитики."
---

После установки SDK Adapty и публикации приложения вы можете просматривать своих пользователей и подписчиков в разделе [Profiles](profiles-crm). Но что, если у вас есть устаревшая инфраструктура и нужно мигрировать на Adapty, или вы просто хотите видеть существующие данные в Adapty?

:::note
Импорт данных не обязателен

Adapty автоматически предоставит уровни доступа историческим пользователям и восстановит их события покупок, как только они откроют приложение с интегрированным SDK Adapty. Для этого сценария импорт исторических данных не нужен. Тем не менее импорт данных обеспечивает точную аналитику, если у вас большой объём исторических транзакций, хотя в целом он не является обязательным условием миграции.
:::

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

1. Экспортируйте транзакции в CSV-файл (для iOS, Android и Stripe нужны отдельные файлы). Подробные требования к формату файла описаны в разделе [Формат файла импорта](importing-historical-data-to-adapty#import-file-format) ниже.
2. Если какой-либо файл превышает 1 ГБ, подготовьте выборку данных примерно из 100 строк.
3. Загрузите все файлы на Google Drive (можно сжать их, но держите отдельно).
4. Для транзакций iOS убедитесь, что раздел **In-app purchase API** в [**App settings**](https://app.adapty.io/settings/ios-sdk) заполнен **Issuer ID**, **Key ID** и **Private key** (файл .P8) — даже если вы используете StoreKit 1. Подробные инструкции см. в разделах [Укажите Issuer ID и Key ID](app-store-connection-configuration#step-2-provide-issuer-id-and-key-id) и [Загрузите файл In-App Purchase Key](app-store-connection-configuration#step-3-upload-in-app-purchase-key-file).
5. Поделитесь ссылками с нашей командой по [email](mailto:support@adapty.io) или через онлайн-чат в дашборде Adapty.

Не беспокойтесь: импорт исторических данных не создаст дубликатов, даже если данные пересекаются с уже существующими записями в Adapty.

## Известные ограничения для Android \{#known-limitations-for-android\}

1. Восстанавливаются только активные подписки; истёкшие транзакции восстановлены не будут.
2. Восстанавливаются только последние продления подписки; вся цепочка покупок восстановлена не будет.
3. Если цена продукта изменилась с момента покупки, будет использоваться текущая цена, что может привести к некорректным данным о стоимости.

:::note
Если у вас большой объём Android-транзакций, перед началом импорта может потребоваться [запросить увеличение квоты Google Play Developer API](google-play-quota-increase), чтобы не превысить лимит по умолчанию.
:::

## Формат файла импорта \{#import-file-format\}

:::tip
Если вы мигрируете с RevenueCat, можно отправить файл экспорта RevenueCat напрямую — конвертация не нужна. Инструкции по экспорту см. в [документации RevenueCat](https://www.revenuecat.com/docs/integrations/scheduled-data-exports).
:::

Подготовьте данные в файле или нескольких файлах, соответствующих следующим требованиям:

- [ ] Формат файла — .CSV.
- [ ] Отдельные файлы для Android, iOS и Stripe.
- [ ] Каждый файл импорта содержит все [обязательные столбцы](importing-historical-data-to-adapty#required-fields).
- [ ] Столбцы в файлах импорта имеют заголовки.
- [ ] Заголовки столбцов точно соответствуют значениям в колонке **Column name** в таблице ниже. Проверьте наличие опечаток.
- [ ] Необязательные столбцы могут отсутствовать в файле. Не добавляйте пустые столбцы для данных, которых у вас нет.
- [ ] Файлы импорта не должны содержать дополнительных столбцов, не указанных в таблице. Если они есть, удалите их.
- [ ] Значения разделены запятыми.
- [ ] Значения не заключены в кавычки.
- [ ] Если у одного пользователя несколько **apple_original_transaction_id**, добавьте их отдельными строками для каждого **apple_original_transaction_id**. В противном случае мы можем не восстановить расходуемые покупки.

В качестве примеров используйте следующие файлы для [iOS](https://raw.githubusercontent.com/adaptyteam/adapty-docs/refs/heads/main/Downloads/adapty_import_ios_sample.csv) и [Android](https://raw.githubusercontent.com/adaptyteam/adapty-docs/refs/heads/main/Downloads/adapty_import_android_sample.csv).

### Доступные столбцы файла импорта \{#available-import-file-columns\}

| Название столбца | Наличие | Описание |
|-----------|--------|-----------|
| **user_id** | обязательный | ID вашего пользователя |
| **apple_original_transaction_id** | обязательный для iOS | <p>Оригинальный идентификатор транзакции или OTID ([подробнее](https://developer.apple.com/documentation/appstoreserverapi/originaltransactionid)), используется в механизме импорта StoreKit 2. Поскольку у одного пользователя может быть несколько OTID, для успешного импорта достаточно указать хотя бы один.</p><p></p><p>**Примечание:** Для этого импорта необходимо настроить учётные данные In-app purchase API в дашборде Adapty. Как это сделать — [здесь](app-store-connection-configuration#step-3-upload-in-app-purchase-key-file).</p> |
| **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 |
| **email** | необязательный | Электронная почта вашего пользователя |
| **gender** | необязательный | Пол пользователя |
| **phone_number** | необязательный | Номер телефона вашего пользователя |
| **country** | необязательный | формат [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/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-словаря в формате ключ-значение: <ul><li>**key**: (string) название пользовательского атрибута</li><li> **value**: (string, integer, float или boolean) значение пользовательского атрибута.</li></ul><p> Формат: `"{'string_value': 'some_value', 'float_value': 123.0, 'int_value': 456}"`.</p><p>Обратите внимание на использование двойных и одинарных кавычек в формате. Имейте в виду, что булевы значения и целые числа будут преобразованы в числа с плавающей точкой.</p> |

### Обязательные поля \{#required-fields\}

Для каждой платформы существует 2 группы обязательных полей: **user_id** и данные, идентифицирующие покупки для соответствующей платформы. Обязательные поля по платформам указаны в таблице ниже.

| Платформа | Обязательные поля |
|--------|---------------|
| iOS | <p>user_id</p><p>apple_original_transaction_id</p> |
| Android | <p>user_id</p><p>google_product_id</p><p>google_purchase_token</p><p>google_is_subscription</p> |
| Stripe | <p>user_id</p><p>stripe_token</p> |

Без этих полей Adapty не сможет получить транзакции.

Для точной аналитики по когортам укажите `created_at`. Если это поле не заполнено, датой установки будет считаться дата первой покупки.

### Импорт данных в Adapty \{#import-data-to-adapty\}

Свяжитесь с нами и поделитесь файлами импорта через [support@adapty.io](mailto:support@adapty.io) или через онлайн-чат в [дашборде Adapty](https://app.adapty.io/overview).