diff --git a/src/api/landings.ts b/src/api/landings.ts index 8b18f9d..207ecc9 100644 --- a/src/api/landings.ts +++ b/src/api/landings.ts @@ -114,6 +114,10 @@ export interface PurchaseRequest { yandex_cid?: string; referrer?: string; subid?: string; + // Слаг рекламной кампании: без него покупка гостем не попадает в статистику + // кампании и не даёт её бонус — auth-флоу, который привязывает кампанию + // обычно, на этом пути не срабатывает. + campaign_slug?: string; } export interface PurchaseResponse { diff --git a/src/pages/QuickPurchase.tsx b/src/pages/QuickPurchase.tsx index ebd236f..da82794 100644 --- a/src/pages/QuickPurchase.tsx +++ b/src/pages/QuickPurchase.tsx @@ -29,6 +29,7 @@ import { CheckCircleIcon, CheckIcon, DevicesIcon, DownloadIcon } from '@/compone import LanguageSwitcher from '../components/LanguageSwitcher'; import { cn } from '../lib/utils'; import { getApiErrorMessage } from '../utils/api-error'; +import { getPendingCampaignSlug } from '../utils/campaign'; import { formatPrice } from '../utils/format'; import { setFavicon, letterFaviconDataUri, roundedFaviconDataUri } from '../utils/favicon'; import { useCurrency } from '../hooks/useCurrency'; @@ -1085,6 +1086,12 @@ export default function QuickPurchase() { const subid = sessionStorage.getItem('landing_subid'); if (subid) (data as unknown as Record).subid = subid; + // Слаг рекламной кампании захватил captureCampaignFromUrl() при заходе по + // рекламной ссылке. Читаем БЕЗ потребления: гость может позже войти в + // кабинет, и там привязка должна остаться возможной. + const campaignSlug = getPendingCampaignSlug(); + if (campaignSlug) data.campaign_slug = campaignSlug; + // Fire landing-specific click goal if (config?.analytics_click_enabled && config?.analytics_click_goal) { try {