Интеграции с сервисами рассылок
Привлечение пользователей в растущем мобильном рынке — дело непростое и недешёвое. Поэтому грамотная работа с уже привлечёнными пользователями улучшает юнит-экономику, особенно в высококонкурентных нишах.
Adapty предоставляет информацию о платёжных действиях пользователей в режиме реального времени. Мы знаем, когда пользователь начал пробный период, были ли у него проблемы с оплатой, оформил ли он подписку и решил ли её отменить. Все эти и другие события отражают изменение статуса пользователя. И это лучший момент для реакции — отправить оффер, персональный подарок или что-то другое, чтобы удержать клиента.
Платформы push-уведомлений позволяют описывать пользователей с помощью стандартных и кастомных тегов, чтобы выстроить эффективную систему автоматического удержания. Для работы этой системы нужны триггерные события, которые сообщают платформе, что пора отправить сообщение. Эти события поступают в push-платформу из Adapty через настроенную интеграцию.
Выберите нужный сервис и следуйте инструкциям:
Не видите нужный сервис?
Дайте нам знать! Создайте запрос на функцию, и мы рассмотрим возможность её добавления.
Свойства событий
Вебхук-события отправляются в формате JSON. Все события следуют одной структуре, однако их поля варьируются в зависимости от типа события, стора и вашей конфигурации.
Adapty конвертирует другие валюты в USD по курсу currencylayer.com (обновляется каждые 8 часов). Курс фиксируется на момент транзакции — последующие изменения не влияют на результат конвертации.
| Свойство | Тип | Описание |
|---|---|---|
| profile_id | uuid | Идентификатор пользователя Adapty. |
| 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. Для 12-месячного тарифного плана значение имеет вид <product_id>:monthly. |
| 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, указанного в разделе продуктов дашборда Adapty. |
| store_offer_category | str | Может принимать значение introductory или promotional. |
| store_offer_discount_type | str | Может принимать значение free_trial, pay_as_you_go или pay_up_front. |
| paywall_name | str | Название пейвола, из которого была совершена транзакция. Для флоу — ID экрана пейвола (scr_...). |
| paywall_revision | int | Ревизия пейвола, из которого была совершена транзакция. Значение равно 1. |
| developer_id | str | Идентификатор разработчика (SDK) плейсмента, из которого была совершена транзакция. |
| ab_test_name | str | Название A/B-теста, из которого была совершена транзакция. Для кросс-плейсментного A/B-теста — название теста на одном плейсменте (<test name> child-N). Чтобы объединить кросс-плейсментный тест по всем плейсментам, используйте ab_test_id. |
| ab_test_revision | int | Ревизия A/B-теста, из которого была совершена транзакция. Значение равно 1. |
| ab_test_id | uuid | ID A/B-теста, из которого была совершена транзакция. Для кросс-плейсментного A/B-теста одинаков на всех плейсментах. |
| ab_test_parent_name | str | Название кросс-плейсментного A/B-теста. Присутствует только для кросс-плейсментных A/B-тестов. |
| ab_test_variant_id | uuid | ID варианта A/B-теста, из которого была совершена транзакция. Используйте его для разбивки транзакций по вариантам теста. |
| ab_test_variant_name | str | Название варианта A/B-теста. |
| flow_id | uuid | ID флоу, из которого была совершена транзакция. |
| flow_name | str | Название флоу, из которого была совершена транзакция. |
| flow_variation_id | uuid | ID варианта флоу на данном плейсменте, соответствует flow.variationId в SDK. |
| 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 пейвола, на котором была совершена покупка. Для флоу — ID экрана пейвола внутри флоу, а не ID варианта A/B-теста. |
| 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-адресом устройства. При каждом получении данных от SDK серверы Adapty обновляют IP, если он отличается от записанного ранее.