Конверсии
Search-to-click, search-to-conversion и атрибуция выручки — как инструментировать и читать конверсионные данные.
Конверсия — что бы ни значил «пользователь сделал нужное действие» в вашем бизнесе: покупка, регистрация, add-to-cart, заполнение формы. AACSearch умеет связывать конверсии с поиском, который к ним привёл — но только если вы это проинструментируете.
Две конверсионные концепции
1. Search-to-click (CTR)
Кликнул ли пользователь хоть один результат? Считается автоматом по search_query + result_click, связанным через queryId.
CTR = clicks / searchesДоп. инструментации не надо. CTR — самый дешёвый health-сигнал: здоровый storefront search обычно держится в 15–40 % в зависимости от каталога.
2. Search-to-conversion
Завершил ли пользователь целевое действие после поиска? Требует эмиттить событие conversion с тем же queryId и (опц.) value.
Conversion rate = conversions / searches
Revenue per search = sum(conversion.value) / searchesИнструментация — ниже.
Инструментация конверсии
conversion — просто очередной track. Используйте sendBeacon на purchase-флоу, чтобы событие ушло при уходе со страницы:
import { trackEvent } from "@aacsearch/client";
trackEvent({
type: "conversion",
conversionType: "purchase",
productId: "sku-123",
queryId: lastSearchQueryId, // привязка к поиску, который привёл сюда
metadata: {
value: 9999, // BigInt minor units (копейки/центы)
currency: "USD",
orderId: "ord_…",
},
});Советы:
- Всегда включайте
queryId, если в сессии раньше был поиск — без него атрибуция невозможна. conversionType— свободная строка, но держите дисциплину:"purchase","signup","add_to_cart","contact","lead". Смешанные таксономии ломают каждый дашборд.metadata.value— BigInt minor units (Инвариант 8), чтобы агрегация выручки шла без float-погрешностей.
В виджете есть хелперы для типичных кейсов — Widget analytics events — но ручной вызов работает с любого storefront-а.
Окно атрибуции
Конверсия атрибутируется последнему поиску в той же sessionId. По умолчанию окно — 30 минут от последнего search_query в сессии. Дальше — конверсия сохраняется, но без атрибуции.
metadata.attributionWindowSec на событии позволяет переопределить окно — удобно для медленных B2B-воронок — но консистентность важнее точности: выберите окно и держитесь.
Атрибуция filter и sort
Конверсии несут и активные фильтры/сортировку:
trackEvent({
type: "conversion",
...,
filters: { brand: ["Sony"], priceRange: [50, 200] },
sort: "_text_match:desc",
});«Какие фильтры приносят выручку?» становится срезом тех же данных. Типичный — conversion rate per filters.brand за 7-дневное окно.
Чтение конверсий
Топ конвертирующих запросов
const top = await orpc.search.topQueries.call({
organizationId,
period: "30d",
orderBy: "conversion_rate_desc",
limit: 20,
});В каждой строке — conversions, conversionRate и revenueKopecks (если metadata.value был выставлен). Смотрите:
- Searches + высокий conversion rate. Champion-запросы. Защитите curations.
- Searches + низкий conversion rate. Пользователь доходит, но не покупает. Обычно цена / merchandising, не поиск.
- Высокий conversion rate + малый объём. Hidden gems. Поднимайте в suggestions / популярных.
Воронка
search → click → product page → add to cart → checkout → purchaseКаждый шаг — событие (result_click, metadata.step = "product_view" | "add_to_cart" | "checkout_start" | "purchase"). Тяните все по queryId, группируйте по step — получаете воронку.
Дашборд показывает базовый search → click → conversion; глубже — кастомный дашборд через analyticsEvents + export.
Revenue per search
Самое полезное единственное число в e-commerce-аналитике:
revenue per search = sum(conversion.metadata.value) / searchesИ числитель, и знаменатель — за один период, лучше rolling 28-day, чтобы сгладить день-недели-эффекты.
Трекайте недельно. Падение на 10 % без видимой причины — обычно curation/synonym, который что-то регрессирует — bisect-те правила в Relevance → Curations за то же окно.
Конверсии на AI-поверхностях
AI answers и Knowledge RAG тоже могут эмиттить конверсии при правильной привязке:
ai_answer→result_click→conversion— та же цепочка, что у обычного поиска.knowledge_askредко имеет коммерческую конверсию, но из feedback-виджета help-center можно эмиттитьconversionсconversionType: "support_resolved"— и измерять долларовую экономию AI per ticket.
Privacy
Конверсии могут нести orderId или transaction ref. Treat как PII для retention:
- Не кладите PII (email, телефон) в
metadata. - Дефолтные 90 дней retention применяются к
conversionтак же, как кsearch_query. - Right-to-be-forgotten: удаление по
anonymousUserIdкаскадит на conversion-строки.
Полный retention/erasure-policy — Data privacy.
Сэмплирование
Для очень высоконагруженных storefront-ов можно сэмплировать не-конверсионные события на стороне SDK — но никогда не сэмплируйте конверсии. Цена недосчитанной конверсии куда выше переучёта impression.
В виджете 1.0 sample rate для конверсий и настраиваемый для visit / widget_open.
Связанные страницы
- Обзор Analytics
- Queries
- No-results
- Widget analytics events
- Billing wallet usage — модель денег копейки/BigInt