Veiksmų sekimas pagal kontekstą
Svarbiausias instrumentavimo sprendimas — kaip pavadinate įvykius ir kur dedate kontekstą. Jei tai padaryta teisingai, vienas įvykis atsako į keliolika klausimų; jei ne, jūsų katalogas išsipučia iki šimtų beveik vienodų pavadinimų, kurių nesuveda joks piltuvėlis. Šis gidas aprašo kanoninį Kixo modelį — tą patį, kurį rekomenduoja AI instrumentavimo patarėjas (suggest_instrumentation pokalbyje).
Modelis: vienas apibendrintas įvykis + išsamios savybės
Sekite vienas įvykis vienam naudotojo veiksmui, o kontekstą aprašykite per savybės — niekada neskaldykite įvykio pavadinimo pagal kontekstą. Įrašas, atidarytas iš paieškos, ir įrašas, atidarytas iš srauto, yra tas pats veiksmas (post_opened) su skirtinga source savybe.
Ko vengti
Kai turite ne, nekurkite post_opened_from_search, post_opened_from_feed, post_opened_from_profile. Trys įvykių pavadinimai reiškia tris atskirus variantus, kuriuos reikia prižiūrėti, nė vienas piltuvėlis jų visų neapims, o atsiradus ketvirtam paviršiui kodą teks keisti visur. Vienas post_opened su source be papildomo darbo prisitaiko prie bet kokio paviršių skaičiaus.
| Nedarykite taip (atskiras įvykis kiekvienam kontekstui) | Darykite taip (vienas įvykis + savybė) |
|---|---|
post_opened_from_searchpost_opened_from_feed | post_opened su { source: "search" | "feed" } |
video_played_mobilevideo_played_web | video_played — platforma ir taip automatiškai pridedama prie kiekvieno įvykio |
checkout_from_cartcheckout_from_buy_now | cart_checked_out su { source: "cart" | "buy_now" } |
Pavadinimai: snake_case, objektas + veiksmas, būtasis laikas
Kiekvieną įvykį pavadinkite (object)_(verb) formatu snake_case ir būtuoju laiku — post_opened, video_played, cart_checked_out. Tas pats pavadinimas turi būti naudojamas pažodžiui Web, iOS ir Android, kad tarpplatforminiai piltuvėliai sutaptų ir Kixo standartinių įvykių detektorius atpažintų kanoninius pavadinimus.
- Pirma objektas, tada veiksmažodis — sugrupuoja susijusius įvykius, kad būtų lengviau peržvelgti katalogą (
post_opened,post_liked,post_shared). - Būtasis laikas — įvykis fiksuoja tai, kas įvyko.
- snake_case — ne
postOpened, nePostOpened. Detektorius ir pavadinimų atpažinimas neskiria didžiųjų ir mažųjų raidžių, bet viena nuosekli forma padeda išlaikyti tvarkingus piltuvėlius.
Įvykių savybės ir naudotojų savybės
Kita sprendimo pusė — kur saugoti reikšmę.
| Įvykio savybė | Naudotojo savybė | |
|---|---|---|
| Apibūdina | Šis konkretus veiksmo atvejis | Apie žmogų, nuosekliai per visus jo įvykius |
| Nustatoma per | Kixo.track(name, { ... }) | Kixo.setUserProperty(key, value) |
| Pavyzdžiai | source, screen, post_id, amount_cents | plan, vip, signup_cohort, lifetime_orders |
| Galimybės | Kiekvieno žingsnio piltuvėlio filtrai, skaidymai ir pasiskirstymai | Segmentavimas, auditorijų taikymas, kampanijų tinkamumas |
Patarimas
Paprasta taisyklė: jei reikšmė gali skirtis tarp dviejų to paties naudotojo įvykių (kuris įrašas, kuris šaltinis), tai yra įvykio savybė. Jei tai faktas apie naudotoją, galiojantis nepriklausomai nuo veiksmo (jo planas, ar jis VIP), tai yra naudotojo savybė. source dėkite prie įvykio, o plan — prie naudotojo.
Visada perduokite stabilų objekto ID
Perduokite stabilų objekto, su kuriuo susijęs veiksmas, ID — post_id, video_id, order_id. Be jo galėsite suskaičiuoti, kiek įrašų buvo atidaryta, bet negalėsite grupuoti, deduplikuoti ar susieti įvykių apie tą patį tą patį įrašą. Toks piltuvėlis kaip paieška → atidarė-iš-paieškos → pamėgo į nuoseklią naudotojo kelionę susidėlioja tik tada, kai kiekviename žingsnyje yra savybė, susiejanti tuos žingsnius.
Pavyzdys: paieška → atidarymas → patiktukas
Tarkime, norite sužinoti, kiek naudotojų paieška, tada atidarė įrašą iš paieškos rezultatų, tada jį pamėgo. Tai trys įvykiai, bet kontekstas „from search“ yra source savybė prie post_opened, o ne atskiras įvykis:
search_performed—{ query }post_opened—{ source: "search", screen, post_id }post_liked—{ source: "search", screen, post_id }
Tada 2-ą žingsnį (ir prireikus 3-ią) piltuvėlyje filtruosite pagal source = "search" — vienas savybės filtras, jokio žongliravimo įvykių pavadinimais. Tikslūs SDK iškvietimai kiekvienai platformai:
// User runs a search
Kixo.track('search_performed', {
query: 'running shoes',
});
// User taps a result — the post was opened FROM search
Kixo.track('post_opened', {
source: 'search', // ← context as a property, not the event name
screen: 'search_results',
post_id: 'post_8f3a1c',
});
// User likes the post they opened from search
Kixo.track('post_liked', {
source: 'search',
screen: 'post_detail',
post_id: 'post_8f3a1c',
});Vietoj to žymėti naudotoją
Jei „has liked a post from search“ yra ilgalaikis požymis, pagal kurį norite segmentuoti, o ne tik vieno įvykio signalas, po veiksmo nustatykite naudotojo savybę: Kixo.setUserProperty("liked_from_search", true). Tada auditorijų naršyklėje ir kampanijų tinkamumo taisyklėse šiuos naudotojus galėsite taikyti tiesiogiai.
Tegul AI suprojektuoja tai už jus
Kixo skydelio pokalbyje paprastai anglų kalba aprašykite, ką norite matuoti — „track posts opened from search and then liked“. Asistentas grąžins rekomenduojamus įvykius, savybes ir nukopijuojamus fragmentus visoms trims platformoms, o ir parodys, kurie įvykiai jūsų projekte jau siunčiami, o kuriems dar reikia SDK darbo. Jis taiko būtent šiame puslapyje aprašytą modelį.
Taip pat žr. Įvykių žinynas apie vienuolika kanoninių įvykių pavadinimų, kuriuos Kixo atpažįsta automatiškai, ir atskirų platformų SDK gidus: Žiniatinklis, iOS ir Android.