ibiza
CPM · CTR …
/

Install referrer: что это и какие магазины его передают

≈ 9 мин чтения · обновлено

Install referrer — строка параметров рекламной ссылки, которую магазин приложений сохраняет при переходе пользователя и отдает приложению после установки. По ней MMP точно знает, какой клик привел человека в магазин, без рекламного ID и вероятностных догадок. Механизм есть у Google Play, RuStore, Huawei AppGallery и некоторых других магазинов Android. На iOS его нет.

Как работает install referrer

  1. Пользователь кликает по рекламе. Ссылка трекера фиксирует клик и перенаправляет человека в магазин, добавляя к адресу параметр с идентификатором клика.
  2. Магазин запоминает этот параметр для пары «устройство — приложение».
  3. Пользователь устанавливает и открывает приложение.
  4. SDK трекера в приложении запрашивает у магазина referrer через его API и отправляет на сервер MMP.
  5. MMP находит клик по идентификатору из referrer и засчитывает ему установку.

Для Google Play параметр передается в адресе страницы приложения:

https://play.google.com/store/apps/details?id=com.example.app&referrer=utm_source%3Dnetwork%26click_id%3Dabc123

Значение referrer кодируется целиком: %3D — это =, %26 — &. После установки приложение получит строку utm_source=network&click_id=abc123.

Ключевое свойство метода — физическая цепочка: идентификатор прошел через магазин и вернулся в приложение. Поэтому MMP ставят referrer рядом с совпадением рекламного ID в верхушку иерархии методов, выше вероятностной атрибуции.

Google Play Install Referrer API

Приложение получает данные через библиотеку Play Install Referrer: подключается к сервису, вызывает getInstallReferrer() и закрывает соединение. Объект ReferrerDetails по документации Android содержит:

Метод Что возвращает
getInstallReferrer() Строку referrer из ссылки, по которой открыли страницу приложения
getReferrerClickTimestampSeconds() Время клика по ссылке, секунды
getInstallBeginTimestampSeconds() Время начала установки, секунды
getGooglePlayInstantParam() Взаимодействовал ли пользователь с instant-версией приложения за последние 7 дней

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

Данные хранятся 90 дней и не меняются, пока приложение не переустановят. Google советует вызывать API один раз, при первом запуске после установки, и закрывать соединение методом endConnection() (developer.android.com). На практике это делает SDK трекера, а разработчику остается не вызывать API повторно своим кодом.

Почему broadcast INSTALL_REFERRER больше не используют

Раньше Google Play рассылал после установки системный broadcast INSTALL_REFERRER, и приложение ловило его ресивером. Такое сообщение могли перехватить или подделать другие приложения, а меток времени в нем не было. В 2017 году Google выпустил Install Referrer API, а в ноябре 2019 года объявил, что с 1 марта 2020 года новые версии Play Store перестанут рассылать broadcast. Среди причин блог разработчиков Android называет защищенный канал между приложением и магазином и лучшую защиту от подделки и фрода атрибуции (Android Developers Blog).

Какие магазины передают referrer

Магазин Механизм Что подтверждено Источник
Google Play Play Install Referrer API Строка referrer, время клика и начала установки, хранение 90 дней developer.android.com
RuStore SDK Install Referrer Ссылка на страницу приложения с referrerId или referrer; в актуальном SDK объект содержит строку referrer, время клика, время начала установки и признак isFromRuStore rustore.ru
Huawei AppGallery Install referrer в HUAWEI Ads Kit AppGallery записывает referrer, приложение получает его через Ads Kit; нужен HMS Core developer.huawei.com
Samsung Galaxy Store Install Referrer Library Атрибуция нажатия «Установить» на странице приложения и начала установки; Galaxy Store 4.5.20.1 и выше; подробная документация — после входа в аккаунт Samsung developer.samsung.com
Xiaomi GetApps Install referrer магазина Поддержка подтверждается документацией MMP; официальное описание API от Xiaomi мы не нашли AppsFlyer

По другим магазинам Android, включая магазины OPPO и vivo и небольшие российские каталоги, публичной документации install referrer мы не нашли. Если приложение распространяется через них, уточните у магазина и у своего MMP, есть ли такой механизм.

RuStore подробнее

Рекламная ссылка ведет на страницу приложения в каталоге:

https://www.rustore.ru/catalog/app/com.example.app?referrerId=abc123

Документация SDK допускает и параметр referrer; если переданы оба, используется referrer. Срок хранения зависит от версии. По документации SDK 10.6.1, начиная с версии 11 значение хранится в RuStore 90 дней с момента клика и не удаляется после первого чтения, так что SDK трекера и код приложения могут запрашивать его независимо; данные читает метод getInstallReferrerV2(). В версии 10 значение удалялось после первого чтения, а в SDK 7.0.0 непрочитанное значение к тому же хранилось только 10 дней. На устройстве должен быть установлен RuStore: иначе SDK вернет ошибку RuStoreNotInstalledException, а на устаревшей версии магазина — RuStoreOutdatedException.

Со стороны трекеров: AppMetrica читает referrer Google Play, Huawei AppGallery и RuStore, последний — начиная с Android SDK 8.2.0. Поддержку RuStore в других MMP проверяйте по их документации. О закупке рекламы в самом магазине — в статье про рекламу в RuStore.

iOS: referrer нет

App Store не передает приложению параметры ссылки, по которой пользователь пришел. Детерминированная атрибуция на iOS возможна по IDFA, но только если пользователь разрешил отслеживание в запросе App Tracking Transparency. Без согласия остаются механизмы Apple — SKAdNetwork и более новый AdAttributionKit (developer.apple.com). Они сообщают о конверсиях кампании в агрегированном виде и с задержкой, без идентификатора пользователя и без click_id. Если трекер на iOS сообщает о «точной» атрибуции без IDFA, уточните метод: сопоставление по признакам устройства ограничено правилами Apple, о них — в статье про вероятностную атрибуцию.

APK с сайта и предустановки

Прямой APK. Магазина в цепочке нет, referrer взять неоткуда. Варианты: собирать отдельный APK для каждого канала с меткой источника в сборке; вести загрузку через ссылку трекера и полагаться на вероятностное сопоставление. Первый способ точнее, но требует отдельной сборки на каждый канал.

Предустановки (OEM). Приложение уже стоит на новом устройстве, клика не было. MMP предлагают свои механизмы. Например, Adjust перечисляет шесть способов, среди них файл с атрибуцией, путь к которому производитель прописывает в системных свойствах, и токен ссылки по умолчанию в конфигурации SDK (dev.adjust.com). У других трекеров набор способов свой — его проверяют по их документации до переговоров с производителем. Предустановки атрибутируют отдельной кампанией: модель оплаты у них своя.

Как referrer защищает от click injection

Click injection — схема, при которой вредоносное приложение на устройстве замечает начало установки чужого приложения и в последний момент отправляет фиктивный клик. По правилу последнего клика установка достается мошеннику. Метки времени из Install Referrer API ломают эту схему: настоящий клик происходит до начала установки, а внедренный — после.

Событие Время
Пользователь сам нашел приложение в Google Play, нажал «Установить» (install_begin) 12:00:00
Фродовое приложение отправило клик в трекер 12:00:07
Первый запуск 12:00:40

Клик пришел через 7 секунд после начала установки, то есть не мог ее вызвать. Adjust описывает именно такую проверку: сравнение времени касания с install_begin_time из API Google Play и Huawei, а вторым слоем — с временем окончания установки по данным своего SDK (help.adjust.com).

Вторая защита — сам referrer. Он содержит идентификатор клика, который действительно открыл магазин. Если установка пришла с referrer одной сети, клик другой сети без следа в магазине ее не перехватит. Подробнее о схемах перехвата — в статье про рекламный фрод.

Типичные ошибки с referrer

  • Двойное кодирование. Значение referrer закодировали дважды (%253D вместо %3D), и приложение получило нечитаемую строку.
  • Ссылка в обход трекера. Сеть ведет пользователя сразу в магазин без редиректа MMP, и в referrer нет идентификатора клика, который трекер мог бы узнать.
  • SDK без поддержки магазина. Приложение опубликовано в RuStore или AppGallery, но модуль трекера для этого магазина не подключен. Установки оттуда уходят в органику или в вероятностное сопоставление.
  • Свой код читает referrer повторно. Лишние вызовы API не дают новых данных, а в старых версиях SDK RuStore первое чтение своим кодом «съедало» значение до того, как его успевал прочитать трекер.

Что передать в DSP постбэком

Referrer нужен трекеру, а не DSP. Цепочка выглядит так: DSP подставляет свой click_id в трекинговую ссылку, трекер сохраняет его вместе с кликом и кладет в referrer магазина свой идентификатор клика. После установки трекер по referrer находит клик, а по клику — click_id DSP, и возвращает его в постбэке. Что включить в постбэк:

  • click_id — обязательно, именно то значение, которое пришло в клик-ссылке;
  • имя события — для установки то, которое DSP учитывает как установку;
  • сумму и валюту — для событий с выручкой.

Метод атрибуции (referrer, рекламный ID, вероятностный) и метки времени магазина DSP для учета конверсии не нужны. Но их полезно выгружать из MMP при разборе спорных источников.

Install referrer и постбэки в Ibiza

В целевую ссылку объявления Ibiza можно поставить и ссылку MMP, и прямую ссылку на магазин. Макросы подставляются в любое место адреса, поэтому {click_id} можно вложить и в параметр referrer:

https://play.google.com/store/apps/details?id=com.example.app&referrer=click_id%3D{click_id}

Такая ссылка имеет смысл, если referrer читает и отправляет постбэк ваш собственный бэкенд, а не MMP. Постбэк платформы принимает click_id, событие, сумму и валюту. События install, installation и cpi попадают в отчетах в «Установки». По умолчанию постбэк принимается в течение 120 часов с момента показа. Шаблоны ссылок для AppsFlyer, Adjust, AppMetrica и myTracker и настройка постбэка — в разделе макросы и трекеры.

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

Работает ли install referrer на iOS?

Нет. App Store не передает приложению параметры рекламной ссылки. На iOS установку атрибутируют по IDFA при согласии ATT, а без него — через SKAdNetwork и AdAttributionKit, которые выдают агрегированные данные без идентификатора пользователя.

Сколько хранится referrer в Google Play?

По документации Google — 90 дней, и он не меняется, пока приложение не переустановят. Поэтому API рекомендуют вызывать один раз, при первом запуске после установки.

Есть ли install referrer в RuStore?

Да, через SDK Install Referrer RuStore. Рекламная ссылка ведет на страницу приложения в каталоге с параметром referrerId или referrer, а приложение читает значение через SDK. Для работы на устройстве должен быть установлен RuStore.

Как определить источник установки из APK с сайта?

Магазина нет, значит нет и referrer. Источник определяют меткой канала, зашитой в сборку, ссылкой трекера с вероятностным сопоставлением или механизмами предустановки, которые поддерживает MMP.