AACsearch
Аналитика

Конверсии

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.

Самое полезное единственное число в e-commerce-аналитике:

revenue per search = sum(conversion.metadata.value) / searches

И числитель, и знаменатель — за один период, лучше rolling 28-day, чтобы сгладить день-недели-эффекты.

Трекайте недельно. Падение на 10 % без видимой причины — обычно curation/synonym, который что-то регрессирует — bisect-те правила в RelevanceCurations за то же окно.

Конверсии на AI-поверхностях

AI answers и Knowledge RAG тоже могут эмиттить конверсии при правильной привязке:

  • ai_answerresult_clickconversion — та же цепочка, что у обычного поиска.
  • 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.

Связанные страницы

On this page