Интеграции с аналитическими системами
Adapty отправляет все события подписок в аналитические сервисы, такие как Amplitude, Mixpanel и AppMetrica. Также можно отправлять события на ваш сервер через интеграцию с webhook. Самое удобное здесь то, что вам не нужно отправлять события самостоятельно — мы сделаем это за вас. Просто настройте интеграцию в дашборде Adapty.
Adapty поддерживает интеграцию со следующими сторонними аналитическими сервисами:
Не нашли своего провайдера аналитики?
Дайте нам знать! Создайте запрос на добавление функции, и мы рассмотрим его.
Свойства событий
Webhook-события отправляются в формате JSON. Все события имеют одинаковую структуру, но набор полей зависит от типа события, стора и вашей конфигурации.
Adapty конвертирует другие валюты в USD по курсу currencylayer.com (обновляется каждые 8 часов). Курс фиксируется на момент транзакции — последующие изменения не влияют на результат конвертации.
| Property | Type | Description |
|---|---|---|
| profile_id | uuid | Adapty ID пользователя. |
| currency | str | Местная валюта (по умолчанию USD). |
| price_usd | float | Цена продукта до вычета комиссии Apple/Google. Выручка. |
| proceeds_usd | float | Цена продукта после вычета комиссии Apple/Google. Чистая выручка. |
| net_revenue_usd | float | Чистая выручка (доход после вычета комиссии Apple/Google и налогов) в USD. Может быть пустым. |
| price_local | float | Цена продукта до вычета комиссии Apple/Google в местной валюте. Выручка. |
| proceeds_local | float | Цена продукта после вычета комиссии Apple/Google в местной валюте. Чистая выручка. |
| transaction_id | str | Уникальный идентификатор транзакции, например покупки или продления. |
| original_transaction_id | str | Идентификатор транзакции исходной покупки. |
| purchase_date | ISO 8601 date | Дата и время покупки продукта. |
| original_purchase_date | ISO 8601 date | Дата и время исходной покупки. |
| environment | str | Может быть Sandbox или Production. |
| vendor_product_id | str | ID продукта в Apple App Store, Google Play Store или Stripe. |
| base_plan_id | str | ID базового плана в Google Play Store или ID цены в Stripe. |
| event_datetime | ISO 8601 date | Дата и время события. |
| store | str | Может быть app_store или play_store. |
| trial_duration | str | Длительность пробного периода в днях. Передаётся в формате ” days”, например “7 days”. |
| cancellation_reason | str | Причина, по которой пользователь отменил подписку. Возможные значения: iOS и Android voluntarily_cancelled, billing_error, refund iOS price_increase, product_was_not_available, unknown Android new_subscription_replace, cancelled_by_developer |
| subscription_expires_at | ISO 8601 date | Дата истечения срока действия подписки. Обычно в будущем. |
| consecutive_payments | int | Количество периодов, в течение которых пользователь оформлял подписку без перерывов. Включает текущий период. |
| rate_after_first_year | bool | Булево значение, указывающее, что подписка соответствует условиям сниженной комиссии (обычно 15%) после одного года непрерывного продления. Ставки комиссии варьируются в зависимости от участия в программе и страны. Подробнее см. в разделе Комиссия стора и налоги. |
| promotional_offer_id | str | ID promotional offer, указанный в разделе Products дашборда Adapty. |
| store_offer_category | str | Может быть introductory или promotional. |
| store_offer_discount_type | str | Может быть free_trial, pay_as_you_go или pay_up_front. |
| paywall_name | str | Название пейвола, из которого была совершена транзакция. |
| paywall_revision | int | Ревизия пейвола, из которого была совершена транзакция. Значение равно 1. |
| developer_id | str | Developer (SDK) ID плейсмента, из которого была совершена транзакция. |
| ab_test_name | str | Название A/B-теста, из которого была совершена транзакция. |
| ab_test_revision | int | Ревизия A/B-теста, из которого была совершена транзакция. Значение равно 1. |
| cohort_name | str | Название аудитории, к которой относится профиль. |
| profile_event_id | uuid | Уникальный ID события, который можно использовать для дедупликации. |
| store_country | str | Страна, переданная нам стором. |
| profile_ip_address | str | IP профиля (может быть IPv4 или IPv6, при наличии предпочтение отдаётся IPv4). Обновляется каждый раз при смене IP устройства. |
| profile_country | str | Определяется Adapty на основе IP профиля. |
| profile_total_revenue_usd | float | Общая выручка по профилю с учётом возвратов. |
| variation_id | uuid | Уникальный ID пейвола, в котором была совершена покупка. |
| access_level_id | str | ID уровня доступа с оплатой. |
| is_active | bool | Булево значение, указывающее, активен ли платный уровень доступа для профиля. |
| will_renew | bool | Булево значение, указывающее, будет ли продлён платный уровень доступа. |
| is_refund | bool | Булево значение, указывающее, является ли транзакция возвратом. |
| is_lifetime | bool | Булево значение, указывающее, является ли платный уровень доступа пожизненным. |
| is_in_grace_period | bool | Булево значение, указывающее, находится ли профиль в льготном периоде. |
| starts_at | ISO 8601 date | Дата и время начала платного уровня доступа для пользователя. |
| renewed_at | ISO 8601 date | Дата и время последнего начала текущего периода платного доступа. До первого продления совпадает с activated_at. |
| expires_at | ISO 8601 date | Дата и время истечения платного доступа. |
| activated_at | ISO 8601 date | Дата и время активации платного доступа. |
| billing_issue_detected_at | ISO 8601 date | Дата и время обнаружения проблемы с оплатой. |
| profile_has_access_level | Bool | Булево значение, указывающее, есть ли у профиля активный уровень доступа (только для вебхуков). |
У каждого события есть следующие свойства:
transaction_id, original_transaction_id, purchase_date, original_purchase_date, environment, vendor_product_id, event_datetime, store.
Кроме того, у некоторых событий есть дополнительные свойства. Для событий subscription_refunded и non_subscription_purchase_refunded необходимо передавать значения price_usd и proceeds_usd в качестве дополнительных свойств.
| Название события | Свойства |
|---|---|
| subscription_initial_purchase | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_renewed | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_cancelled | cancellation_reason, trial_duration |
| trial_started | subscription_expires_at, trial_duration |
| trial_converted | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| trial_cancelled | cancellation_reason, trial_duration |
| non_subscription_purchase | price_usd, proceeds_usd |
| billing_issue_detected | subscription_expires_at, trial_duration |
| entered_grace_period | subscription_expires_at, trial_duration |
| Пример события |
{
"price_usd": 9.99,
"proceeds_usd": 6.99,
"transaction_id": "1000000628581600",
"original_transaction_id": "1000000628581600",
"purchase_date": "2020-02-18T18:40:22.000000+0000",
"original_purchase_date": "2020-02-18T18:40:22.000000+0000",
"environment": "Sandbox",
"vendor_product_id": "premium",
"event_datetime": "2020-02-18T18:40:22.000000+0000",
"store": "app_store"
}
Adapty отправляет события на ваш сервер и в сторонние аналитические системы. Свойство profile_ip_address синхронизируется с текущим IP-адресом устройства. При каждом обращении к серверам Adapty от SDK IP обновляется, если он отличается от того, что уже хранится в записи.
Настройка идентификатора профиля
- Задайте идентификатор профиля для выбранной аналитики с помощью инструкций для инструкции по установке атрибутов пользователя в вашем приложении iOS, Android, React Native, Flutter и Unity .
Предотвращение дублирования
Не забудьте отключить отправку событий подписок с устройств и вашего сервера, чтобы избежать дублирования.
Отключение внешней аналитики для конкретного пользователя
Иногда нужно прекратить отправку аналитических событий для конкретного пользователя — например, если в приложении есть возможность отказаться от аналитики.
Чтобы отключить внешнюю аналитику для пользователя, используйте метод updateProfile(). Создайте объект AdaptyProfileParameters.Builder и задайте соответствующее значение.
Когда внешняя аналитика заблокирована, Adapty перестаёт отправлять любые события во все интеграции для этого пользователя. Если нужно отключить интеграцию для всех пользователей приложения, просто выключите её в дашборде Adapty.
Блокировка внешней аналитики останавливает доставку событий во все интеграции для этого пользователя, включая пользовательские вебхуки. Не используйте её, если ваш бэкенд опирается на события вебхуков для управления доступом этого пользователя.
Настройка не имеет обратной силы: события, созданные до её применения, всё равно будут доставлены. Она также не влияет на собственную аналитику Adapty — транзакции пользователя по-прежнему учитываются в графиках дашборда.