Запрос атрибуции через CLI
CLI Adapty считывает аналитику атрибуции Adapty из терминала в разделе adapty attribution. Он возвращает те же данные, что и дашборд Attribution: расходы, установки, выручку, ROAS, значения когорт и прогнозы, сгруппированные по каналу, кампании, группе объявлений, объявлению, ключевому слову, стране, стору или дате.
Используйте его, чтобы дать AI-агенту прямой доступ к вашим данным по привлечению, выгрузить отчёт в скрипт или получить ответ на один вопрос без построения представления в дашборде.
Чтобы AI-инструмент для кода мог отвечать на вопросы вроде «Какой канал лучше всего окупился в прошлом месяце?», установите Attribution skill. Он знает, какие команды запускать и как интерпретировать результаты.
Каждая команда attribution работает только на чтение. Ни одна из них не изменяет кампанию, трекинговую ссылку или интеграцию.
Прежде чем начать
Тема attribution использует ту же установку и авторизацию, что и весь CLI. Если вы ещё не настроили это, выполните шаги 1 и 2 из руководства по быстрому старту. Для работы темы требуется CLI версии 0.8.8 или выше. Чтобы узнать свою версию, выполните adapty --version.
Также необходимо выполнить ещё два условия:
- Доступ к Attribution: без него вызовы
reportиvaluesзавершаются ошибкой402 attribution_access_required. Повторный вход не изменит ситуацию.metricsиdimensionsработают без этого доступа, поэтому успешный вызовmetricsподтверждает только авторизацию, но не наличие доступа. - Приложение, настроенное в Attribution:
reportиvaluesпринимают UUID приложения изadapty apps list. Если приложение не настроено в Attribution или ваш пользователь Adapty не имеет к нему доступа, запрос завершится ошибкой404 attribution_app_not_found.
Создание отчёта
Каждый отчёт создаётся в одном и том же порядке: выбираются названия из каталогов, задаются значения фильтров, затем запускается отчёт.
-
Выведите список метрик. Каждая метрика содержит единицу измерения, а для соотношений — метрики, на которые она делится:
adapty attribution metricsНекоторые названия являются шаблонами, например
d{N}_roas. День нужно подставить самостоятельно:d7_roas,d30_roas. Ведущий ноль, как вd07_roas, не принимается. -
Выведите список измерений, по которым можно группировать или фильтровать данные:
adapty attribution dimensions
--group-by принимает значения date, campaign, adset, ad, keyword, channel, country и store. Кампании, группы объявлений и объявления фильтруются по ID, но не по названию.
-
Узнайте значения для фильтрации. Если фильтрация не нужна, пропустите этот шаг. Для кампаний команда возвращает ID, название и канал каждой кампании за указанный период:
adapty attribution values --app <app-id> --date-from 2026-08-01 --date-to 2026-08-31 --dimension campaign -
Запустите отчёт:
adapty attribution report --app <app-id> --date-from 2026-08-01 --date-to 2026-08-31 \
--metrics spend,installs,cpi,roas,d7_roas --group-by campaign --sort roas:desc
Отчёт возвращает по одной строке на каждую комбинацию измерений --group-by, плюс totals. Итоги читайте из totals, а не суммируя строки вручную: соотношения и уникальные значения не складываются по строкам.
Примеры
Понедельный тренд для двух стран в рамках одной кампании:
adapty attribution report --app <app-id> --date-from 2026-07-01 --date-to 2026-08-31 \
--metrics spend,installs,cost_per_trial,d7_roas --group-by date,channel --granularity week \
--filter campaign=<campaign-id> --filter country=US,GB
Качество триалов по кампаниям, на основе выручки после комиссии стора:
adapty attribution report --app <app-id> --date-from 2026-07-01 --date-to 2026-08-15 \
--metrics spend,count_trial_started,d14_count_trial_converted,cost_per_trial,d30_roas \
--group-by campaign --revenue-basis proceeds
Прогноз окупаемости по дням установок:
adapty attribution report --app <app-id> --date-from 2026-09-01 --date-to 2026-09-29 \
--metrics spend,d7_revenue,d90_predict_roas,d365_predict_roas --group-by date,campaign --granularity day
Чтобы получить сырой ответ для скрипта или агента, добавьте --json к любой команде.
Читайте результаты
- Валюта: Суммы указаны в USD. Доходы рассчитываются согласно
--revenue-basis:gross(по умолчанию, как и на дашборде),proceeds(после комиссии стора) илиnet(после комиссии и налогов). Используемый режим указан вmeta.queryответа. - Проценты: ROAS и конверсии указаны по шкале 0–100. Значение
roasравное 150 означает 150%, или 1.5x. - Пустые значения: Пустое значение означает, что показатель не удалось вычислить, а не что он равен нулю. Соотношение пустое, когда нечего делить; прогноз пустой, когда у модели нет данных за этот день; все метрики, связанные с расходами, пустые для каналов, по которым у Attribution нет данных о расходах. В выводе
--jsonтакие значения равныnull; в табличном виде отображается—. - Метрики когорт: Метрика когорты учитывает только то, что когорта совершила на данный момент.
d30_roasдля установок за прошлую неделю охватывает всего одну неделю дохода и продолжит расти. Сравнивайте кампании только по дню, которого достигла каждая когорта в рассматриваемом периоде. - Даты: Даты — это дни в часовом поясе отчётности вашего приложения. Флага часового пояса нет. Часовой пояс отображается в
meta.query.timezoneв выводе--jsonкомандreportиvalues.
Расходы Apple Search Ads
Атрибуция собирает данные о расходах на рекламу из Meta, TikTok и Google Ads. Строки Apple Search Ads содержат данные об установках и выручке, но расходы, CPI, ROAS и все остальные метрики, основанные на расходах, в них пусты. Подключение Apple Ads не добавляет эти расходы в атрибуцию: расходы Apple Search Ads и ROAS находятся в Ads Manager, в разделе adapty asa metrics.
Не добавляйте данные из Ads Manager к строкам или итогам атрибуции. Ads Manager отчитывается в валюте вашей группы кампаний и по-другому атрибутирует установки.
Ограничения
Чем мельче шаг группировки по дате, тем короче максимальный период отчёта:
| Группировка | Максимальный период |
|---|---|
--granularity day | 31 день |
--granularity week | 180 дней |
--granularity month, quarter или year | 366 дней |
Без группировки по date | 92 дня |
Для более длинного периода используйте более крупный шаг --granularity. Годовые данные — это один отчёт с --granularity month.
У отчёта также есть следующие ограничения:
- Не более 10 000 строк. Чтобы получить больше, укрупните группировку по дате, уберите группировку по
keywordилиad, или добавьте фильтр. - Не более 25 метрик и не более 100 значений в одном фильтре.
- Метрики прогнозов (
d{N}_predict_…) требуют--group-by date --granularity dayи не более 2 дополнительных группировок, с не более чем 4 различными горизонтами до 365 дней.
adapty attribution metrics --json возвращает эти ограничения в data.limits.
Запускайте отчёты последовательно, а не параллельно: сервис выполняет одновременно лишь несколько запросов на одну компанию.
Ошибки
Запрос, отклонённый сервисом, завершается с кодом 4. Ввод, отклонённый CLI до отправки, например неверная дата или --granularity без --group-by date, завершается с кодом 2. При использовании --json ошибка включает error_code от сервиса.
| Код | HTTP | Что делать |
|---|---|---|
auth_required | 401 | Войдите снова с помощью adapty auth login. |
attribution_access_required | 402 | У вашей компании нет доступа к Attribution. Повторный вход не поможет. |
attribution_app_not_found | 404 | Найдите ID приложения через adapty apps list — там перечислены только доступные вам приложения. |
attribution_unknown_metric | 422 | Исправьте названия метрик, используя adapty attribution metrics. В сообщении указана каждая некорректная метрика; остальная часть отчёта при этом не выполняется. |
attribution_validation_error | 422 | Исправьте измерение, фильтр, поле сортировки или даты, указанные в сообщении. Все значения одного измерения указывайте в одном --filter. |
attribution_query_too_large | 422 | Уменьшите детализацию отчёта, как указано в сообщении. См. Ограничения. |
attribution_busy | 429 | Для вашей компании выполняется слишком много запросов. Подождите retry_after_seconds, затем повторите запрос. |
attribution_upstream_unavailable, attribution_query_unavailable | 503 | Подождите retry_after_seconds, затем повторите запрос. Если attribution_query_unavailable появляется снова, уменьшите отчёт. |
CLI никогда не повторяет команды report и values автоматически, поэтому если команда завершилась с ошибкой, она останется невыполненной до следующего запуска.
Справочник команд
attribution metrics
Перечисляет все метрики, которые принимает отчёт, с указанием единицы измерения, описания и метрик, на которые делится соотношение, а также лимитов отчёта. Не принимает флагов, кроме --json.
attribution dimensions
Перечисляет допустимые значения для --group-by и --filter, указывает, фильтрует ли каждое измерение по ID или по значению, а также задаёт гранулярность для date. Не принимает флагов, кроме --json.
attribution values
Перечисляет значения, которые одно измерение принимает для приложения за указанный период. Это именно те значения, которые принимает report --filter.
| Флаг | Обязателен | Описание |
|---|---|---|
--app | Да | UUID приложения из adapty apps list. |
--date-from | Да | Первый день периода включительно в формате YYYY-MM-DD в часовом поясе приложения. |
--date-to | Да | Последний день периода включительно. Не может быть раньше --date-from. |
--dimension | Да | Фильтруемое измерение из adapty attribution dimensions. |
--revenue-basis | Нет | gross, proceeds или net. |
Для campaign, adset и ad каждое значение содержит ID, название и канал. Значение с пустым ID соответствует органическому трафику или трафику из стора, который ни один фильтр не может выбрать.
attribution report
Запускает отчёт: метрики за период, сгруппированные по измерениям.
| Флаг | Обязательный | Описание |
|---|---|---|
--app | Да | UUID приложения из adapty apps list. |
--date-from | Да | Первый день периода включительно, в формате YYYY-MM-DD в часовом поясе приложения. |
--date-to | Да | Последний день периода включительно. |
--metrics | Да | Названия метрик из adapty attribution metrics, через запятую или повторяющимися флагами. Не более 25. |
--group-by | Да | date, campaign, adset, ad, keyword, channel, country или store, через запятую или повторяющимися флагами. |
--granularity | При --group-by date | day, week, month, quarter или year. Обязателен при группировке по date, в остальных случаях не принимается. |
--filter | Нет | dimension=value[,value]. Несколько значений — совпадение по любому из них; фильтры по разным измерениям применяются все. Один --filter на измерение. Для запятой внутри значения используйте \,. |
--revenue-basis | Нет | gross (по умолчанию), proceeds или net. |
--sort | Нет | field:asc или field:desc, где поле — запрошенная метрика или измерение из --group-by. Без указания направления — сортировка по возрастанию. Пустые значения — в конце. |
Строки, сгруппированные по campaign, adset или ad, содержат идентификатор, название и канал соответствующей сущности. Название кампании — это последнее название, которое она имела в рамках периода, поэтому для сопоставления кампаний между периодами используйте идентификатор. Значение date — это первый день соответствующего интервала.
Что дальше
- Анализ атрибуции с помощью AI-инструмента для разработчиков — скилл, который выполняет эти команды за вас.
- Метрики — что измеряет каждая метрика в дашборде.
- Прогнозы — как моделируется прогнозируемый доход.