ASO · App Store Connect · SDK · подписки

От поискового запроса до выручки — в одной рабочей области

AppMetrio сводит позиции в поиске App Store, данные App Store Connect, собственную продуктовую аналитику и подписки. У каждой метрики одно определение, у каждого релиза и правки витрины — отметка на графике.

Бесплатный тариф: до 1 000 000 событий и 5 000 устройств в месяц.

Схема экрана «Обзор»: KPI за период, установки с отметками хроники и очередь входящих. Числа условные.

01Что заменяет

Четыре инструмента, которые обычно открыты в разных вкладках

ASO-сервис, App Store Connect, продуктовая аналитика и подписочная аналитика. У каждого свой период, свои определения и своя «правда» об одном и том же числе.

  • ASO

    Магазин

    Позиции по фразам и сторфронтам, подсказки поиска, конкуренты, отзывы с ответами и темами, история правок витрины.

  • App Store Connect

    Установки и продажи

    Установки по странам, подписки Apple, воронка «показы → страница → загрузка», источники трафика — каждый день без ручного похода в ASC.

  • SDK

    Продуктовая аналитика

    События, сессии, удержание, когорты, воронки, пути, сегменты и профили — из собственного SDK для iOS, Android и Flutter.

  • Revenue

    Деньги

    MRR, триалы и отток из RevenueCat, пейволы, своя выручка по когортам, прогноз LTV и сверка источников.

Одно определение

Метрики описаны в общем реестре. Сервер, конструктор отчётов и ассистент считают их одним кодом, а «как это считается» видно в словаре прямо в интерфейсе.

02Ключ → деньги

Цель — не позиция в выдаче, а платящие пользователи

ASO-сервисы видят выдачу, но не видят, что человек делал после установки. Продуктовая аналитика и MMP видят события и деньги, но не видят магазин. AppMetrio держит обе половины в одной базе.

  • Когорта по запросу. Установки одного дня по одному запросу считаются отдельно: D1, D7, триалы, оплаты и выручка за первые 30 дней жизни когорты.
  • Рядом с позицией. На столе ключевых слов у фразы есть колонки «Установки» и «Деньги». Прочерк значит «меток не было», ноль — «пришли и не заплатили».
  • Алерт, когда фраза перестала приносить деньги. Сравниваются только когорты, прожившие свои 30 дней.

Запрос берётся из атрибуции Apple Ads на уровне ключевых слов. Органический запрос App Store не раскрывает, поэтому такие установки в отчёт не попадают — по органике доступны позиции и воронка стора.

Схема отчёта «Ключ → деньги»: фраза с большим числом установок принесла почти в семь раз меньше денег. Числа условные.

03Возможности

Разделы идут в порядке пути пользователя

Увидел в магазине, пришёл, пользуется, платит, возвращается. Над карточками приложений — общий уровень рабочей области: портфель, входящие и хроника.

01 / 06

Магазин

Видимость в App Store и то, что о приложении пишут.

  • Позиции по фразам

    По сторфронтам, с историей, движениями за неделю и тепловой картой «страна × фраза». Фразы из названия и подзаголовка меряются ежедневно.

  • Подсказки поиска

    Автоподсказки App Store по вашим фразам — для исследования хвоста запросов.

  • Конкуренты

    Кто рядом в выдаче, по каким фразам вы пересекаетесь и что пишут в их публичных отзывах.

  • Отзывы

    Все сторфронты одним потоком, темы по правилам и вручную, рейтинг по странам. Ответ разработчика отправляется из интерфейса.

  • Витрина

    Метаданные по локалям со счётчиком длины и история правок: что добавили в ключевые слова и что убрали.

  • Воронка стора

    Показы → страница → загрузки по источникам трафика из App Store Connect.

02 / 06

Привлечение

Откуда пришли установки и что из них вышло.

  • Источники установок

    По источнику, кампании и стране. Источник становится окончательным через сутки после первого запуска.

  • Apple Ads

    Токен AdServices SDK берёт сам на первом запуске — отдельного вызова в коде нет.

  • Play Install Referrer

    Детерминированная атрибуция на Android: utm_source и utm_campaign из Google Play.

  • Короткие ссылки и QR

    Ссылки на go.appmetrio.com: метка уходит в магазин, клик остаётся у вас, открытие приложения по ссылке связывается с установкой.

  • Ключ → деньги

    Когорты установок по запросу Apple Ads — до выручки за 30 дней. Подробнее

  • Без фингерпринтинга

    Сопоставления по IP и характеристикам устройства нет и не будет. SKAdNetwork не поддерживается сознательно.

03 / 06

Продукт

Что делают внутри приложения и кто возвращается.

  • События и словарь

    Имена и параметры событий объявлены в словаре. Приём отвергает то, чего в нём нет, — опечатка не становится новым событием.

  • Удержание и когорты

    Три метода — классический, скользящий, интервальный — с объяснением каждого. Аудитория: DAU, WAU, MAU, липкость.

  • Воронки

    Шаги из словаря, окно конверсии и порядок. Ответ считается заново при каждом открытии.

  • Пути

    Куда уходят с шага и что было перед ним.

  • Сегменты и профили

    Сегмент — фильтр сразу для всех отчётов приложения. Профиль хранит историю значений атрибутов.

  • Трасса сессии

    Лента событий вместо видео: какие экраны, в каком порядке и где сломалось. Запись экрана не ведётся.

  • Heatmap-lite

    Тапы в долях экрана — только на экранах, которые приложение само перечислило в SDK. Без снимков экрана.

  • Конструктор отчётов

    Метрика × разрез × период. Вид графика и сравнение с прошлым периодом живут в ссылке; экспорт в CSV и PNG.

Схема сетки «когорты × дни жизни». Числа условные.
04 / 06

Монетизация

Сколько приносит каждая когорта, каждый пейвол и каждый продукт.

  • Подписки

    MRR, активные подписки и триалы, отток, конверсии и новые клиенты — ряды RevenueCat по дням.

  • Своя выручка и пейволы

    По событиям SDK: когортная выручка, ARPU и ARPPU, плательщики, конверсия триала, показы и конверсия пейвола по размещению и варианту.

  • Прогноз LTV и оттока

    Кривая когорты продолжается по первым 14 дням и приходит с интервалом. На когортах меньше 200 человек прогноз не строится.

  • Клиенты

    Карточка установки: источник и правило атрибуции, профиль с историей, покупки и хвост событий на одном экране.

  • Продукты и цены

    То, что реально покупают, с ценами по валютам сторфронтов и конверсией триала там, где триалы были.

  • Сверка источников

    Proceeds Apple против RevenueCat за общее окно — расхождение видно до того, как оно вырастет. Метрики ЮKassa собираются рядом.

Схема прогноза: модель, а не наблюдение, поэтому с интервалом и отдельно от фактической выручки. Числа условные.
05 / 06

Качество и рост

Проверить сборку, выкатить безопасно, вернуть ушедших. Сбор крэшей и ANR пока не входит в продукт.

  • Живая отладка

    События тестовых устройств в потоке за секунду, без перезагрузки страницы. Там же — готовая команда curl с подписью.

  • Правила по данным SDK

    Падение D1 свежих когорт, просевший шаг воронки, замолчавшее событие, провал приёма, падение выручки.

  • Флаги и kill switch

    Значение по умолчанию — из сборки. Выключение выката доезжает до устройств за пять минут, без релиза.

  • Эксперименты

    Назначение фиксируется навсегда, выборка объявляется до старта, есть holdout. Вывод — по интервалу разницы с контролем.

  • Пуши по сегментам

    Число получателей видно до отправки, контрольная группа выделяется сама. Тихие часы 22:00–9:00 по времени телефона, не больше одного пуша в день и трёх в неделю.

  • Версии

    Версия приложения и ОС — разрезы отчётов. Версия SDK приходит с каждой пачкой событий.

Схема ответа эксперимента: интервалы вариантов пересекаются, но интервал разницы не содержит нуля. Числа условные.
06 / 06

Над приложениями

Что требует внимания во всём портфеле и почему изменились числа.

  • Портфель

    KPI по всем приложениям, таблица приложений и свежесть данных по каждому источнику.

  • Входящие

    Одна очередь того, что ждёт человека: тревоги, отзывы без ответа, простои сбора, эксперименты, дозревшие до решения. Запись можно отложить.

  • Хроника

    Релизы, правки витрины, ссылки, флаги, эксперименты, пуши, простои сбора и заметки — одной лентой и отметками на временных графиках.

  • Дашборды

    Обзор приложения собирается из виджетов: переставляется мышью и с клавиатуры, меняет размер и сохраняется под именем.

  • Ассистент

    Вопрос на русском превращается в отчёт. Модель выбирает метрику, разрез, период и вид из реестра и не пишет SQL; прочтение вопроса показано рядом.

  • Алерты и дайджест

    Аномалии сравниваются с тем же днём недели по медианному отклонению, а не с порогом. Доставка и утренняя сводка — в почту и Telegram.

04Как подключить

Первое событие — за три шага

Позиции в поиске и публичные данные магазина SDK не требуют. SDK нужен для событий, удержания, атрибуции, флагов, экспериментов и пушей.

  1. Шаг 1

    Рабочая область и приложение

    Создайте рабочую область и добавьте приложение. В «Настройках» → «Приложения и ключи» выпустите ключ: получите ключ приложения am_… и секрет подписи. Секрет показывается один раз.

    Ключ для релизной сборки лучше выпустить отдельно от отладочного — чтобы отозвать один, не трогая другой.

  2. Шаг 2

    Одна строка на старте приложения

    Подключите Swift Package AppMetrio и вызовите start. Установка, первый запуск, обновление, сессии и экраны уходят сами; продуктовые события — явным вызовом.

    Секрет подставляйте на этапе сборки — из переменной окружения, xcconfig или CI, — а не храните в git.

    AppDelegate.swiftSwift
    import AppMetrio
    
    AppMetrio.start(
        AMConfiguration(
            appKey: "am_…",
            secret: "…",
            endpoint: URL(string: "https://in.appmetrio.com")!,
            isTestDevice: isDebugBuild  // такие устройства видит «Живая отладка»
        )
    )
    
    // Продуктовые события — явно, имена из словаря
    AppMetrio.track(.featureUsed, ["feature": "экспорт"])
  3. Шаг 3

    Первое событие в «Живой отладке»

    Запустите сборку с isTestDevice и откройте «Живую отладку» в карточке приложения. Событие появляется в потоке за секунду, без перезагрузки страницы.

Платформы SDK

Нативные реализации одного контракта с общим словарём событий. Подпись обеих платформ проверяется одной фикстурой и обязана совпасть с серверной байт в байт.

iOS Swift

Минимум
iOS 15
Пакет
Swift Package
Экраны
UIKit сам, SwiftUI — screen
Атрибуция
Apple Ads (AdServices)

Android Kotlin

Минимум
Android 7.0 (API 24)
Зависимости
одна — Install Referrer
Экраны
активити сами, Compose — screen
Подключение
из исходников, Maven — позже
Показать код
AppMetrio.start(
    this,
    AMConfiguration(
        appKey = "am_…",
        secret = "…",
        endpoint = "https://in.appmetrio.com",
        isTestDevice = BuildConfig.DEBUG,
    ),
)

Flutter Dart

Минимум
Flutter 3.44
Устройство
мост к нативным SDK
Экраны
из роутера — screen
Подключение
из исходников, pub.dev — позже
Показать код
await AppMetrio.start(
  const AMConfiguration(
    appKey: 'am_…',
    secret: '…',
    endpoint: 'https://in.appmetrio.com',
    isTestDevice: kDebugMode,
  ),
);
  • Автособытия

    install, first_open, app_update, session_start, session_end, screen_view.

  • Очередь на диске

    До 5 000 записей, пачка — до 100 событий или 256 КБ. На 429 и 503 SDK ждёт Retry-After и повторяет.

  • Подпись

    Каждая пачка подписана HMAC-SHA256. Приём — отдельный домен in.appmetrio.com без cookie.

  • Без персональных данных

    Ключи вроде email, phone, name вырезаются на устройстве. Геопозиция не собирается.

  • Согласие

    setCollectionEnabled(false) останавливает сбор и стирает очередь. Ответ запоминается.

  • Удаление

    forget() стирает данные на устройстве, а сервер удаляет сырые данные этого устройства.

  • Флаги и пуши

    Флаги и варианты экспериментов отдаются из кеша мгновенно; push-токен и открытия пушей — отдельными вызовами.

  • Не роняет экран

    Вызов аналитики не бросает исключений в приложение. Нет сети или ответа — флаги возвращают значения из сборки.

05Тарифы

Два тарифа, разница — в лимитах потребления

Счётчики против лимитов тарифа видны в настройках рабочей области, на странице «Потребление».

Бесплатный

Free

БесплатноДля старта и небольшой аудитории

События
1 000 000 / мес
Устройства
5 000 / мес
Пуши
10 000 / мес
Начать бесплатно

Профессиональный

Pro

По запросуДля приложений с растущей аудиторией

События
50 000 000 / мес
Устройства
100 000 / мес
Пуши
500 000 / мес
Начать с бесплатного

При 80% лимита — предупреждение в интерфейсе и алерт.

Сверх лимита приём отвечает 429 с Retry-After, а счётчик отказов виден на странице «Потребление». SDK держит пачку на диске и повторяет отправку.

06Безопасность

Изоляция данных — на уровне базы, а не дисциплины

Каждая команда работает в своей рабочей области. Ошибка в запросе должна давать пустой результат, а не чужие данные.

  • RLS

    Изоляция рабочих областей

    Row Level Security PostgreSQL включена на каждой таблице с данными. Соединение привязывается к рабочей области до первого запроса, и забытый фильтр в коде даёт пустой ответ.

  • HttpOnly

    Сессия в cookie

    Непрозрачный токен в cookie с HttpOnly и SameSite=Lax — скрипт на странице его не прочитает. В базе хранится только хэш, смена пароля отзывает все сессии.

  • Шифрование

    Секреты зашифрованы

    Ключи интеграций и секреты подписи SDK хранятся зашифрованными. Секрет SDK показывается один раз, у ключей интеграций видны только последние символы.

  • Роли

    Владелец, администратор, аналитик, наблюдатель

    Права упорядочены: наблюдатель только смотрит, квитировать тревоги и писать заметки в хронику может аналитик и выше.

  • Журнал

    Журнал действий

    Кто и что сделал в рабочей области — отдельный раздел настроек.

  • HMAC

    Приём отдельно от интерфейса

    События принимает отдельная служба на своём домене, без сессий и cookie. Пачки подписаны, лимиты действуют по ключу, устройству и адресу, ключ отзывается с датой.

Где хранятся данные

Инфраструктура платформы размещена в Германии, у Hetzner. SDK не собирает имён, email, телефонов и геопозиции; идентификатор аккаунта попадает в аналитику, только если приложение само передаёт его через identify.

Раздел описывает техническое устройство и не является юридическим заключением. Требования GDPR, 152-ФЗ и других законов к вашему приложению стоит оценить с юристом.

07Вопросы

Частые вопросы

Нужен ли SDK, чтобы видеть ASO и данные App Store Connect?

Нет. Позиции, подсказки и публичные данные магазина собираются без SDK, установки и продажи приходят из App Store Connect. SDK нужен для событий, удержания, атрибуции, флагов, экспериментов и пушей.

Какой ключ App Store Connect нужен?

Ключ App Store Connect API с ролью Admin и vendor number для отчётов о продажах. С ролью App Manager Apple отказывает и в Analytics Reports, и в Sales and Trends.

Собирает ли AppMetrio крэши?

Нет. Крэш-репортинг и ANR пока не входят в продукт. SDK не ставит свой обработчик крэшей, поэтому не конфликтует с тем, что уже стоит в приложении.

Видно ли органический запрос, по которому установили приложение?

Нет, App Store его не раскрывает. «Ключ → деньги» работает по запросам Apple Ads, а по органике доступны позиции по фразам и воронка стора.

Поддерживается ли SKAdNetwork?

Нет, сознательно. Источник установки определяется по Apple Ads через AdServices, Play Install Referrer, открытию собственных ссылок и явному коду; остаток считается органикой. Сопоставления по IP и характеристикам устройства нет.

Как подключается RevenueCat?

Секретным ключом V2 с правами на чтение графиков и вебхуком. Ключ хранится зашифрованным, ряды MRR, подписок, оттока и конверсий забираются раз в сутки.

Секрет подписи лежит в приложении — это безопасно?

Секрет удостоверяет сборку, а не человека: извлёкший его сможет слать события за это приложение, и только. Против этого — отзыв ключа с датой, до которой доживает старый билд, и лимиты по ключу, устройству и адресу.

Есть ли публичный API и SSO?

Пока нет. Вход — через учётную запись рабочей области, выгрузка — CSV и PNG из любого отчёта.

Подключите первое приложение

Рабочая область, ключ и первое событие в «Живой отладке». Бесплатный тариф — до 1 000 000 событий в месяц.