SDK Reference
Документация по всем SDK Trektik. Каждый метод описан максимально просто, с настоящими примерами кода, которые работают.
Browser SDK
Работает в браузере. Собирает события, отправляет на сервер пачками. Как почтальон: копит письма и относит их сразу кучей.
Установка
npm install @trektik/browserБыстрый старт
import { init } from '@trektik/browser';
// Одна строка -- и всё работает.
// Автоматически включает: autocapture, heatmap, frustration, guides, surveys.
const trektik = init({
apiKey: 'pk_ваш_ключ',
});
// Записать событие (как в дневнике: "Вася нажал кнопку Купить")
trektik.track('button_click', { button: 'Купить' });
// Сказать кто этот пользователь
trektik.identify('user-123', { name: 'Вася', plan: 'pro' });init({ apiKey: '...', heatmap: false }).Конфигурация
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| apiKey | string | — | Ключ проекта. Обязательный. |
| endpoint | string | https://collect.trektik.ru | Куда отправлять данные. |
| autocapture | boolean | AutocaptureConfig | true | Автоматический сбор кликов, просмотров, форм, скролла. |
| flushInterval | number | 10000 | Как часто отправлять пачку событий (мс). |
| flushSize | number | 30 | Сколько событий копить перед отправкой. |
| sessionTimeout | number | 1800000 | Через сколько мс неактивности начинается новая сессия (30 мин). |
| maxQueueSize | number | 1000 | Максимум событий в очереди. Если больше -- новые не добавляются. |
| debug | boolean | false | Включает логи в консоль. |
Все методы класса Trektik
track()
track(eventName: string, properties?: Record<string, string | number>): voidЗаписывает событие. Как дневник: 'Вася нажал кнопку Купить'. Свойства могут быть строками или числами.
trektik.track('purchase', { product: 'Кроссовки', price: 4990 });identify()
identify(userId: string, properties?: Record<string, string>): voidГоворит SDK кто этот пользователь. Как бейджик с именем. Сохраняет в localStorage и отправляет на сервер.
trektik.identify('user-42', { email: 'vasya@mail.ru', plan: 'pro' });setUserProperties()
setUserProperties(properties: Record<string, string>): voidДобавляет свойства пользователю локально (не отправляет на сервер, в отличие от identify).
trektik.setUserProperties({ theme: 'dark', lang: 'ru' });revenue()
revenue(data: {
amount: number;
currency?: string;
productId?: string;
revenueType?: 'one_time' | 'subscription' | 'refund';
properties?: Record<string, string | number>;
}): voidЗаписывает доход. Как касса в магазине: 'пришло 4990 рублей за кроссовки'. Внутри вызывает track('$revenue', ...).
trektik.revenue({
amount: 4990,
currency: 'RUB',
productId: 'sneakers-01',
revenueType: 'one_time',
});reset()
reset(): voidЗабывает пользователя. Как выход из аккаунта: новый deviceId, новая сессия, userId = null.
// Когда пользователь вышел из аккаунта
trektik.reset();optOut() / optIn()
optOut(): void
optIn(): voidoptOut() -- пользователь сказал 'не следите за мной'. Все события перестают записываться. optIn() -- разрешил обратно.
// Пользователь отказался от аналитики
trektik.optOut();
// Передумал
trektik.optIn();getDeviceId() / getUserId() / getSessionId()
getDeviceId(): string
getUserId(): string | null
getSessionId(): stringВозвращают текущие идентификаторы. Полезно для отладки или интеграций.
console.log(trektik.getDeviceId()); // "a1b2c3d4-..."
console.log(trektik.getUserId()); // "user-42" или null
console.log(trektik.getSessionId()); // "e5f6g7h8-..."flush()
flush(): Promise<void>Отправляет все накопленные события прямо сейчас. Обычно не нужно вызывать вручную -- SDK делает это автоматически.
destroy()
destroy(): voidОстанавливает SDK: отменяет таймеры, отправляет остатки. Вызывайте когда SDK больше не нужен.
TrektikReplay -- запись сессий
Записывает видео сессии пользователя (через rrweb). Как камера наблюдения в магазине -- можно потом посмотреть что делал пользователь.
import { Trektik, TrektikReplay } from '@trektik/browser';
const sdk = new Trektik();
sdk.init({ apiKey: 'pk_...' });
const replay = new TrektikReplay(sdk, {
samplingRate: 50, // записывать 50% сессий
maskTextInput: true, // скрывать что вводят в поля
maxDuration: 1800000, // максимум 30 минут
});
await replay.start(); // начать запись
replay.isRecording(); // true/false -- идёт ли запись?
replay.stop(); // остановить запись| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| samplingRate | number | 100 | Процент сессий для записи (0-100). |
| flushInterval | number | 10000 | Как часто отправлять чанки записи (мс). |
| maxEventsPerChunk | number | 50 | Максимум DOM-событий в одном чанке. |
| maxDuration | number | 1800000 | Максимальная длительность записи (мс). По умолчанию 30 минут. |
| maskTextInput | boolean | true | Скрывать текст в полях ввода. |
| maskAllText | boolean | false | Скрывать весь текст на странице. |
| blockSelector | string | "" | CSS-селектор элементов, которые не записывать. |
| compress | boolean | true | Сжимать чанки gzip (если браузер поддерживает). |
TrektikHeatmap -- тепловые карты
Собирает данные для тепловых карт: где кликают, как далеко скроллят, на какие блоки смотрят. Как отпечатки пальцев на витрине -- видно куда все тыкают.
import { TrektikHeatmap } from '@trektik/browser';
const heatmap = new TrektikHeatmap(
{ apiKey: 'pk_...' },
{ clicks: true, scroll: true, attention: true }
);
heatmap.start(); // начать сбор
heatmap.stop(); // остановить и отправить данные
heatmap.flush(); // отправить накопленное прямо сейчас| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| clicks | boolean | true | Отслеживать клики (координаты, CSS-селектор). |
| scroll | boolean | true | Отслеживать глубину прокрутки (25%, 50%, 75%, 100%). |
| attention | boolean | true | Отслеживать время просмотра блоков (IntersectionObserver). |
| flushInterval | number | 5000 | Интервал отправки данных (мс). |
| flushSize | number | 50 | Максимум событий в пачке. |
data-trektik-section="hero" на блоки, которые хотите отслеживать. Без атрибутов SDK будет наблюдать за стандартными тегами: section, article, main, header, footer.TrektikFrustration -- обнаружение фрустрации
Ловит моменты когда пользователь злится: яростно кликает, кликает в пустоту, клик вызывает ошибку, хаотично водит мышкой. Как детектор настроения.
import { TrektikFrustration } from '@trektik/browser';
const frustration = new TrektikFrustration(
trektik.track.bind(trektik), // передаём функцию track
{
rageClicks: true, // 3+ клика за 1 секунду
deadClicks: true, // клик без реакции (нет изменений DOM за 500мс)
errorClicks: true, // клик, после которого ошибка JS за 2с
thrashedCursor: true, // хаотичные движения мышью
}
);
frustration.start();
frustration.stop();$frustration с типом: rage_click, dead_click, error_click, thrashed_cursor.TrektikGuides -- подсказки в приложении
Показывает пользователям подсказки: тултипы, баннеры, модалки, выезжающие панели. Как помощник, который говорит "Нажми сюда!". Подсказки настраиваются в дашборде и загружаются автоматически.
import { TrektikGuides } from '@trektik/browser';
const guides = new TrektikGuides(
{ apiKey: 'pk_...' },
{ pollInterval: 60000 } // проверять новые гайды каждую минуту
);
guides.start(); // начать показ
guides.stop(); // убрать все гайды и прекратить| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| pollInterval | number | 60000 | Как часто проверять новые подсказки (мс). |
| container | HTMLElement | document.body | Контейнер для рендеринга подсказок. |
tooltip (привязан к элементу), banner (вверху/внизу страницы), modal (окно по центру), slideout (выезжающая панель слева/справа).TrektikSurveys -- опросы
Показывает опросы прямо в приложении. Как официант, который спрашивает "Вам всё понравилось?". Настраиваются в дашборде, загружаются автоматически.
import { TrektikSurveys } from '@trektik/browser';
const surveys = new TrektikSurveys(
{ apiKey: 'pk_...' },
{ pollInterval: 60000 }
);
surveys.start(); // начать показ опросов
surveys.stop(); // убрать текущий опрос и прекратить| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| pollInterval | number | 60000 | Как часто проверять новые опросы (мс). |
| container | HTMLElement | document.body | Контейнер для рендеринга опросов. |
nps (шкала 0-10), csat (звёздочки 1-5), open_ended (свободный текст), multiple_choice (выбор варианта).React SDK
Обёртка для React-приложений. Как розетка: включаешь Provider один раз, а потом в любом компоненте берёшь хук useTraektik и пользуешься.
Установка
npm install @trektik/reactБыстрый старт
import { TrektikProvider, TrackPageView } from '@trektik/react';
export default function RootLayout({ children }) {
return (
<TrektikProvider apiKey="pk_ваш_ключ">
<TrackPageView />
{children}
</TrektikProvider>
);
}import { useTraektik } from '@trektik/react';
function BuyButton() {
const { track, identify } = useTraektik();
return (
<button onClick={() => track('buy_click', { item: 'Кроссовки' })}>
Купить
</button>
);
}TrektikProvider -- props
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| apiKey | string | — | Ключ проекта. Обязательный. |
| endpoint | string | https://collect.trektik.ru | Куда отправлять данные. |
| debug | boolean | false | Логи в консоль. |
| trackPageViews | boolean | true | Автоматически трекать просмотр страницы при монтировании. |
useTraektik() -- что возвращает
track()
track(eventName: string, properties?: Record<string, string | number>): voidЗаписать событие.
identify()
identify(userId: string, properties?: Record<string, string>): voidСказать кто пользователь.
reset()
reset(): voidЗабыть пользователя (выход из аккаунта).
TrackPageView -- компонент
Автоматически трекает просмотры страниц в Next.js App Router. Перехватывает pushState/replaceState/popstate и отправляет $pageview. Поставьте его внутрь TrektikProvider с trackPageViews={false}.
Node.js SDK
Серверный SDK для Node.js. Как журнал в бухгалтерии: записывает события от имени пользователей на сервере. Автоматически батчит и ретраит.
Установка
npm install @trektik/nodeБыстрый старт
import { Trektik } from '@trektik/node';
// На сервере userId передаётся вручную (SDK не знает кто зашёл).
const trektik = new Trektik({ apiKey: 'sk_ваш_ключ' });
trektik.track('user-123', 'purchase', { product: 'Кроссовки', price: 4990 });
// При завершении процесса -- отправить всё
await trektik.shutdown();Конфигурация
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| apiKey | string | — | Серверный ключ проекта. Обязательный. |
| endpoint | string | https://collect.trektik.ru | Адрес API. |
| flushInterval | number | 5000 | Интервал отправки пачки (мс). |
| flushSize | number | 100 | Размер пачки. |
| maxQueueSize | number | 10000 | Максимум событий в очереди. |
| debug | boolean | false | Логирование. |
| flagPollInterval | number | 30000 | Интервал проверки фича-флагов (мс). |
Методы
track()
track(userId: string, eventName: string, properties?: Record<string, string | number>): voidЗаписать событие от имени пользователя. На сервере всегда нужно передавать userId.
trektik.track('user-42', 'page_view', { page: '/catalog' });identify()
identify(userId: string, properties: Record<string, string>): Promise<void>Связать свойства с пользователем (имя, email, тариф).
await trektik.identify('user-42', { email: 'vasya@mail.ru', plan: 'pro' });trackRevenue()
trackRevenue(userId: string, amount: number, properties?: Record<string, string | number>): voidЗаписать доход. Внутри вызывает track(userId, '$revenue', { $amount: amount, ... }).
trektik.trackRevenue('user-42', 4990, { currency: 'RUB' });getFlag()
getFlag(userId: string, flagKey: string): Promise<unknown>Получить значение фича-флага. Возвращает значение флага или false если не найден.
const showBanner = await trektik.getFlag('user-42', 'new_banner');
if (showBanner) { /* показать баннер */ }getFlagDetail()
getFlagDetail(userId: string, flagKey: string): Promise<FlagEvaluateResponse>То же что getFlag, но возвращает полный объект: { flag_key, value, variant }.
setProjectId()
setProjectId(id: number): thisУстановить ID проекта (нужно для фича-флагов).
flush()
flush(): Promise<void>Отправить все накопленные события сейчас.
shutdown()
shutdown(): Promise<void>Завершить работу: отправить все события, остановить таймеры. После этого SDK не работает.
await trektik.shutdown() при завершении процесса. SDK сам ловит SIGTERM/SIGINT, но лучше вызвать явно.Python SDK
Серверный SDK для Python. Потокобезопасный, с поддержкой async. Как секретарь: принимает записки (события) и отправляет их пачками в фоне.
Установка
pip install trektikБыстрый старт
from trektik import Trektik
trektik = Trektik(api_key="sk_ваш_ключ")
trektik.track("user-123", "purchase", {"product": "Кроссовки", "price": 4990})
trektik.identify("user-123", {"email": "vasya@mail.ru"})
# При завершении
trektik.shutdown()Методы
track()
track(user_id: str, event_name: str, properties: dict | None = None) -> NoneЗаписать событие. Строки и числа в properties разделяются автоматически.
trektik.track("user-42", "button_click", {"button": "signup", "page": "/home"})track_async()
async track_async(user_id: str, event_name: str, properties: dict | None = None) -> NoneАсинхронная версия track(). Внутри вызывает обычный track().
identify() / identify_async()
identify(user_id: str, properties: dict | None = None) -> None
async identify_async(user_id: str, properties: dict | None = None) -> NoneСвязать свойства с пользователем.
trektik.identify("user-42", {"plan": "enterprise", "company": "Acme"})track_revenue()
track_revenue(user_id: str, amount: float, properties: dict | None = None) -> NoneЗаписать доход. Внутри вызывает track(user_id, '$revenue', {'$amount': amount, ...}).
trektik.track_revenue("user-42", 4990.0, {"currency": "RUB"})get_flag() / get_flag_async()
get_flag(user_id: str, flag_key: str) -> Any
async get_flag_async(user_id: str, flag_key: str) -> AnyПолучить значение фича-флага. Возвращает значение или False.
if trektik.get_flag("user-42", "new_checkout"):
show_new_checkout()get_flag_detail()
get_flag_detail(user_id: str, flag_key: str) -> FlagEvaluateResponseПолный ответ с flag_key, value, variant.
set_project_id()
set_project_id(project_id: int) -> TrektikУстановить ID проекта для фича-флагов.
flush() / flush_async()
flush() -> None
async flush_async() -> NoneОтправить все накопленные события.
shutdown()
shutdown() -> NoneЗавершить работу. Вызывается автоматически через atexit, но лучше вызвать явно.
Go SDK
СкороСерверный SDK для Go. События складываются в очередь, горутина отправляет их пачками. Встроенный поллер фича-флагов.
Java/Kotlin SDK
СкороСерверный SDK для JVM (Java и Kotlin). Потокобезопасный, отправляет события пачками из фоновых потоков.
iOS SDK (Swift)
СкороSDK для iOS-приложений. Синглтон, автотрекинг жизненного цикла, оффлайн-очередь событий.
Android SDK (Kotlin)
СкороSDK для Android. Синглтон, автотрекинг жизненного цикла через ProcessLifecycleOwner, оффлайн-очередь.
React Native SDK
SDK для React Native. Как браузерный, но для мобильных приложений. Хранит очередь в AsyncStorage, трекает AppState (свернул/развернул).
Установка
npm install @trektik/react-nativeБыстрый старт
import { TrektikRN } from '@trektik/react-native';
const client = new TrektikRN();
// init -- async, нужно вызвать один раз
await client.init({ apiKey: 'pk_ваш_ключ' });
client.track('button_pressed', { label: 'Sign Up' });
client.identify('user-123', { email: 'vasya@mail.ru' });Конфигурация
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| apiKey | string | — | Ключ проекта. Обязательный. |
| endpoint | string | https://collect.trektik.ru | Адрес API. |
| flushInterval | number | 30000 | Интервал отправки (мс). Больше чем в браузере -- экономит батарею. |
| flushSize | number | 20 | Размер пачки. |
| sessionTimeout | number | 1800000 | Таймаут сессии (мс). |
| maxQueueSize | number | 1000 | Максимум событий. |
| autocapture | boolean | AutocaptureConfig | true | Автотрекинг app_open, app_foreground, app_background. |
| debug | boolean | false | Логи в консоль. |
Методы
init()
async init(config: TrektikRNConfig): Promise<void>Инициализировать SDK. Восстанавливает deviceId и очередь из AsyncStorage.
track()
track(eventName: string, properties?: Properties): voidЗаписать событие. Автоматически добавляет OS, размер экрана.
identify()
identify(userId: string, properties?: Record<string, string>): voidСвязать пользователя.
revenue()
revenue(amount: number, currency?: string, properties?: Properties): voidЗаписать доход. По умолчанию currency = 'USD'.
client.revenue(4990, 'RUB', { product: 'sneakers' });reset()
async reset(): Promise<void>Забыть пользователя. Новый deviceId, sessionId, userId = null.
flush()
async flush(): Promise<void>Отправить все события. При ошибке -- возвращает в очередь и сохраняет в AsyncStorage.
destroy()
destroy(): voidОстановить таймеры и слушатели AppState.
Flutter SDK
СкороSDK для Flutter. Синглтон, SharedPreferences для оффлайн-очереди, NavigatorObserver для автотрекинга экранов.