← Назад к вопросам

Будет ли относиться метка к каналу установки приложения если пользователь запустит сессию через 3 дня или через 40 дней после установки?

1.7 Middle🔥 121 комментариев
#Аналитика мобильных приложений#Атрибуция и маркетинг

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Будет ли относиться метка к каналу установки при отложенной сессии

Краткий ответ

Да, пользователь будет относиться к тому же каналу установки, независимо от того, запустит он сессию через 3 дня или 40 дней после установки. Метка канала привязана к мобильному устройству/рекламному идентификатору (IDFA/AAID), а не к времени активации.

Подробное объяснение

Как работает атрибуция канала установки

Стандартный процесс:

  1. Момент установки (t=0):

    • Пользователь кликает на рекламу (Facebook, Google, TikTok и т.д.)
    • ОС фиксирует source/channel в install referrer (Android) или Apple SKAdNetwork (iOS)
    • При первом запуске приложение передаёт эту информацию на сервер
    • БД сохраняет: user_id, channel, install_date, idfa/aaid
  2. Последующие сессии:

    • Мобильное приложение содержит persistent identifier (IDFA/AAID)
    • Этот identifier остаётся постоянным на устройстве
    • При каждой сессии система определяет пользователя по этому ID
    • Обращается в БД: находит исходную запись о канале установки
    • Атрибуция полностью детерминирована

Структура данных в БД

CREATE TABLE users (
  user_id UUID PRIMARY KEY,
  idfa_or_aaid VARCHAR(50) UNIQUE,  -- постоянный ID
  install_date TIMESTAMP,
  install_channel VARCHAR(50),       -- Facebook, Google, Organic и т.д.
  first_session_date TIMESTAMP,
  --  остальные поля
);

-- При каждой сессии:
-- SELECT install_channel FROM users WHERE idfa_or_aaid = ?;
-- Результат будет ВСЕГДА одинаковый

Физика процесса

День 1 (установка):

  • Клик на рекламу → install referrer = "Facebook"
  • Пользователь устанавливает, но не открывает
  • На сервере: ничего, ждём первой сессии

День 3 (первая сессия):

  • Пользователь открывает приложение
  • SDK обращается к OS, читает install referrer = "Facebook"
  • Отправляет на сервер: {idfa: "xyz...", channel: "Facebook", install_date: "День 1"}
  • БД сохраняет
  • Атрибуция: Facebook

День 40 (вторая сессия):

  • Пользователь открывает приложение снова
  • SDK находит в памяти IDFA = "xyz..."
  • Обращается к БД: "Кто это?"
  • БД возвращает: {channel: "Facebook", install_date: "День 1"}
  • Атрибуция: Facebook (та же!)

Почему это работает?!

1. Install referrer (Android)

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

// В Android:
InstallReferrerClient client = InstallReferrerClient.newBuilder(context).build();
ReferrerDetails response = client.getInstallReferrer();
String referrer = response.getInstallReferrer();
// Результат: "utm_source=facebook&utm_medium=cpc"
// Это значение СОХРАНЯЕТСЯ в ОС и не меняется

2. SKAdNetwork (iOS 14.3+)

Apple использует более сложный механизм, но принцип тот же:

  • После клика Apple запоминает атрибуцию
  • Посылает в приложение через postbackURL
  • Это не меняется со временем

3. Persistent Device ID (IDFA/AAID)

-- За 40 дней IDFA не меняется (если пользователь не переустанавливает):
SELECT user_id, idfa_or_aaid, install_channel, DATEDIFF(DAY, install_date, current_session_date) as days_since_install
FROM users
WHERE idfa_or_aaid = 'ABC123XYZ';

-- Результат:
user_id  | idfa_or_aaid | install_channel | days_since_install
---------|--------------|-----------------|-------------------
uuid123  | ABC123XYZ    | Facebook        | 3
---------|--------------|-----------------|-------------------
uuid123  | ABC123XYZ    | Facebook        | 40  <- ОДНО И ТО ЖЕ!

Исключения и edge cases

Когда атрибуция МОжет потеряться:

  1. Переустановка приложения:

    • Install referrer очищается
    • Если нет интернета при переустановке → новый user_id, потеря атрибуции
    • Решение: использовать универсальные ссылки (деепов) для привязки
  2. Смена устройства:

    • IDFA/AAID привязан к конкретному устройству
    • На новом устройстве → новый user_id
    • Решение: привязка по аккаунту (если есть логин)
  3. Очистка памяти (iOS):

    • На iOS 14+ пользователь может явно очистить IDFA
    • Приложение потеряет информацию
    • Решение: использовать server-side matching по email/аккаунту
  4. Проблемы с интернетом:

    • День 1: установка, но нет интернета
    • День 3: первый запуск с интернетом
    • Обычно SDK хранит локально install referrer → отправляет при появлении интернета
    • Результат: атрибуция всё равно сохранится

Время жизни install referrer

-- В Google Play Services install referrer хранится ДО ПЕРВОГО запуска приложения
SELECT install_date, 'install referrer доступен' FROM users WHERE install_date < NOW() - INTERVAL 90 DAY;

-- Через 90 дней пустого приложения install referrer может очиститься (по политике Google)
-- Но если хотя бы раз открыли → он будет сохранён на сервере

Лучшие практики

1. Сохраняй на сервере

# При первой сессии:
user.install_channel = get_install_referrer()  # Один раз!
user.install_date = now()
db.save(user)

# При последующих сессиях:
# Просто ищем пользователя по IDFA, не пытаемся переопределить канал
user = db.find_by_idfa(request.idfa)
return user.install_channel  # Всегда вернёт исходный канал

2. Документируй исходный канал

CREATE TABLE user_attribution (
  user_id UUID,
  install_date TIMESTAMP,
  install_channel VARCHAR(50),
  source VARCHAR(100),  -- utm_source
  medium VARCHAR(50),   -- utm_medium (cpc, organic, push и т.д.)
  campaign VARCHAR(100), -- utm_campaign
  creative_id VARCHAR(100), -- для конкретного объявления
  PRIMARY KEY (user_id)
);

-- Сохраняй полный UTM, не только канал
-- Для анализа через 40 дней

3. Проверяй данные

-- Вероятный вопрос: а если у пользователя разные каналы в разные дни?
SELECT idfa_or_aaid, COUNT(DISTINCT install_channel) as unique_channels
FROM users
GROUP BY idfa_or_aaid
HAVING COUNT(DISTINCT install_channel) > 1;

-- Если вернулись результаты → есть проблема в трекинге
-- Обычно не должно быть результатов (один IDFA = один канал)

Ответ на конкретный вопрос

День 3: Пользователь откроет приложение → сессия будет отнесена к Facebook ✅ День 40: Пользователь откроет приложение снова → сессия будет отнесена к Facebook ✅

Метка канала привязана к устройству, а не ко времени сессии. Поэтому через 3 дня, 40 дней или даже спустя год (если пользователь не переустанавливал приложение) — канал будет одинаковый.

Это базовый принцип мобильной атрибуции, и он работает во всех ведущих платформах (Firebase, Amplitude, AppsFlyer, Branch и т.д.).

Будет ли относиться метка к каналу установки приложения если пользователь запустит сессию через 3 дня или через 40 дней после установки? | PrepBro