Платежи и ID пользователей
Unolink привязывает каждый платёж к установке, к которой он относится, а значит, и к ссылке или объявлению, с которых пришла эта установка. Это работает, как бы поздно ни пришёл платёж: человек, который нажал на вашу рекламу в TikTok сегодня и оформит подписку через две недели, всё равно засчитывается как платящий пользователь с этой рекламы. Тариф Pro и выше.
Как учитываются поздние платежи
- Каждое событие относится к установке. Платёж, который приходит через неделю или месяц после установки, добавляется к тому же человеку.
- Воронки, «Пути» и Отчёт не имеют срока отсечения. Шаг засчитывается, если человек выполнил его в любое время, поэтому поздний платёж всё равно переводит его в «Оплатил».
- Диапазон дат выбирает людей, а не события. «Последние 7 дней» означает людей, которые установили приложение за последние 7 дней, плюс всё, что они сделали после этого. Посмотрите на установки прошлой недели снова через неделю, и Оплатил может вырасти: это приходят поздние плательщики, а не ошибка.
- «Пути» обновляются сами. Человек, показанный как «Ушёл» (нет активности неделю), становится «Завершил», когда приходит его платёж, а в строке появляется «оплатил через 9 дней после установки · вернулся».
Где посмотреть, сколько времени людям нужно
- Отчёт → Когда люди платят: доля установок, оплативших в течение дня, 7 дней и 30 дней, медианное время ожидания и сколько людей вернулись, чтобы заплатить после недели или более тишины, по всем и по каждой ссылке. «В течение 7 дней» учитывает только установки не моложе 7 дней, чтобы недавние установки не занижали цифру.
- «Пути»: для каждого платящего человека видно, через сколько дней после установки он впервые заплатил и вернулся ли он после затишья.
- Уже подписан: человек, который оформил подписку до этой установки (переустановка, новый телефон), присылает продление, а не покупку. «Пути» показывают его как «Уже подписан · продлил» и учитывают его деньги в выручке, но не как Оплатил: продажа была сделана не этой установкой и не ссылкой, с которой она пришла.
Что нужно от вашего приложения
Платежи попадают в Unolink одним из двух способов:
- RevenueCat (рекомендуется). Подключите его вебхук в приложении → Настройки → RevenueCat. RevenueCat сообщает о покупках, конверсиях пробных периодов, продлениях и возвратах даже когда приложение не открыто, а именно так происходит большинство поздних платежей (пробный период, который конвертируется через неделю, продление в следующем месяце).
- Вызов
purchase()из SDK, который отправляется из приложения, когда человек платит в нём. Подходит без RevenueCat, но не видит ничего, что происходит вне приложения.
Чтобы события RevenueCat нашли нужную установку, приложение должно сообщить Unolink, кто пользователь, с помощью собственного app user ID RevenueCat. В SDK 0.3.2 и новее одна строка при запуске поддерживает его в актуальном состоянии:
// iOS: once at launch, before or after configure
Unolink.connectRevenueCat { Purchases.isConfigured ? Purchases.shared.appUserID : nil }
// Android
Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID }
// React Native
Unolink.connectRevenueCat(Purchases)
// Flutter
Unolink.connectRevenueCat(() => Purchases.appUserID,
addListener: Purchases.addCustomerInfoUpdateListener,
removeListener: Purchases.removeCustomerInfoUpdateListener);
Он считывает ID из RevenueCat при запуске, когда приложение возвращается на передний план и когда ID меняется, и отправляет его,
только если он новый (на iOS и Android также вызывайте Unolink.revenueCatUserChanged() после logIn и logOut). До версии
0.3.2 или если хотите делать это сами, вызывайте вместо этого setUserId с ID из RevenueCat (например,
Unolink.setUserId(Purchases.shared.appUserID)) после Purchases.configure, после каждого Purchases.logIn и
Purchases.logOut и при каждом запуске. Используйте что-то одно, а не оба способа сразу. На странице RevenueCat
есть код для каждой платформы.
Для гостя ID RevenueCat — это его анонимный ID, поэтому покупка, сделанная до регистрации, сразу привязывается к установке. После
logIn это ID аккаунта. Unolink хранит все ID, которые сообщала установка, поэтому покупка гостя остаётся привязанной.
Платёж, который пришёл раньше, чем приложение отправило ID пользователя, не теряется: он ждёт и привязывается к установке, как только
ID придёт. Без RevenueCat вызывайте setUserId со своим собственным ID пользователя и null (nil в Swift) при выходе из аккаунта.
Когда человек нажимает «продолжить как гость», также вызывайте Unolink.signUpSkipped() (SDK 0.3.2 и новее, React Native 0.3.1;
в старых SDK: track("sign_up_skipped")), чтобы шаг воронки Продолжили как гость их учитывал. См.
Гости и аккаунты.
Когда платёж не удаётся привязать
- Нет ни RevenueCat, ни
setUserId, а человек платит вне приложения (например, на вашем сайте). Ничто не сообщает об этом Unolink. - Человек переустанавливает приложение до оплаты. Для Unolink новая установка — это новый человек, если только их не связывает один и тот же ID пользователя.
- Человек платит на другом устройстве. Это тоже привязывается только через ID пользователя.
- Платит гость, а приложение сообщает только ID аккаунта. RevenueCat отправляет покупку под своим анонимным ID, который приложение так и не сообщило. Она всё равно привяжется, но только со следующим событием RevenueCat для этого клиента, в котором указаны оба ID (например, с первым продлением); до тех пор человек отображается как ещё не оплативший. Если сообщать собственный ID RevenueCat, покупка привязывается сразу.
Когда RevenueCat подключён и его ID сообщается (connectRevenueCat или setUserId с ID из RevenueCat), все эти случаи
покрыты.
Конфиденциальность: это не фингерпринтинг
- Фингерпринтинг — это определение того, какое устройство у человека, по его характеристикам (IP-адрес, экран, шрифты, настройки) без спроса, обычно чтобы следить за ним в приложениях других компаний. Apple это запрещает, и Unolink никогда этого не делает.
setUserId— это собственный ID пользователя вашего приложения, который ваше приложение передаёт намеренно. Unolink хранит только односторонний хеш с ключом от него (HMAC-SHA256 с ключом, уникальным для каждого вашего приложения), никогда сам ID, и использует его для одного: привязки платежей вашего приложения к установкам вашего приложения. Он никогда не передаётся другим приложениям, рекламным сетям или кому-либо ещё.- App Tracking Transparency от Apple касается связывания данных вашего приложения с приложениями или сайтами других компаний для рекламы или передачи их брокерам данных. Привязка ваших собственных покупок к вашим собственным установкам — это аналитика первой стороны, того же рода, что у RevenueCat или Firebase, поэтому запрос на отслеживание для неё не нужен.
В вопросах о конфиденциальности в App Store Connect Unolink с setUserId обычно сводится к следующему: Идентификатор пользователя (User ID) и
Покупки (Purchases), собираемые для аналитики (Analytics), связанные с пользователем и не используемые для отслеживания. Ваши собственные
ответы зависят от всего остального, что делает ваше приложение, поэтому проверьте их целиком.