Καταγραφή ενεργειών μέσα στο πλαίσιο τους
Η σημαντικότερη απόφαση στο instrumentation είναι πώς ονομάζετε τα συμβάντα και πού βάζετε τα συμφραζόμενα. Αν το κάνετε σωστά, ένα συμβάν απαντά σε δώδεκα ερωτήσεις· αν το κάνετε λάθος, ο κατάλογός σας διογκώνεται σε εκατοντάδες σχεδόν διπλότυπα ονόματα που κανένα funnel δεν μπορεί να ευθυγραμμίσει. Αυτός ο οδηγός είναι το κανονικό μοτίβο του Kixo — το ίδιο σχέδιο που προτείνει ο σύμβουλος instrumentation του AI (suggest_instrumentation στο chat).
Το μοτίβο: ένα γενικευμένο συμβάν + πλούσιες ιδιότητες
Καταγράψτε το ένα συμβάν ανά ενέργεια χρήστη και περιγράψτε το πλαίσιο με το ιδιότητες — μην διακλαδώνετε ποτέ το όνομα του συμβάντος ανά συμφραζόμενο. Μια ανάρτηση που ανοίγει από την αναζήτηση και μια ανάρτηση που ανοίγει από τη ροή είναι η ίδια ενέργεια (post_opened) με διαφορετική ιδιότητα source.
Αντιπαράδειγμα
Μην δημιουργείτε όχι όπως post_opened_from_search, post_opened_from_feed, post_opened_from_profile. Τρία ονόματα συμβάντων σημαίνουν τρία πράγματα για συντήρηση, κανένα ενιαίο funnel δεν μπορεί να τα καλύψει όλα, και αν προστεθεί τέταρτη επιφάνεια θα χρειαστεί αλλαγή κώδικα παντού. Ένα post_opened με source κλιμακώνεται χωρίς επιπλέον κόστος σε όσες επιφάνειες κι αν έχετε.
| Μην το κάνετε αυτό (ένα συμβάν ανά συμφραζόμενο) | Κάντε αυτό (ένα συμβάν + μία ιδιότητα) |
|---|---|
post_opened_from_searchpost_opened_from_feed | post_opened με { source: "search" | "feed" } |
video_played_mobilevideo_played_web | video_played — η πλατφόρμα προστίθεται ήδη αυτόματα σε κάθε συμβάν |
checkout_from_cartcheckout_from_buy_now | cart_checked_out με { source: "cart" | "buy_now" } |
Ονοματοδοσία: snake_case (αντικείμενο)(ρήμα), παρελθοντικός χρόνος
Ονομάστε κάθε συμβάν (object)_(verb) σε snake_case, σε παρελθοντικό χρόνο — post_opened, video_played, cart_checked_out. Το ίδιο όνομα πρέπει να χρησιμοποιείται αυτούσιο σε Web, iOS και Android ώστε τα funnels πολλαπλών πλατφορμών να ευθυγραμμίζονται και ο ανιχνευτής τυπικών συμβάντων του Kixo να μπορεί να αντιστοιχίζει τα κανονικά ονόματα.
- Πρώτα το αντικείμενο, μετά το ρήμα — ομαδοποιεί σχετικά συμβάντα όταν περιηγείστε στον κατάλογο (
post_opened,post_liked,post_shared). - Παρελθοντικός χρόνος — ένα συμβάν καταγράφει κάτι που συνέβη.
- snake_case — όχι
postOpened, ούτεPostOpened. Ο ανιχνευτής και ο αντιστοιχιστής λεξιλογίου αγνοούν τα πεζά-κεφαλαία, αλλά αν συγκλίνετε σε μία μορφή τα funnels μένουν καθαρά.
Ιδιότητες συμβάντος έναντι ιδιοτήτων χρήστη
Το άλλο μισό της απόφασης είναι το πού μπαίνει μια τιμή.
| Ιδιότητα συμβάντος | Ιδιότητα χρήστη | |
|---|---|---|
| Περιγράφει | Αυτό το μεμονωμένο περιστατικό της ενέργειας | Το άτομο, σταθερά σε όλα τα συμβάντα του |
| Ορίζεται με | Kixo.track(name, { ... }) | Kixo.setUserProperty(key, value) |
| Παραδείγματα | source, screen, post_id, amount_cents | plan, vip, signup_cohort, lifetime_orders |
| Τροφοδοτεί | Φίλτρα funnel ανά βήμα, αναλύσεις, κατανομές | Τμηματοποίηση, στόχευση κοινού, επιλεξιμότητα καμπανιών |
Συμβουλή
Εμπειρικός κανόνας: αν η τιμή μπορεί να διαφέρει ανάμεσα σε δύο συμβάντα του ίδιου χρήστη (ανάρτηση ποιο, πηγή ποιο), τότε είναι ιδιότητα συμβάντος. Αν είναι στοιχείο του χρήστη που ισχύει ανεξάρτητα από την ενέργεια (το plan του, αν είναι VIP), τότε είναι ιδιότητα χρήστη. Βάλτε το source στο συμβάν· βάλτε το plan στον χρήστη.
Να περιλαμβάνει πάντα ένα σταθερό αναγνωριστικό οντότητας
Περάστε ένα σταθερό αναγνωριστικό για το αντικείμενο που αφορούσε η ενέργεια — post_id, video_id, order_id. Χωρίς αυτό μπορείτε να μετρήσετε πόσες αναρτήσεις ανοίχτηκαν, αλλά δεν μπορείτε να ομαδοποιήσετε, να αφαιρέσετε διπλότυπα ή να συνδέσετε συμβάντα για την ίδια ανάρτηση ίδια. Ένα funnel όπως το search → open-from-search → like αποτυπώνει συνεκτική διαδρομή χρήστη μόνο όταν κάθε βήμα φέρει την ιδιότητα που συνδέει τα βήματα μεταξύ τους.
Παράδειγμα: αναζήτηση → άνοιγμα → like
Ας πούμε ότι θέλετε να μάθετε πόσοι χρήστες αναζήτηση, μετά ανοίγουν μια ανάρτηση από τα αποτελέσματα αναζήτησης, και μετά κάνουν like. Είναι τρία συμβάντα — αλλά το συμφραζόμενο "from search" είναι ιδιότητα source στο post_opened, όχι ξεχωριστό συμβάν:
search_performed—{ query }post_opened—{ source: "search", screen, post_id }post_liked—{ source: "search", screen, post_id }
Έπειτα, το funnel σας φιλτράρει το βήμα 2 (και το βήμα 3) με βάση το source = "search" — μία μόνο συνθήκη ιδιότητας, χωρίς ακροβατικά με ονόματα συμβάντων. Οι ακριβείς κλήσεις SDK για κάθε πλατφόρμα:
// 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',
});Βάζετε ετικέτα στον χρήστη αντί γι’ αυτό
Αν το "has liked a post from search" είναι ένα μόνιμο γνώρισμα πάνω στο οποίο θέλετε να κάνετε τμηματοποίηση (και όχι απλώς ένα σήμα ανά συμβάν), ορίστε μια ιδιότητα χρήστη μετά την ενέργεια: Kixo.setUserProperty("liked_from_search", true). Έτσι, η εξερεύνηση κοινού και η επιλεξιμότητα καμπανιών μπορούν να στοχεύουν αυτούς τους χρήστες απευθείας.
Αφήστε το AI να το σχεδιάσει για εσάς
Στο chat του dashboard του Kixo, περιγράψτε με απλά αγγλικά τι θέλετε να μετρήσετε — "track posts opened from search and then liked" — και ο βοηθός επιστρέφει τα προτεινόμενα συμβάντα, τις ιδιότητες και έτοιμα αποσπάσματα για αντιγραφή/επικόλληση και στις τρεις πλατφόρμες. Το και σάς δείχνει ποια συμβάντα φτάνουν ήδη στο project σας και ποια χρειάζονται ακόμη δουλειά στο SDK. Εφαρμόζει ακριβώς το μοτίβο αυτής της σελίδας.
Δείτε επίσης: το Αναφορά συμβάντων για τα έντεκα κανονικά ονόματα συμβάντων που αναγνωρίζει αυτόματα το Kixo, καθώς και τους οδηγούς SDK ανά πλατφόρμα για Web, iOS και Android.