Praćenje akcija u kontekstu
Najvažnija odluka u instrumentaciji je kako imenujete događaje i gde smeštate kontekst. Ako to uradite kako treba, jedan događaj odgovara na desetine pitanja; ako pogrešite, katalog se pretvara u stotine gotovo istih naziva koje nijedan levak ne može da uskladi. Ovaj vodič je kanonski obrazac za Kixo — isti pristup koji preporučuje AI savetnik za instrumentaciju (suggest_instrumentation u chatu).
Obrazac: jedan opšti događaj + bogata svojstva
Pratite jedan događaj po korisničkoj akciji, a kontekst opišite pomoću svojstva — nikada ne razdvajajte naziv događaja po kontekstu. Objava otvorena iz pretrage i objava otvorena iz feeda ista su akcija (post_opened) sa različitim svojstvom source.
Loš obrazac
Nemojte za ne praviti post_opened_from_search, post_opened_from_feed, post_opened_from_profile. Tri naziva događaja znače tri stvari za održavanje, nijedan jedinstven levak ne može da ih obuhvati, a dodavanje četvrte površine znači izmene koda svuda. Jedan post_opened sa source bez dodatnog posla skalira na proizvoljan broj površina.
| Nemojte ovako (događaj po kontekstu) | Radite ovako (jedan događaj + svojstvo) |
|---|---|
post_opened_from_searchpost_opened_from_feed | post_opened sa { source: "search" | "feed" } |
video_played_mobilevideo_played_web | video_played — platforma se već automatski dodaje svakom događaju |
checkout_from_cartcheckout_from_buy_now | cart_checked_out sa { source: "cart" | "buy_now" } |
Imenovanje: snake_case, objekat pa glagol, prošlo vreme
Svaki događaj imenujte kao (object)_(verb) u snake_case i prošlom vremenu — post_opened, video_played, cart_checked_out. Isti naziv mora doslovno da se koristi na Web, iOS i Android platformi da bi višekanalski levci bili usklađeni i da bi Kixo detektor standardnih događaja mogao da prepozna kanonske nazive.
- Prvo objekat, zatim glagol — grupiše povezane događaje dok pregledate katalog (
post_opened,post_liked,post_shared). - Prošlo vreme — događaj beleži nešto što se desilo.
- snake_case — ne
postOpened, nePostOpened. Detector i vocabulary matcher ne razlikuju velika i mala slova, ali jedna usaglašena forma održava levke čistim.
Svojstva događaja naspram svojstava korisnika
Druga polovina odluke je gde vrednost pripada.
| Svojstvo događaja | Svojstvo korisnika | |
|---|---|---|
| Opisuje | Ova konkretna pojava akcije | Osoba, trajno kroz sve svoje događaje |
| Postavlja se pomoću | Kixo.track(name, { ... }) | Kixo.setUserProperty(key, value) |
| Primeri | source, screen, post_id, amount_cents | plan, vip, signup_cohort, lifetime_orders |
| Omogućava | Filteri po koraku levka, raščlanjivanja, distribucije | Segmentacija, ciljanje publike, uslovi za kampanje |
Savet
Pravilo: ako vrednost može da se razlikuje između dva događaja istog korisnika (koji objava, koji izvor), to je event property. Ako je to činjenica o korisniku koja važi bez obzira na akciju (njihov paket, da li je VIP), to je user property. source ide na događaj; plan ide na korisnika.
Uvek nosite stabilan ID entiteta
Prosledite stabilan ID objekta na koji se akcija odnosi — post_id, video_id, order_id. Bez njega možete da izbrojite koliko je objava otvoreno, ali ne možete da grupišete, deduplikujete niti povezujete događaje o istoj isti objavi. Levak kao pretraga → otvaranje-iz-pretrage → lajk postaje smislen korisnički tok tek kada svaki korak nosi svojstvo koje te korake povezuje.
Primer: pretraga → otvaranje → lajk
Recimo da želite da znate koliko korisnika pretraga, zatim otvore objavu iz rezultata pretrage, pa lajkuju je. To su tri događaja — ali kontekst „from search” je svojstvo source na post_opened, a ne poseban događaj:
search_performed—{ query }post_opened—{ source: "search", screen, post_id }post_liked—{ source: "search", screen, post_id }
Zatim u levku filtrirate korak 2 (i korak 3) po source = "search" — jedan uslov nad svojstvom, bez žongliranja nazivima događaja. Tačni SDK pozivi za svaku platformu:
// 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',
});Označavanje korisnika umesto toga
Ako je „has liked a post from search” trajna osobina po kojoj želite da segmentirate korisnike, a ne samo signal vezan za pojedinačni događaj, postavite user property posle akcije: Kixo.setUserProperty("liked_from_search", true). Tada audience explorer i uslovi za kampanje mogu direktno da ciljaju te korisnike.
Prepustite AI-u da to osmisli
U Kixo chatu na kontrolnoj tabli običnim engleskim opišite šta želite da merite — „track posts opened from search and then liked” — i asistent će vratiti preporučene događaje, svojstva i gotove isečke za kopiranje za sve tri platforme. i pokazuje koji događaji već pristižu za vaš projekat, a za koje je i dalje potreban rad u SDK-u. Primenjuje upravo obrazac sa ove stranice.
Pogledajte i: Referenca događaja za jedanaest kanonskih naziva događaja koje Kixo automatski prepoznaje, kao i SDK vodiče po platformama za Web, iOS i Android.