feat(ads): конверсия «регистрация» в Google Ads по gclid

Рекламу по обучающим запросам (obsidian как пользоваться, obsidian заметки)
ведём на бесплатный вход в школу, а не на продажу: порог входа нулевой,
а из 19 бесплатных регистраций 6 дошли до покупки (32%).

Чтобы Google видел, какие клики дают студентов:
- User.gclid — идентификатор клика рядом с уже собираемыми UTM;
- gclid прокидывается из URL через page → форму → API (той же цепочкой);
- src/lib/ads-conversion.ts — серверная отправка конверсии 7719084914
  (UPLOAD_CLICKS). Серверно, а не тегом: после регистрации сразу редирект
  в кабинет, тег на странице «спасибо» не сработает — грабля из разбора
  платежей 20260810.

Всё gated по env (GADS_*): нет кредов — тихо не отправляем, регистрацию
не роняем. Миграция идемпотентна: колонка заведена на проде вручную.
This commit is contained in:
2026-08-13 11:25:26 +05:00
parent 20a25695bc
commit 8fc9708233
6 changed files with 119 additions and 3 deletions
@@ -0,0 +1,8 @@
-- Идентификатор клика Google Ads на пользователе.
-- Рекламу по обучающим запросам ведём на бесплатный вход в школу, поэтому
-- конверсию «регистрация» отправляем в Google серверно (src/lib/ads-conversion.ts),
-- а не тегом на странице: после регистрации человека сразу редиректит в кабинет.
--
-- IF NOT EXISTS — колонка уже заведена на проде вручную 20260813, чтобы включить
-- сбор до выката образа. На чистой базе миграция создаст её обычным порядком.
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "gclid" TEXT;