Запрос атрибуции через CLI

CLI Adapty считывает аналитику атрибуции Adapty из терминала в разделе adapty attribution. Он возвращает те же данные, что и дашборд Attribution: расходы, установки, выручку, ROAS, значения когорт и прогнозы, сгруппированные по каналу, кампании, группе объявлений, объявлению, ключевому слову, стране, стору или дате.

Используйте его, чтобы дать AI-агенту прямой доступ к вашим данным по привлечению, выгрузить отчёт в скрипт или получить ответ на один вопрос без построения представления в дашборде.

Tip

Чтобы 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.

Создание отчёта

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

  1. Выведите список метрик. Каждая метрика содержит единицу измерения, а для соотношений — метрики, на которые она делится:

    adapty attribution metrics

    Некоторые названия являются шаблонами, например d{N}_roas. День нужно подставить самостоятельно: d7_roas, d30_roas. Ведущий ноль, как в d07_roas, не принимается.

  2. Выведите список измерений, по которым можно группировать или фильтровать данные:

    adapty attribution dimensions

--group-by принимает значения date, campaign, adset, ad, keyword, channel, country и store. Кампании, группы объявлений и объявления фильтруются по ID, но не по названию.

  1. Узнайте значения для фильтрации. Если фильтрация не нужна, пропустите этот шаг. Для кампаний команда возвращает ID, название и канал каждой кампании за указанный период:

    adapty attribution values --app <app-id> --date-from 2026-08-01 --date-to 2026-08-31 --dimension campaign
  2. Запустите отчёт:

   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 day31 день
--granularity week180 дней
--granularity month, quarter или year366 дней
Без группировки по date92 дня

Для более длинного периода используйте более крупный шаг --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_required401Войдите снова с помощью adapty auth login.
attribution_access_required402У вашей компании нет доступа к Attribution. Повторный вход не поможет.
attribution_app_not_found404Найдите ID приложения через adapty apps list — там перечислены только доступные вам приложения.
attribution_unknown_metric422Исправьте названия метрик, используя adapty attribution metrics. В сообщении указана каждая некорректная метрика; остальная часть отчёта при этом не выполняется.
attribution_validation_error422Исправьте измерение, фильтр, поле сортировки или даты, указанные в сообщении. Все значения одного измерения указывайте в одном --filter.
attribution_query_too_large422Уменьшите детализацию отчёта, как указано в сообщении. См. Ограничения.
attribution_busy429Для вашей компании выполняется слишком много запросов. Подождите retry_after_seconds, затем повторите запрос.
attribution_upstream_unavailable, attribution_query_unavailable503Подождите 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 dateday, 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 — это первый день соответствующего интервала.

Что дальше