Προσαρμοσμένα συμβάντα
Τα συμβάντα αντιπροσωπεύουν ενέργειες που εκτελούν οι χρήστες στην εφαρμογή σας. Καταγράψτε προσαρμοσμένα συμβάντα για να δημιουργήσετε τμήματα, να ενεργοποιήσετε καμπάνιες και να αναλύσετε τη συμπεριφορά χρηστών.
Τι είναι τα συμβάντα;
Τα συμβάντα είναι εγγραφές ενεργειών χρηστών με χρονική σήμανση:
{
"userId": "user_123",
"eventName": "Order Completed",
"timestamp": "2024-01-20T14:30:00Z",
"properties": {
"orderId": "order_456",
"total": 99.99,
"currency": "USD",
"items": 3,
"paymentMethod": "credit_card"
}
}
Καταγραφή συμβάντων
Μέσω SDK (πλευρά πελάτη)
import JoryioSDK from '@joryio/web-sdk';
const joryio = new JoryioSDK({ sdkKey: 'jry_sdk_web_...' });
// Simple event
joryio.track('Button Clicked');
// Event with properties
joryio.track('Order Completed', {
orderId: 'order_456',
total: 99.99,
currency: 'USD',
items: 3
});
// Page view
joryio.track('Page Viewed', {
page: '/pricing',
category: 'Marketing',
title: 'Pricing Page'
});
Μέσω API (πλευρά διακομιστή)
fetch('https://api-eu1.joryio.com/track', {
method: 'POST',
headers: {
'Authorization': 'Bearer jry_live_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
userId: 'user_123',
eventName: 'Order Completed',
properties: {
orderId: 'order_456',
total: 99.99,
currency: 'USD'
}
})
});
Καταγραφή σε παρτίδες
Το SDK ομαδοποιεί αυτόματα συμβάντα για καλύτερη απόδοση. Τα συμβάντα μπαίνουν σε ουρά και στέλνονται σε ομάδες:
// SDK automatically batches these events
joryio.track('Product Viewed', { productId: '123' });
joryio.track('Added To Cart', { productId: '123', price: 49.99 });
joryio.track('Cart Viewed', { itemCount: 1 });
// Events are sent together after 10 seconds or 20 events (configurable)
// To send immediately:
joryio.flush();
// API: POST /track with a bare array body (max 500)
POST /track
[
{
"userId": "user_123",
"eventName": "Product Viewed",
"properties": { "productId": "123" }
},
{
"userId": "user_123",
"eventName": "Added To Cart",
"properties": { "productId": "123", "price": 49.99 }
}
]
Ονοματοδοσία συμβάντων
Βέλτιστες πρακτικές
Χρησιμοποιήστε σαφή, συνεπή ονόματα:
Καλό (Αντικείμενο + Ενέργεια):
joryio.track('Product Viewed');
joryio.track('Cart Abandoned');
joryio.track('Order Completed');
joryio.track('Trial Started');
Κακό:
joryio.track('view_product'); // Inconsistent case
joryio.track('clicked'); // Too generic
joryio.track('user_action_123'); // Not descriptive
Σύμβαση ονοματοδοσίας
Συνιστούμε: Αντικείμενο + ρήμα σε παρελθοντικό χρόνο
Product Viewed
Order Completed
Account Created
Feature Enabled
Video Watched
Form Submitted
Ιδιότητες συμβάντων
Οι ιδιότητες παρέχουν περιεχόμενο για το συμβάν:
Συμβάντα e-commerce
// Product Viewed
joryio.track('Product Viewed', {
productId: 'prod_123',
productName: 'Premium Plan',
category: 'Subscription',
price: 99.99,
currency: 'USD',
inStock: true
});
// Order Completed
joryio.track('Order Completed', {
orderId: 'order_456',
total: 249.99,
currency: 'USD',
itemCount: 3,
discount: 25.00,
shippingCost: 10.00,
paymentMethod: 'credit_card',
products: [
{ id: 'prod_1', name: 'Item 1', price: 99.99 },
{ id: 'prod_2', name: 'Item 2', price: 149.99 }
]
});
// Cart Abandoned
joryio.track('Cart Abandoned', {
cartValue: 149.99,
itemCount: 2,
cartAge: '2h 30m'
});
Συμβάντα SaaS
// Trial Started
joryio.track('Trial Started', {
plan: 'premium',
trialDays: 14,
source: 'pricing_page'
});
// Feature Used
joryio.track('Feature Used', {
featureName: 'export',
exportFormat: 'csv',
recordCount: 1500,
duration: 3.5 // seconds
});
// Subscription Upgraded
joryio.track('Subscription Upgraded', {
fromPlan: 'starter',
toPlan: 'professional',
billingCycle: 'monthly',
mrr: 199,
effectiveDate: '2024-02-01'
});
Συμβάντα περιεχομένου/πολυμέσων
// Video Watched
joryio.track('Video Watched', {
videoId: 'vid_123',
videoTitle: 'Product Demo',
duration: 120, // seconds
percentWatched: 85,
quality: '1080p',
platform: 'web'
});
// Article Read
joryio.track('Article Read', {
articleId: 'article_456',
title: '10 Tips for Better Marketing',
category: 'Marketing',
author: 'John Doe',
readTime: 5, // minutes
scrollDepth: 90
});
Συνήθη παραδείγματα συμβάντων
Κύκλος ζωής χρήστη
// Signup flow
joryio.track('Signup Started');
joryio.track('Signup Completed', {
method: 'email',
source: 'homepage_cta'
});
joryio.track('Email Verified');
joryio.track('Onboarding Completed', {
stepsCompleted: 5,
timeSpent: '8m 30s'
});
// Engagement
joryio.track('Session Started');
joryio.track('Feature Discovered', {
featureName: 'advanced_filters'
});
joryio.track('Help Article Viewed', {
articleId: 'help_123',
query: 'how to export data'
});
joryio.track('Session Ended', {
duration: '15m 20s',
pagesViewed: 8
});
Διοχέτευση e-commerce
// Browse
joryio.track('Product Searched', {
query: 'wireless headphones',
results: 45
});
joryio.track('Product Viewed', {
productId: 'prod_123',
price: 199.99
});
joryio.track('Product Compared', {
productIds: ['prod_123', 'prod_456']
});
// Cart
joryio.track('Added To Cart', {
productId: 'prod_123',
quantity: 1,
price: 199.99
});
joryio.track('Cart Viewed');
joryio.track('Coupon Applied', {
code: 'SAVE20',
discount: 39.99
});
// Checkout
joryio.track('Checkout Started', {
value: 159.99
});
joryio.track('Payment Info Entered');
joryio.track('Order Completed', {
orderId: 'order_789',
revenue: 159.99
});
Μετρήσεις SaaS
// Activation
joryio.track('Trial Started');
joryio.track('Integration Connected', {
integration: 'salesforce'
});
joryio.track('First Report Created');
joryio.track('Team Member Invited');
// Engagement
joryio.track('Daily Active', {
loginCount: 45
});
joryio.track('API Call Made', {
endpoint: '/users',
method: 'GET'
});
// Revenue
joryio.track('Subscription Created', {
plan: 'professional',
mrr: 199
});
joryio.track('Subscription Renewed', {
plan: 'professional'
});
joryio.track('Subscription Cancelled', {
reason: 'too_expensive'
});
Τύποι δεδομένων ιδιοτήτων
Υποστηριζόμενοι τύποι
joryio.track('Event Name', {
// String
name: "John Doe",
plan: "premium",
// Number
age: 30,
price: 99.99,
quantity: 5,
// Boolean
isActive: true,
emailVerified: false,
// Date (ISO 8601 string)
createdAt: "2024-01-20T10:30:00Z",
expiresAt: "2024-02-20T23:59:59Z",
// Array
tags: ["vip", "early-access"],
categories: ["electronics", "accessories"],
// Object
address: {
city: "San Francisco",
state: "CA",
zip: "94102"
},
metadata: {
source: "web",
campaign: "summer_sale"
}
});
Δεσμευμένα ονόματα ιδιοτήτων
Οι ιδιότητες που ξεκινούν με $ είναι δεσμευμένες:
$app_id- Αναγνωριστικό εφαρμογής$app_name- Όνομα εφαρμογής$platform- Πλατφόρμα (web, ios, android)$session_id- Αναγνωριστικό συνεδρίας$anonymous_id- Ανώνυμο ID χρήστη$is_identified- Αν ο χρήστης έχει αναγνωριστεί
Μην χρησιμοποιείτε αυτά τα ονόματα για προσαρμοσμένες ιδιότητες.
Χρήση συμβάντων για τμηματοποίηση
Δημιουργήστε τμήματα βάσει συμπεριφοράς συμβάντων:
Εκτελέστηκε συμβάν
Τμήμα: Ενεργοί χρήστες
Φίλτρο: Εκτέλεσε "Session Started" τις τελευταίες 7 ημέρες
ΔΕΝ εκτελέστηκε συμβάν
Τμήμα: Χρήστες που δεν έχουν αναβαθμίσει
Φίλτρο: ΔΕΝ έχει εκτελέσει "Subscription Upgraded"
Πλήθος συμβάντων
Τμήμα: Ενεργοί προχωρημένοι χρήστες
Φίλτρο: Εκτέλεσε "Feature Used" >= 50 φορές τις τελευταίες 30 ημέρες
Ιδιότητες συμβάντων
Τμήμα: Πελάτες υψηλής αξίας
Φίλτρο: Εκτέλεσε "Order Completed"
ΟΠΟΥ properties.total >= 500
τις τελευταίες 90 ημέρες
Σύνθετα συμπεριφορικά τμήματα
Τμήμα: Χρήστες σε κίνδυνο
Ομάδα φίλτρων 1 (ΚΑΙ):
- Εκτέλεσε "Login" τις τελευταίες 90 ημέρες
- ΔΕΝ έχει εκτελέσει "Login" τις τελευταίες 14 ημέρες
- Εκτέλεσε "Order Completed" τουλάχιστον 1 φορά
Χρήση για: Καμπάνια επανενεργοποίησης
Καμπάνιες που ενεργοποιούνται από συμβάντα
Ενεργοποιήστε καμπάνιες βάσει συμβάντων:
Παράδειγμα 1: Εγκατάλειψη καλαθιού
Έναυσμα: συμβάν "Cart Abandoned"
Αναμονή: 1 ώρα
Συνθήκη: ΔΕΝ έχει εκτελέσει "Order Completed"
Ενέργεια: Αποστολή email ανάκτησης με έκπτωση
Παράδειγμα 2: Ένταξη
Έναυσμα: συμβάν "Signup Completed"
Ροή:
→ Email καλωσορίσματος (άμεσα)
→ Αναμονή 2 ημερών
→ Οδηγός πρώτων βημάτων
→ Αναμονή 5 ημερών
→ Έλεγχος: Εκτέλεσε "First Report Created";
- Ναι: Email προχωρημένων συμβουλών
- Όχι: Email προσφοράς βοήθειας
Όρια συμβάντων και απόδοση
Όρια ρυθμού
| Επίπεδο | Συμβάντα/δευτερόλεπτο | Ημερήσια συμβάντα |
|---|---|---|
| Δωρεάν | 10/δευτ. | 100.000 |
| Starter | 50/δευτ. | 500.000 |
| Pro | 100/δευτ. | 2.000.000 |
| Enterprise | Προσαρμοσμένο | Απεριόριστα |
Βέλτιστες πρακτικές απόδοσης
-
Τα συμβάντα ομαδοποιούνται αυτόματα από το SDK:
// SDK automatically batches these for you
joryio.track(event1);
joryio.track(event2);
joryio.track(event3);
// All three sent together after batchFlushInterval (default 5s) or batchSize (default 50) reached
// For critical events that need immediate sending:
joryio.track('Order Completed', {...});
joryio.flush(); // Send immediately -
Μην καταγράφετε πολύ συχνά:
// Bad: Tracking every scroll
window.addEventListener('scroll', () => {
joryio.track('Page Scrolled');
});
// Good: Track scroll depth milestones
joryio.track('Page Scrolled', {
depth: 75 // %
}); -
Κρατήστε τις ιδιότητες λογικές:
- Έως 50 ιδιότητες ανά συμβάν
- Μέγιστο συνολικό μέγεθος συμβάντος 10KB
- Αποφύγετε εξαιρετικά μεγάλα κείμενα
Εντοπισμός σφαλμάτων συμβάντων
Ενεργοποίηση λειτουργίας εντοπισμού
const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_...',
enableDebug: true // See all events in console
});
Επαλήθευση συμβάντων στο dashboard
- Μεταβείτε στους Χρήστες → Βρείτε χρήστη
- Δείτε την καρτέλα Δραστηριότητα
- Δείτε όλα τα καταγεγραμμένα συμβάντα
Συνήθη προβλήματα
Δεν εμφανίζονται συμβάντα:
- Ελέγξτε ότι το SDK έχει αρχικοποιηθεί
- Επαληθεύστε ότι ο χρήστης έχει αναγνωριστεί (ή υπάρχει ανώνυμο ID)
- Ενεργοποιήστε τη λειτουργία εντοπισμού
- Ελέγξτε την κονσόλα προγράμματος περιήγησης για σφάλματα
Δεν εμφανίζονται ιδιότητες:
- Επαληθεύστε ότι τα ονόματα ιδιοτήτων είναι σωστά
- Ελέγξτε τους τύπους δεδομένων
- Αποφύγετε δεσμευμένα ονόματα ιδιοτήτων (πρόθεμα $)