Praćenje akcija u kontekstu
Najvažnija odluka u instrumentaciji je kako imenujete događaje i gdje smještate kontekst. Ako to uradite kako treba, jedan događaj odgovara na desetak pitanja; ako pogriješite, katalog se raspadne na stotine gotovo istih naziva koje nijedan lijevak ne može poravnati. Ovaj vodič je kanonski obrazac u Kixo — isti pristup koji preporučuje AI savjetnik za instrumentaciju (suggest_instrumentation u chatu).
Obrazac: jedan uopćeni događaj + bogata svojstva
Pratite jedan događaj po korisničkoj akciji, a kontekst opišite pomoću svojstva — nikad ne granajte naziv događaja po kontekstu. Objava otvorena iz pretrage i objava otvorena iz feeda ista su akcija (post_opened) s različitim svojstvom source.
Antipattern
Nemojte 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 lijevak ih ne može obuhvatiti, a dodavanje četvrte površine traži izmjene koda svuda. Jedan post_opened s source bez problema se širi na proizvoljan broj površina.
| Nemojte (događaj po kontekstu) | Ispravno (jedan događaj + svojstvo) |
|---|---|
post_opened_from_searchpost_opened_from_feed | post_opened s { 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 s { source: "cart" | "buy_now" } |
Imenovanje: snake_case, prvo objekat pa glagol, u prošlom vremenu
Svaki događaj imenujte kao (object)_(verb) u snake_case i u prošlom vremenu — post_opened, video_played, cart_checked_out. Isti naziv mora se doslovno koristiti na Webu, iOS-u i Androidu kako bi se višekanalni lijevci poravnali i kako bi Kixo detektor standardnih događaja mogao prepoznati kanonske nazive.
- Prvo objekat, zatim glagol — grupiše povezane događaje dok pregledate katalog (
post_opened,post_liked,post_shared). - Prošlo vrijeme — događaj bilježi nešto što se desilo.
- snake_case — ne
postOpened, nePostOpened. Detektor i usklađivanje rječnika ne razlikuju velika i mala slova, ali jedan dosljedan oblik održava lijevke čistim.
Svojstva događaja naspram svojstava korisnika
Druga polovina odluke je gdje se vrijednost nalazi.
| Svojstvo događaja | Korisničko svojstvo | |
|---|---|---|
| Opisuje | Ovo jedno pojavljivanje akcije | Osoba, trajno kroz sve njene događaje |
| Postavlja se pomoću | Kixo.track(name, { ... }) | Kixo.setUserProperty(key, value) |
| Primjeri | source, screen, post_id, amount_cents | plan, vip, signup_cohort, lifetime_orders |
| Pokreće | Filteri po koraku lijevka, raščlambe i distribucije | Segmentacija, ciljanje publike, uslovi za kampanje |
Savjet
Pravilo: ako se vrijednost može razlikovati između dva događaja istog korisnika (koji objava, koji izvor), to je event property. Ako je to činjenica o korisniku koja vrijedi bez obzira na akciju (njegov paket, da li je VIP), to je user property. source ide na događaj, a plan na korisnika.
Uvijek šaljite stabilan ID entiteta
Pošaljite stabilan ID objekta nad kojim je akcija izvršena — post_id, video_id, order_id. Bez toga možete brojati koliko je objava otvoreno, ali ne možete grupisati, deduplikovati ni povezivati događaje za isti isti. Lijevak poput search → open-from-search → like može se svesti na smislen korisnički tok samo kada svaki korak nosi svojstvo koje povezuje te korake.
Razrađen primjer: search → open → like
Recimo da želite znati koliko korisnika pretraga, zatim otvori objavu iz rezultata pretrage, pa lajkuje ga. 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 }
Tada vaš lijevak filtrira 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 umjesto toga
Ako je "has liked a post from search" trajna osobina po kojoj želite segmentirati korisnike, a ne samo signal na pojedinačnom događaju, postavite user property nakon akcije: Kixo.setUserProperty("liked_from_search", true). Tada audience explorer i uslovi za kampanje mogu direktno ciljati te korisnike.
Prepustite AI-u da to osmisli za vas
U chatu u Kixo dashboardu običnim engleskim opišite šta želite mjeriti — "track posts opened from search and then liked" — i asistent će vratiti preporučene događaje, svojstva i gotove isječke za kopiranje za sve tri platforme. i vam zatim pokazuje koji događaji već pristižu za vaš projekat, a za koje još treba rad na SDK-u. Primjenjuje upravo obrazac sa ove stranice.
Pogledajte i Referenca događaja za jedanaest kanonskih naziva događaja koje Kixo automatski prepoznaje, kao i vodiče za SDK po platformama za Web, iOS i Android.