Как посчитать Paid Traffic в SQL
Содержание:
Зачем Paid Traffic
Маркетинг bombs ads: «трафик +200%». Но CPC вырос с 10 до 30 рублей. ROAS — упал. Paid traffic — двусторонний меч: легко растёт, но дорого. Знание метрик помогает оптимизировать.
Определение
Paid traffic — посещения, оплаченные через ads (Yandex.Direct, Google Ads, ВКонтакте Ads и т.д.).
В UTM: utm_medium=cpc / paid / display / social.
Базовый расчёт
SELECT
DATE_TRUNC('month', session_date) AS month,
COUNT(DISTINCT visitor_id) AS paid_visitors,
COUNT(*) AS paid_sessions
FROM sessions
WHERE medium IN ('cpc', 'paid', 'display', 'social-paid')
AND session_date >= '2026-01-01'
GROUP BY 1
ORDER BY 1;CPC
WITH spend AS (
SELECT
DATE_TRUNC('month', DATE) AS month,
SUM(spend) AS total_spend,
SUM(clicks) AS total_clicks
FROM ad_spend
WHERE DATE >= '2026-01-01'
GROUP BY 1
)
SELECT
month,
total_spend,
total_clicks,
total_spend / NULLIF(total_clicks, 0) AS cpc
FROM spend
ORDER BY month;CPC растёт по мере конкуренции / увеличения budget.
По каналам
WITH paid_stats AS (
SELECT
utm_source,
utm_campaign,
COUNT(DISTINCT visitor_id) AS visitors,
COUNT(*) AS sessions
FROM sessions
WHERE medium = 'cpc'
AND session_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY utm_source, utm_campaign
),
ad_data AS (
SELECT
utm_source,
utm_campaign,
SUM(spend) AS spend,
SUM(clicks) AS clicks
FROM ad_spend
WHERE DATE >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY utm_source, utm_campaign
)
SELECT
p.utm_source,
p.utm_campaign,
p.visitors,
p.sessions,
a.spend,
a.spend / NULLIF(p.sessions, 0) AS cost_per_session,
a.spend / NULLIF(a.clicks, 0) AS cpc
FROM paid_stats p
LEFT JOIN ad_data a USING (utm_source, utm_campaign)
ORDER BY a.spend DESC NULLS LAST;Частые ошибки
Ошибка 1. UTM-параметры losing. Юзер кликнул paid, потом organic — последний касается. UTM может быть lost. Track first-touch.
Ошибка 2. Bot traffic в paid. Click-fraud — fake clicks. CPC выше за реальный traffic, чем измеренный.
Ошибка 3. Compare paid и organic CR напрямую. Paid intent ниже. CR ожидаемо ниже. Сравнивайте within-channel trends.
Ошибка 4. Включить branded paid в organic анализ. Branded paid (search «company name») — часто часть organic strategy. Сегментируйте.
Ошибка 5. CPC vs CPM vs CPA. Разные модели. CPC — pay per click. CPM — per 1000 impressions. CPA — per action.
Связанные темы
- Как посчитать ROAS в SQL
- Как посчитать CAC в SQL
- Как посчитать organic traffic в SQL
- Как посчитать конверсию в SQL
FAQ
Какой CPC считается ok?
Зависит от индустрии. B2C: 5-30 руб (РФ). Финтех B2C: 50-200 руб. B2B SaaS: 200-1000+ руб.
Paid share от total — норма?
В growth-mode стартапа: 50-70% paid. В зрелом бизнесе: 30-50%.
CPC растёт — что делать?
- Optimize bidding. 2) Better targeting. 3) Improve ad copy / quality score. 4) Найдите cheaper channels.
Paid traffic CR ниже organic — норма?
Да. Paid intent ниже. Optimize landing pages, ad-page relevance.
Tracking — UTM или fingerprint?
UTM — standard. Fingerprint — дополнение для cross-device.