Sledování akcí v kontextu
Nejdůležitější rozhodnutí v instrumentaci je, jak pojmenujete události a kam uložíte kontext. Když to uděláte správně, jedna událost zodpoví desítky otázek; když ne, katalog nabobtná na stovky téměř duplicitních názvů, které žádný trychtýř nedokáže srovnat. Tento průvodce popisuje kanonický vzor Kixo — stejný návrh, který doporučuje i AI poradce pro instrumentaci (suggest_instrumentation v chatu).
Vzor: jedna obecná událost + bohaté vlastnosti
Sledujte jedna událost pro jednu uživatelskou akci a kontext popište pomocí vlastnosti — nikdy nerozdělujte název události podle kontextu. Příspěvek otevřený z vyhledávání a příspěvek otevřený z feedu jsou stejná akce (post_opened) s odlišnou vlastností source.
Nevhodný vzor
ne nevytvářejte post_opened_from_search, post_opened_from_feed, post_opened_from_profile. Tři názvy událostí znamenají tři věci k údržbě, žádný trychtýř je nepokryje jako celek a přidání čtvrtého povrchu znamená změnu kódu všude. Jedno post_opened s source se bez dalších úprav škáluje na libovolný počet povrchů.
| Špatně (událost pro každý kontext) | Správně (jedna událost + vlastnost) |
|---|---|
post_opened_from_searchpost_opened_from_feed | post_opened s { source: "search" | "feed" } |
video_played_mobilevideo_played_web | video_played — platforma se už ke každé události přidává automaticky |
checkout_from_cartcheckout_from_buy_now | cart_checked_out s { source: "cart" | "buy_now" } |
Pojmenování: snake_case, nejdřív objekt, potom sloveso, v minulém čase
Každou událost pojmenujte (object)_(verb) ve formátu snake_case a v minulém čase — post_opened, video_played, cart_checked_out. Stejný název se musí doslova používat na Webu, v iOS i v Androidu, aby multiplatformní trychtýře správně navazovaly a aby detektor standardních událostí v Kixo našel kanonické názvy.
- Nejdřív objekt, potom sloveso — při procházení katalogu seskupuje související události (
post_opened,post_liked,post_shared). - Minulý čas — událost zaznamenává něco, co se stalo.
- snake_case — ne
postOpenedaniPostOpened. Detektor i porovnávání se slovníkem nerozlišují velikost písmen, ale sjednocení na jeden tvar udrží trychtýře čisté.
Vlastnosti událostí vs. uživatelské vlastnosti
Druhá část rozhodnutí je, kde hodnota patří.
| Vlastnost události | Uživatelská vlastnost | |
|---|---|---|
| Popisuje | Tento konkrétní výskyt akce | Uživatele, trvale napříč všemi jeho událostmi |
| Nastavuje se pomocí | Kixo.track(name, { ... }) | Kixo.setUserProperty(key, value) |
| Příklady | source, screen, post_id, amount_cents | plan, vip, signup_cohort, lifetime_orders |
| Měří | Filtry jednotlivých kroků trychtýře, rozklady a distribuce | Segmentace, cílení publik, způsobilost kampaní |
Tip
Pravidlo: pokud se hodnota může lišit mezi dvěma událostmi stejného uživatele (který příspěvek, který zdroj), je to vlastnost události. Pokud jde o údaj o uživateli, který platí bez ohledu na konkrétní akci (jeho tarif, jestli je VIP), je to uživatelská vlastnost. source patří na událost, plan na uživatele.
Vždy posílejte stabilní ID entity
Posílejte stabilní ID objektu, kterého se akce týkala — post_id, video_id, order_id. Bez něj sice spočítáte, kolik příspěvků bylo otevřeno, ale nemůžete seskupovat, deduplikovat ani řetězit události o stejný příspěvku. Trychtýř jako vyhledávání → otevření z vyhledávání → lajk dává smysl jako souvislá uživatelská cesta jen tehdy, když každý krok nese vlastnost, která jednotlivé kroky propojí.
Praktický příklad: search → open → like
Řekněme, že chcete vědět, kolik uživatelů vyhledávání, potom otevřou příspěvek z výsledků vyhledávání a potom ho olajkují. Jsou to tři události — ale kontext „z vyhledávání“ je vlastnost source u post_opened, ne samostatná událost:
search_performed—{ query }post_opened—{ source: "search", screen, post_id }post_liked—{ source: "search", screen, post_id }
Pak v kroku 2 (a kroku 3) odfiltrujete trychtýř podle source = "search" — jeden predikát nad vlastností, žádné přepínání mezi názvy událostí. Přesná volání SDK pro jednotlivé platformy:
// 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čení uživatele místo události
Pokud je „has liked a post from search“ trvalá vlastnost, podle které chcete segmentovat, a ne jen signál jedné události, nastavte po akci uživatelskou vlastnost: Kixo.setUserProperty("liked_from_search", true). Audience Explorer i způsobilost kampaní pak mohou tyto uživatele cílit přímo.
Nechte návrh na AI
V chatu v dashboardu Kixo jednoduše popište, co chcete měřit — „track posts opened from search and then liked“ — a asistent vrátí doporučené události, vlastnosti i úryvky ke zkopírování pro všechny tři platformy. a vám řekne, které události už do projektu přitékají a co ještě vyžaduje práci v SDK. Používá přesně stejný vzor jako tato stránka.
Viz také Referenční přehled událostí s jedenácti kanonickými názvy událostí, které Kixo rozpoznává automaticky, a průvodce SDK pro jednotlivé platformy: Web, iOS a Android.