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

Как атрибутировать пользователей из разных источников?

2.0 Middle🔥 161 комментариев
#Атрибуция и маркетинг#Метрики продукта

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

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

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

Атрибуция пользователей из разных источников

Атрибуция — это процесс определения источника, через который пользователь пришёл в приложение или сервис. Это критически важная задача для любого аналитика, поскольку позволяет оценить эффективность каналов привлечения трафика, ROI маркетинговых кампаний и принять обоснованные решения о распределении бюджета.

Основные методы атрибуции

1. Классическая linear атрибуция (First-touch, Last-touch)

Самый простой подход — атрибутировать пользователя источнику, который он посетил первым (First-touch) или последним (Last-touch) перед покупкой/действием:

WITH user_journey AS (
  SELECT 
    user_id,
    source,
    timestamp,
    ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY timestamp) as first_visit,
    ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY timestamp DESC) as last_visit
  FROM user_events
)
SELECT 
  user_id,
  CASE WHEN first_visit = 1 THEN source END as first_touch_source,
  CASE WHEN last_visit = 1 THEN source END as last_touch_source
FROM user_journey
WHERE first_visit = 1 OR last_visit = 1

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

2. Multi-touch атрибуция

Распределяет 100% кредита между несколькими источниками в пути пользователя:

  • Linear — равный вес для каждого контакта (25% + 25% + 25% + 25%)
  • Time-decay — больший вес последним контактам (10% + 20% + 30% + 40%)
  • Position-based — 40% первому, 40% последнему, 20% остальным
  • Data-driven — вес определяется машинным обучением на основе исторических данных
WITH conversion_paths AS (
  SELECT 
    user_id,
    source,
    event_timestamp,
    ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY event_timestamp) as touch_position,
    COUNT(*) OVER (PARTITION BY user_id) as total_touches
  FROM events
  WHERE user_id IN (
    SELECT DISTINCT user_id FROM conversions WHERE conversion_date = CURRENT_DATE
  )
)
SELECT 
  source,
  touch_position,
  total_touches,
  CASE 
    WHEN touch_position = 1 OR touch_position = total_touches THEN 0.40
    ELSE 0.20 / (total_touches - 2)
  END as attribution_weight
FROM conversion_paths
ORDER BY user_id, touch_position

3. UTM параметры и pixel tracking

Добавьте utm_source, utm_medium, utm_campaign ко всем внешним ссылкам:

https://myapp.com?utm_source=facebook&utm_medium=cpc&utm_campaign=summer_sale

Также используйте pixel tracking для того, чтобы отслеживать пользователей через социальные сети, email и display сети:

<img src="https://analytics.myapp.com/pixel?user_id={{user_id}}&source=email" />

4. Идентификация пользователей (User ID matching)

Когда пользователь переходит из разных источников, нужно их идентифицировать:

  • Cookie-based — сохраняем анонимный ID в браузере
  • User ID matching — привязка к аккаунту пользователя
  • Cross-device tracking — отслеживание одного пользователя через разные устройства
def attribute_user(user_session):
    """Определить источник пользователя"""
    # Проверяем UTM параметры
    if user_session.utm_source:
        return user_session.utm_source
    
    # Проверяем referrer
    if user_session.referrer:
        return extract_domain(user_session.referrer)
    
    # Проверяем cookie для repeat visits
    if user_session.existing_user_source:
        return user_session.existing_user_source
    
    return "direct"

Практические рекомендации

1. Подготовка данных:

  • Убедитесь, что все источники трафика логируются (organic, paid, social, direct, referral, email)
  • Используйте User ID как основной идентификатор
  • Сохраняйте первоначальный источник в базе данных

2. Выбор модели:

  • Для простых сценариев: last-touch атрибуция
  • Для сложных фаннелей: multi-touch или data-driven
  • Для долгих циклов продаж: time-decay

3. Инструменты:

  • Google Analytics (встроенная атрибуция)
  • Mixpanel, Amplitude (product analytics)
  • AppsFlyer, Adjust (для мобильных)
  • Custom решения с SQL

4. Метрики для мониторинга:

  • CAC (Customer Acquisition Cost) по источникам
  • LTV (Lifetime Value) по источникам
  • Retention rate по каналам
  • Cost per conversion
Как атрибутировать пользователей из разных источников? | PrepBro