Құжаттамаға өту

Web SDK

Kixo Web SDK бір жолдық embed арқылы clicks, page views, sessions, errors, scroll depth, web vitals, rage-clicks, dead-clicks және heatmap деректерін автоматты түрде жинайды. Network request monitoring opt-in параметрі ретінде қолжетімді. Native ES module ретінде таратылады және заманауи браузерлерде жұмыс істейді.

Орнату

Script тегі (CDN)

Үзіндіні жабылатын </head> тегінің алдына қосыңыз. type="module" мәніне назар аударыңыз — SDK ES модулі болғандықтан, бұл міндетті. Session replay коды бөлек жүктеледі: replay қосылғаннан кейін ғана нұсқасы сәйкес recorder chunk тартылады. Соның арқасында replay өшірулі кезде негізгі bundle шағын болып қалады.

html
<script
  type="module"
  src="https://cdn.kixo.io/kixo.min.js?project_id=YOUR_PROJECT_ID&api_key=YOUR_API_KEY">
</script>

Ескерту

SDK script URL-ден project_id және api_key мәндерін оқып, өзін инициализациялайды. Параметрлерді қолданба кодында баптағыңыз келсе, URL параметрлерін алып тастап, оның орнына Kixo.init({...}) шақырыңыз — модуль жүктелгеннен кейін жаһандық Kixo объектісі қолжетімді болады.

html
<script type="module" src="https://cdn.kixo.io/kixo.min.js"></script>
<script type="module">
  Kixo.init({
    projectId: 'YOUR_PROJECT_ID',
    apiKey:    'YOUR_API_KEY',
  });
</script>

npm

Параметрлерді script URL арқылы емес, қолданба кодында баптағыңыз келсе, осыны пайдаланыңыз. Ол CDN embed-тегідей Kixo API-ын береді.

bash
npm install @kixo.io/web
js
import Kixo from '@kixo.io/web';

Kixo.init({
  projectId: 'YOUR_PROJECT_ID',
  apiKey: 'YOUR_API_KEY',
});

No-Code платформалары

Егер Lovable, Bolt, v0 немесе Replit сияқты AI-powered builder қолданып жатсаңыз, script-tag үзіндісін builder ішіндегі chat не code-injection баптауларына тікелей қойыңыз. Көп builder сайттың <head> бөлігіне скрипт қосуды қолдайды.

Баптау

Екі жолдық embed төмендегі жергілікті analytics әдепкі мәндерін қолданады. Request monitoring әлі де opt-in күйінде қалады. Session replay әдейі Kixo.init() ішіне кірмейді: оны қосу, sampling, privacy, duration және түсіру баптаулары тек project dashboard арқылы басқарылады.

js
Kixo.init({
  projectId: 'YOUR_PROJECT_ID',     // required
  apiKey:    'YOUR_API_KEY',         // required

  // Per-tracker toggles — all default to true except network.
  autoTrack: {
    pageViews:   true,
    clicks:      true,
    scrollDepth: true,
    sessions:    true,
    forms:       true,
    network:     false,     // opt in only when you need request telemetry
    errors:      true,
    performance: true,
    rageClicks:  true,
    deadClicks:  true,
  },

  // Heatmap recording (clicks + scroll on by default; mouse-move opt-in).
  heatmap: {
    enabled: true,
    clicks:  true,
    moves:   false,
    scroll:  true,
  },

});

Ескерту

Жоба басқаратын конфигурация. Dashboard баптауларында жергілікті аналитика трекерлерін өшіруге болады. Replay үшін жергілікті деңгейде қосудың жалауы мүлде жоқ: оныSettings → Session replay ішінде баптайсыз, ал SDK конфигурациясын келесі жаңартқанда жобаның соңғы саясатын қолданады.

Автоматты тіркелетін оқиғалар

Әдепкі конфигурацияда Kixo мына оқиғаларды қосымша кодсыз автоматты түрде жинайды:

  • page_view — әр навигация (бастапқы жүктеу + SPA маршруттарының ауысуы)
  • session_start / session_end
  • click — элемент селекторы бойынша барлық басу әрекеттері
  • scroll_depth — 25 / 50 / 75 / 100 % шектері
  • rage_click — бір элементті қайта-қайта басу
  • dead_click — интерактивті емес элементтерге басу
  • error — ұсталмаған JavaScript қателері және promise қабылданбауы
  • performance — бет жүктелуі және Web Vitals метрикалары (LCP, FCP, FID, CLS, INP, TTFB)
  • network_request — network tracking қосулы болса, сұраулар уақыты туралы қосымша дерек
  • heatmap_click / scroll — heatmap деректері

Толық тізімді Оқиғалар анықтамалығы бөлімінен қараңыз.

Custom оқиғалар

Kixo.track()

Қажет болса, properties-пен бірге custom оқиға жіберіңіз.

js
Kixo.track('purchase_completed', {
  product_id: 'SKU-123',
  amount: 49.99,
  currency: 'USD',
});

Типтелген оқиға көмекшілері

Kixo атауы бойынша танитын оқиғалар үшін Kixo.track() үстіндегі ыңғайлы қабат (purchase, signup, subscribe_start, trial_start, cancel, upgrade, activation, share, invite). Typed wrapper-лер properties-ті compile-time кезінде тексереді және кілт атаулары үшін бір ғана шындық көзін береді — backend-тегі standard-event detector атауларды дәлме-дәл салыстырады.

js
Kixo.trackPurchase({ amount: 49.99, currency: 'USD', productId: 'pro_yearly' });

Kixo.trackSubscriptionStart({
  plan: 'pro',
  amount: 9.99,
  currency: 'USD',
  interval: 'month',
});

Kixo.trackSignup({ method: 'google' });
Kixo.trackTrialStart({ plan: 'pro', days: 14 });
Kixo.trackCancel({ plan: 'pro', reason: 'too_expensive' });
Kixo.trackUpgrade({ fromPlan: 'free', toPlan: 'pro' });
Kixo.trackActivation({ event: 'first_post_published' });
Kixo.trackShare({ channel: 'twitter', contentId: 'post_123' });
Kixo.trackInvite({ channel: 'email', recipientCount: 5 });

Kixo.identify()

Ағымдағы құрылғыны белгілі пайдаланушымен байланыстырыңыз. Резервтелген стандарт property кілттері $ префиксімен беріледі (Mixpanel дәстүрі), сондықтан олар өзіңіздің custom trait-теріңізден бөлек тұрады және dashboard-тағы профиль бағандарына шығарылады — толық 37 кілт тізімі үшін төмендегі Стандартты property каталогы бөлімін қараңыз.

js
Kixo.identify('user_123', {
  $email:  'jane@example.com',     // identity
  $name:   'Jane Doe',              // identity
  $plan:   'pro',                   // subscription pack
  $lifetime_orders: 12,             // e-commerce pack
  signup_source: 'twitter_ad',      // custom trait
});

Kixo.setUserProperty() — пайдаланушыны сегменттеуге белгілеу

Ағымдағы пайдаланушыға еркін key/value атрибуттарын тіркеңіз. Мәндер жол, сан немесе логикалық мәндер болуы мүмкін — кейін сегменттерде, email науқандарында немесе chat сұрауларында нысаналау үшін пайдаланушыны тег етудің ең таза жолы — boolean түрі.

js
// Tag a user as subscribed — instant segment "Subscribed users"
Kixo.setUserProperty('subscribe', true);

// Mark a VIP — used in campaign targeting + chat ("show me VIPs")
Kixo.setUserProperty('vip', true);

// Numeric and string values work too
Kixo.setUserProperty('plan_tier', 'enterprise');
Kixo.setUserProperty('lifetime_orders', 42);

// Bulk-set
Kixo.setUserProperties({ subscribe: true, plan_tier: 'enterprise' });

Properties қайта жүктеулер арасында localStorage ішінде сақталады және кейінгі оқиғаларға автоматты түрде қосылады. Оларды chat-та "subscribe мәні true болатын пайдаланушыларға email науқанын құр" сияқты prompt-пен пайдаланыңыз — Kixo сегментті құрып, шаблон нобайын автоматты түрде дайындайды. Kixo.reset() кезінде тазартылады.

Kixo.group()

Пайдаланушыны компаниямен не ұйыммен байланыстырыңыз.

js
Kixo.group('company_456', {
  name: 'Acme Inc',
  plan: 'enterprise',
});

Kixo.reset()

Identity, super-properties және сақталған кезекті тазалаңыз. Кейінгі оқиғалар алдыңғы пайдаланушыға телінбеуі үшін мұны logout кезінде шақырыңыз.

js
Kixo.reset();

Стандартты property каталогы

Резервтелген property кілттері $ префиксімен беріледі, сондықтан олар custom traits-пен бір атау кеңістігінде қақтығыспайды. Kixo каталогында 3 әмбебап pack (identity, geo, lifecycle) және 5 B2B салалық pack (subscription, e-commerce, media, marketplace, loyalty) бойынша 37 кілт бар. Өніміңізге сәйкес келетіндерін ғана орнатыңыз — дашборд соған бейімделіп, тек толтырылған pack-терді көрсетеді.

Идентификация

Әрдайым қажет. Профиль тақырыбындағы бағандарды орнатады.

КілтТүріСипаттама
$emailжолНегізгі email, көбіне identity stitching үшін біріктіру кілті ретінде қолданылады.
$phoneжолE.164 форматындағы телефон нөмірі.
$nameжолКөрсетілетін толық аты.
$first_nameжолАты.
$last_nameжолТегі.
$avatar_urlжолПайдаланушының аватар суретіне апаратын толық URL.

Гео

Географиялық контекст.

КілтТүріСипаттама
$countryжолISO 3166 ел коды.
$cityжолҚала атауы.
$regionжолШтат немесе провинция.
$timezoneжолAmerica/Los_Angeles сияқты IANA уақыт белдеуі.
$languageжолen немесе ru-RU сияқты IETF тегі.
$localeжолТолық locale идентификаторы.

Өмірлік цикл

Оларды қашан көрдік.

КілтТүріСипаттама
$createdISO8601Тіркелу немесе аккаунт ашу уақыты.
$last_seenISO8601Соңғы белсенділік уақыты.

Жазылым

Өніміңізде тарифтер болса, орнатыңыз.

КілтТүріСипаттама
$planжолДеңгей slug-ы — free, pro, enterprise.
$subscription_statusжолactive / trial / cancelled / past_due.
$trial_endsISO8601Ағымдағы сынақ мерзімі аяқталатын уақыт.
$mrrсанАккаунт валютасындағы айлық қайталанатын табыс.
$subscription_startedISO8601Ағымдағы жазылым басталған уақыт.

E-commerce

Өнім сатсаңыз, орнатыңыз.

КілтТүріСипаттама
$lifetime_ordersсанАяқталған тапсырыстар саны.
$lifetime_revenueсанЖалпы шығын.
$aovсанТапсырыстың орташа құны.
$last_purchaseISO8601Ең соңғы сәтті сатып алу.
$first_purchaseISO8601Алғашқы сәтті сатып алу.
$cart_abandoned_countсанСебетті тастап кетудің жалпы саны.

Медиа

Контент жарияласаңыз, орнатыңыз.

КілтТүріСипаттама
$content_tierжолfree / premium / paid.
$subscribed_categoriesCSV жолы немесе массивПайдаланушы жазылған санаттар.
$watch_time_totalсанЖалпы қарау уақыты, секундпен.
$last_playedISO8601Ойнатудың ең соңғы басталу уақыты.

Маркетплейс

Екіжақты платформа болсаңыз, орнатыңыз.

КілтТүріСипаттама
$seller_tierжолСатушы тарапындағы деңгей slug-ы.
$buyer_tierжолСатып алушы тарапындағы деңгейдің slug-ы.
$listings_countсанПайдаланушыға тиесілі белсенді листингтер.
$reviews_countсанПайдаланушы алған пікірлер саны.
$verifiedлогикалық мәнKYC күйі.

Адалдық

Белсенділік пен сыйақы бағдарламалары болса, орнатыңыз.

КілтТүріСипаттама
$loyalty_pointsсанҚолдануға болатын ұпайлардың ағымдағы қалдығы.
$vip_levelжолVIP деңгейінің slug-ы.
$referral_countсанОсы пайдаланушыға тиесілі сәтті жолдамалар саны.

Кеңес

Өзіңіздің үлгіңізді көрмей тұрсыз ба? Custom trait-тер үшін жай кілттерді қолданыңыз. Олар dashboard-тағы Custom Traits панелінде көрінеді де, профиль бағандарын былғамайды. Жоғарыдағы 5 тік pack — B2B өнімдерінде жиі кездесетін үлгілерге негізделген жорамалдар; клиентке тән атаулар (мысалы, shipping_plan) жалаң кілт күйінде қалады.

Super-properties

Сыртқа жіберілетін әр оқиғаға автоматты түрде қосылатын, сессияға тән key/value жұптары. Олар identify() traits-тен өзгеше: traits identity-ді сипаттайды, ал super-properties сессия контекстін береді — белсенді A/B нұсқасы, build түрі, қосылған feature flag-тер, серіктестік ref. Қайта жүктеулер арасында localStorage ішінде сақталады, reset() кезінде тазартылады. Кілт қақтығысса, track() ішіндегі оқиғаға тән properties әрқашан басым болады.

js
Kixo.setSuperProperty('build_flavor', 'beta');
Kixo.setSuperProperties({ ab_variant: 'B', referrer_campaign: 'autumn-launch' });

// Sugar for A/B tracking — keys as 'experiment_<id>' so backend
// can run direct WHERE filters on experiment analysis.
Kixo.setExperimentVariant('checkout_v2', 'variant_a');

Kixo.unsetSuperProperty('build_flavor');
Kixo.clearSuperProperties();

Жылу карталары

Heatmap жазу әдепкіде қосулы: шертулер мен scroll тереңдігі екеуі де 100 % үлгімен жиналады. Тінтуір қозғалысы opt-in режимінде жұмыс істейді (көлемі үлкен; қажет болса, әр бет үшін бөлек қосыңыз).

js
Kixo.init({
  projectId: 'YOUR_PROJECT_ID',
  apiKey:    'YOUR_API_KEY',
  heatmap:   { moves: true },  // turn on full-resolution mouse-move
});

Сессияны қайта ойнату

Session replay rrweb арқылы DOM снапшоты мен өзгерістер ағынын жазады. Соның арқасында дашборд бетті оқиғалар ізімен қатар, таймлайнда жылжытып көруге болатын сессия ретінде қайта құрастырады. Бұл экран видеосын жазу емес, DOM-ды қайта құрастыру. Replay Әдепкіде өшірулі. Оны жоба үшін Басқару тақтасы → Баптаулар → Сессияны қайта ойнату бөлімінде қосыңыз; қолданба кодын өзгерту қажет емес. Replay қосылғаннан кейін recorder нұсқасы сәйкес келетін бөлек chunk-тен жүктеледі.

Ескерту

Негізгі шындық көзі — дашборд. Enable replay, Mask inputs, ең ұзақ ұзақтығын және кеңейтілген capture басқару тетіктерін сол жерден орнатыңыз. captureOnCellular да iOS және Android үшін сол жоба саясатының ішінде сақталады; браузерлер Wi‑Fi мен ұялы желіні сенімді ажырата алмайды, сондықтан Web SDK бұл тек native ортаға тән шектеуді хабарлап, елемейді.

Не бүркемеленеді

Replay-ді қауіпсіз қосуға болатындай етіп жасадық. Сезімтал контентті әдепкіде қосулы үш қорғаныс қабаты қорғайды:

  • Енгізу өрістерін бүркемелеу жоба деңгейінде басқарылады — Dashboard-тағы Енгізу өрістерін бүркемелеу параметрі қосулы кезде (әдепкі күйі), терілген таңбалар браузерден шықпай тұрып жұлдызшаларға ауыстырылады. Оны тек нақты, сезімталдығы төмен қажеттілік үшін өшіріңіз; identity, authentication және payment өрістері бәрібір бүркемеленеді.
  • data-kixo-mask атрибуты элементті және оның бүкіл ішкі тармағын бұғаттайды. Оны жеке не құпия дерек болуы мүмкін кез келген контейнерге қойыңыз; replay-де сол тармақтың мәтіні мен DOM мазмұнының орнына placeholder ғана қалады.
    html
    <div data-kixo-mask>
      <!-- payment fields, account numbers, private messages… -->
      <!-- captured as a blank placeholder, never as pixels -->
    </div>
  • Сезімтал өрістер әрдайым бүркемеленеді — password, card number, CVV, SSN, secret немесе token сияқты көрінетін енгізу өрістері (type, name, id немесе autocomplete бойынша) жобаңыздағы Енгізу өрістерін бүркемелеу параметрі өшірулі болса да бүркемеленеді. Экранда көрінетін мәтін мен сериалданған DOM атрибуттары да жүктеп жіберу алдында Kixo ішіндегі PII сүзгісінен өтеді.

Деректерді жинау

SDK интеграцияңыз бен жоба баптауларында қосылған трекерлерді, сондай-ақ қолданба жіберетін оқиғалар мен properties-ті жинайды.

Жазбалар қайда сақталады

SDK rrweb оқиғаларын көлемі шектеулі сегменттерге gzip-пен қысады, Kixo-дан жобаға байланған signed upload URL сұрайды да, сол сегменттерді replay storage-қа тікелей жүктейді. Қайта құрастырылған сессияны Replay → Сессиялар бөлімінен ашыңыз; онда осы сессияның analytics ізіне сілтеме бар.

Ескерту

Replay қолжетімділігі тариф жоспарыңызға байланысты. Қанша сессия жазылатыны және қанша уақыт сақталатыны жобаңыздың тарифіне байланысты; төменгі деңгейлерде де Kixo жеңіл session метадеректер жазады, сондықтан сессия тізімдерде және аналитикада көрінеді.

Функция жалаушалары

Жалау мәндерін орындау кезінде Kixo.getFeatureFlag() арқылы тексеріңіз.

js
const variant = Kixo.getFeatureFlag('new_checkout');

if (variant === 'enabled') {
  showNewCheckout();
} else {
  showLegacyCheckout();
}

Жеткізу және офлайн режимдегі жұмыс

SDK оқиғаларды құрылғыда кезекке жинайды, оларды топтап жібереді және уақытша қателер болса, backoff-пен қайта жібереді. Егер жинау project settings арқылы тоқтатылса, collection қайта қосылғанша жаңа оқиғалар жіберілмейді.

Диагностика

Тек оқуға арналған күй снапшоты — dev tools-та «оқиғаларым неге жіберілмей жатыр?» дегенді тексеруге ыңғайлы.

js
const diag = Kixo.diagnostics();
console.log(diag);