mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-09-13 16:23:08 +00:00
feat(landing): отправлять слаг рекламной кампании при гостевой покупке
Покупка гостем на лендинге не проходит через auth-флоу, в котором кампания привязывается обычно, поэтому клиент, пришедший по рекламной ссылке, не попадал в статистику кампании и не получал её бонус. Слаг уже лежит в localStorage после захода по рекламной ссылке (captureCampaignFromUrl вызывается на любом маршруте) — теперь он уезжает в запрос покупки. Читаем без потребления: гость может позже войти в кабинет, и там привязка должна остаться возможной. Требует поддержки campaign_slug в PurchaseRequest на стороне бота.
This commit is contained in:
@@ -114,6 +114,10 @@ export interface PurchaseRequest {
|
|||||||
yandex_cid?: string;
|
yandex_cid?: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
subid?: string;
|
subid?: string;
|
||||||
|
// Слаг рекламной кампании: без него покупка гостем не попадает в статистику
|
||||||
|
// кампании и не даёт её бонус — auth-флоу, который привязывает кампанию
|
||||||
|
// обычно, на этом пути не срабатывает.
|
||||||
|
campaign_slug?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PurchaseResponse {
|
export interface PurchaseResponse {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import { CheckCircleIcon, CheckIcon, DevicesIcon, DownloadIcon } from '@/compone
|
|||||||
import LanguageSwitcher from '../components/LanguageSwitcher';
|
import LanguageSwitcher from '../components/LanguageSwitcher';
|
||||||
import { cn } from '../lib/utils';
|
import { cn } from '../lib/utils';
|
||||||
import { getApiErrorMessage } from '../utils/api-error';
|
import { getApiErrorMessage } from '../utils/api-error';
|
||||||
|
import { getPendingCampaignSlug } from '../utils/campaign';
|
||||||
import { formatPrice } from '../utils/format';
|
import { formatPrice } from '../utils/format';
|
||||||
import { setFavicon, letterFaviconDataUri, roundedFaviconDataUri } from '../utils/favicon';
|
import { setFavicon, letterFaviconDataUri, roundedFaviconDataUri } from '../utils/favicon';
|
||||||
import { useCurrency } from '../hooks/useCurrency';
|
import { useCurrency } from '../hooks/useCurrency';
|
||||||
@@ -1085,6 +1086,12 @@ export default function QuickPurchase() {
|
|||||||
const subid = sessionStorage.getItem('landing_subid');
|
const subid = sessionStorage.getItem('landing_subid');
|
||||||
if (subid) (data as unknown as Record<string, unknown>).subid = subid;
|
if (subid) (data as unknown as Record<string, unknown>).subid = subid;
|
||||||
|
|
||||||
|
// Слаг рекламной кампании захватил captureCampaignFromUrl() при заходе по
|
||||||
|
// рекламной ссылке. Читаем БЕЗ потребления: гость может позже войти в
|
||||||
|
// кабинет, и там привязка должна остаться возможной.
|
||||||
|
const campaignSlug = getPendingCampaignSlug();
|
||||||
|
if (campaignSlug) data.campaign_slug = campaignSlug;
|
||||||
|
|
||||||
// Fire landing-specific click goal
|
// Fire landing-specific click goal
|
||||||
if (config?.analytics_click_enabled && config?.analytics_click_goal) {
|
if (config?.analytics_click_enabled && config?.analytics_click_goal) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user