Παρακολούθηση E-Commerce
Τα Joryio SDK περιλαμβάνουν ενσωματωμένη παρακολούθηση e-commerce για αλληλεπίδραση με προϊόντα, δραστηριότητα καλαθιού και αγορές. Ο tracker λειτουργεί με τον ίδιο τρόπο σε κάθε πλατφόρμα: ίδιες μέθοδοι, ίδια τυπικά ονόματα συμβάντων και ίδια σημασιολογία ιδιοτήτων - διαφέρει μόνο η σύνταξη της γλώσσας.
Επιλέξτε την πλατφόρμα σας σε οποιοδήποτε παράδειγμα κώδικα παρακάτω· η επιλογή συγχρονίζεται σε όλη τη σελίδα. Για εγκατάσταση και ρυθμίσεις, δείτε τους οδηγούς πλατφόρμας: Web SDK, iOS SDK, Android SDK, React Native SDK. Το React Native δεν διαθέτει αποκλειστικό tracker - η καρτέλα του δείχνει τις ισοδύναμες κλήσεις Joryio.track() (δείτε React Native παρακάτω).
Σύμβαση ονοματοδοσίας ID
Το Joryio χρησιμοποιεί σαφή σύμβαση ονοματοδοσίας για αναγνωριστικά:
| Το ID σας | Περιγραφή | Παράδειγμα |
|---|---|---|
productId | Αναγνωριστικό προϊόντος (SKU ή ID προϊόντος από την πλατφόρμα e-commerce σας) | "SKU-12345" |
orderId | Αναγνωριστικό παραγγελίας (αριθμός παραγγελίας από την πλατφόρμα σας) | "ORD-2024-001" |
userId | Αναγνωριστικό χρήστη (περνά στο identify()) | "user-123" |
Χρησιμοποιήστε τα δικά σας αναγνωριστικά φυσικά - δεν απαιτούνται ειδικά προθέματα.
Αρχικοποίηση του E-Commerce Tracker
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Get the e-commerce tracker from your SDK instance
// (joryio is the instance created with `new JoryioSDK({ sdkKey: ... })`)
const ecommerce = joryio.ecommerce({
currency: 'USD' // Default currency for all events
});
// Get the e-commerce tracker with default currency
let ecommerce = Joryio.shared.ecommerce(config: EcommerceConfig(currency: "USD"))
import io.joryio.sdk.ecommerce.*
// Get the e-commerce tracker with default currency
val ecommerce = Joryio.getInstance().ecommerce(EcommerceConfig(currency = "USD"))
// The React Native SDK has no dedicated e-commerce tracker and no
// tracker-level currency config. Send the same standard events with
// Joryio.track(), and include `currency` as a property on each
// monetary event instead.
import Joryio from '@joryio/react-native-sdk';
Παρακολούθηση προβολών προϊόντων και αναζήτησης
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// When user views a product page
ecommerce.viewProduct({
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
category: 'Clothing/T-Shirts',
brand: 'Acme Apparel',
imageUrl: 'https://example.com/images/blue-tshirt.jpg',
url: 'https://example.com/products/blue-tshirt'
});
// When user views a category page
ecommerce.viewCategory('tshirts', 'T-Shirts');
// When user searches
ecommerce.search('blue shirts', 42); // query, result count
// Track product view
let product = EcommerceProduct(
productId: "SKU-12345",
name: "Classic Blue T-Shirt",
price: 29.99,
category: "Clothing",
brand: "Acme Apparel",
variant: "Size M",
sku: "BTS-001-M"
)
ecommerce.viewProduct(product)
// Track category view
ecommerce.viewCategory(categoryId: "cat_123", categoryName: "T-Shirts", properties: [
"sort_by": "popularity"
])
// Track product search
ecommerce.search(query: "blue shirts", resultCount: 42)
// Track product view
val product = EcommerceProduct(
productId = "SKU-12345",
name = "Classic Blue T-Shirt",
price = 29.99,
category = "Clothing",
brand = "Acme Apparel",
variant = "Size M",
sku = "BTS-001-M"
)
ecommerce.viewProduct(product)
// Track category view
ecommerce.viewCategory(
categoryId = "cat_123",
categoryName = "T-Shirts",
properties = mapOf("sort_by" to "popularity")
)
// Track product search
ecommerce.search(query = "blue shirts", resultCount = 42)
// When user views a product page
Joryio.track('Product Viewed', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
category: 'Clothing/T-Shirts',
brand: 'Acme Apparel',
image_url: 'https://example.com/images/blue-tshirt.jpg',
url: 'https://example.com/products/blue-tshirt',
currency: 'USD',
});
// When user views a category page
Joryio.track('Product List Viewed', {
category_id: 'tshirts',
category_name: 'T-Shirts',
});
// When user searches
Joryio.track('Products Searched', {
query: 'blue shirts',
result_count: 42,
});
Παρακολούθηση δραστηριότητας καλαθιού
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Add item to cart
ecommerce.addToCart({
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
quantity: 1,
variantId: 'var-medium',
sku: 'BTS-001-M'
}, 59.98); // Optional: current cart value
// Remove item from cart
ecommerce.removeFromCart({
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99
}, 1); // quantity to remove
// Update entire cart
ecommerce.updateCart([
{ productId: 'SKU-12345', name: 'Blue T-Shirt', price: 29.99, quantity: 2 },
{ productId: 'SKU-67890', name: 'Black Jeans', price: 49.99, quantity: 1 }
], 109.97); // items array, total cart value
// Add item to cart
let cartItem = EcommerceCartItem(
productId: "SKU-12345",
name: "Classic Blue T-Shirt",
price: 29.99,
quantity: 2,
category: "Clothing"
)
ecommerce.addToCart(item: cartItem, cartValue: 59.98)
// Remove from cart
ecommerce.removeFromCart(product: product, quantity: 1)
// Update cart
ecommerce.updateCart(items: [cartItem1, cartItem2], cartValue: 89.97)
// Add item to cart
val cartItem = EcommerceCartItem(
productId = "SKU-12345",
name = "Classic Blue T-Shirt",
price = 29.99,
quantity = 2,
category = "Clothing"
)
ecommerce.addToCart(item = cartItem, cartValue = 59.98)
// Remove from cart
ecommerce.removeFromCart(product = product, quantity = 1)
// Update cart
ecommerce.updateCart(items = listOf(cartItem1, cartItem2), cartValue = 89.97)
// Add item to cart
Joryio.track('Product Added', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
quantity: 1,
variant_id: 'var-medium',
sku: 'BTS-001-M',
item_total: 29.99, // price * quantity
cart_value: 59.98,
currency: 'USD',
});
// Remove item from cart
Joryio.track('Product Removed', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
quantity: 1,
currency: 'USD',
});
// Update entire cart
Joryio.track('Cart Updated', {
items: [
{ product_id: 'SKU-12345', name: 'Blue T-Shirt', price: 29.99, quantity: 2 },
{ product_id: 'SKU-67890', name: 'Black Jeans', price: 49.99, quantity: 1 },
],
item_count: 3,
cart_value: 109.97,
currency: 'USD',
});
Παρακολούθηση ροής checkout
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// When user starts checkout
ecommerce.startCheckout([
{ productId: 'SKU-12345', name: 'Blue T-Shirt', price: 29.99, quantity: 2 },
{ productId: 'SKU-67890', name: 'Black Jeans', price: 49.99, quantity: 1 }
], 109.97); // items, cart value
// When user adds payment info
ecommerce.addPaymentInfo('credit_card');
// Start checkout
ecommerce.startCheckout(items: cartItems, cartValue: 59.98)
// Add payment info
ecommerce.addPaymentInfo(paymentMethod: "credit_card", properties: [
"card_type": "visa"
])
// Start checkout
ecommerce.startCheckout(items = cartItems, cartValue = 59.98)
// Add payment info
ecommerce.addPaymentInfo(paymentMethod = "credit_card", properties = mapOf(
"card_type" to "visa"
))
// When user starts checkout
Joryio.track('Checkout Started', {
items: [
{ product_id: 'SKU-12345', name: 'Blue T-Shirt', price: 29.99, quantity: 2 },
{ product_id: 'SKU-67890', name: 'Black Jeans', price: 49.99, quantity: 1 },
],
item_count: 3,
value: 109.97,
currency: 'USD',
});
// When user adds payment info
Joryio.track('Payment Info Entered', {
payment_method: 'credit_card',
});
Παρακολούθηση αγορών
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// When order is completed
ecommerce.purchase({
orderId: 'ORD-2024-001',
items: [
{
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
quantity: 2,
category: 'Clothing',
brand: 'Acme'
},
{
productId: 'SKU-67890',
name: 'Black Jeans',
price: 49.99,
quantity: 1
}
],
value: 109.97,
currency: 'USD',
shipping: 5.99,
tax: 8.80,
discount: 10.00,
coupon: 'SAVE10'
});
// Complete purchase
let order = EcommerceOrder(
orderId: "ORD-2024-001",
items: cartItems,
value: 59.98,
currency: "USD",
shipping: 5.99,
tax: 4.80,
discount: 10.00,
coupon: "SAVE10"
)
ecommerce.purchase(order: order)
// Complete purchase
val order = EcommerceOrder(
orderId = "ORD-2024-001",
items = cartItems,
value = 59.98,
currency = "USD",
shipping = 5.99,
tax = 4.80,
discount = 10.00,
coupon = "SAVE10"
)
ecommerce.purchase(order)
// When order is completed
Joryio.track('Order Completed', {
order_id: 'ORD-2024-001',
items: [
{
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
quantity: 2,
category: 'Clothing',
brand: 'Acme',
},
{
product_id: 'SKU-67890',
name: 'Black Jeans',
price: 49.99,
quantity: 1,
},
],
item_count: 3,
value: 109.97,
currency: 'USD',
shipping: 5.99,
tax: 8.80,
discount: 10.00,
coupon: 'SAVE10',
});
Η μέθοδος purchase() απαιτεί να περάσετε ρητά τα προϊόντα της παραγγελίας. Το SDK δεν αποθηκεύει την κατάσταση καλαθιού στον client ούτε αντλεί αυτόματα προϊόντα από το καταγεγραμμένο καλάθι ή τον διακομιστή. Αυτό εξασφαλίζει ακρίβεια, επειδή η σελίδα ή η οθόνη επιβεβαίωσης παραγγελίας γνωρίζει τα ακριβή προϊόντα που αγοράστηκαν.
Παρακολούθηση αλλαγών κατάστασης παραγγελίας
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Order shipped
ecommerce.orderFulfilled('ORD-2024-001', '1Z999AA10123456784', 'UPS');
// Order delivered
ecommerce.orderDelivered('ORD-2024-001');
// Order cancelled
ecommerce.orderCancelled('ORD-2024-001', 'Customer requested');
// Order refunded
ecommerce.orderRefunded('ORD-2024-001', 29.99, 'Product defective');
// Order fulfilled (shipped)
ecommerce.orderFulfilled(orderId: "ORD-2024-001", trackingNumber: "1Z999AA10123456784", carrier: "UPS")
// Order delivered
ecommerce.orderDelivered(orderId: "ORD-2024-001")
// Order cancelled
ecommerce.orderCancelled(orderId: "ORD-2024-001", reason: "Customer requested cancellation")
// Order refunded
ecommerce.orderRefunded(orderId: "ORD-2024-001", refundAmount: 29.99, reason: "Product defective")
// Order fulfilled (shipped)
ecommerce.orderFulfilled(orderId = "ORD-2024-001", trackingNumber = "1Z999AA10123456784", carrier = "UPS")
// Order delivered
ecommerce.orderDelivered(orderId = "ORD-2024-001")
// Order cancelled
ecommerce.orderCancelled(orderId = "ORD-2024-001", reason = "Customer requested cancellation")
// Order refunded
ecommerce.orderRefunded(orderId = "ORD-2024-001", refundAmount = 29.99, reason = "Product defective")
// Order shipped
Joryio.track('Order Fulfilled', {
order_id: 'ORD-2024-001',
tracking_number: '1Z999AA10123456784',
carrier: 'UPS',
});
// Order delivered
Joryio.track('Order Delivered', { order_id: 'ORD-2024-001' });
// Order cancelled
Joryio.track('Order Cancelled', {
order_id: 'ORD-2024-001',
reason: 'Customer requested',
});
// Order refunded
Joryio.track('Order Refunded', {
order_id: 'ORD-2024-001',
refund_amount: 29.99,
reason: 'Product defective',
});
Παρακολούθηση λίστας επιθυμιών και κοινοποίησης
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Add to wishlist
ecommerce.addToWishlist({
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99
});
// Share product
ecommerce.shareProduct({
productId: 'SKU-12345',
name: 'Classic Blue T-Shirt'
}, 'facebook'); // share method
// Wishlist
ecommerce.addToWishlist(product: product)
ecommerce.removeFromWishlist(product: product)
// Share product
ecommerce.shareProduct(product: product, shareMethod: "twitter")
// Wishlist
ecommerce.addToWishlist(product)
ecommerce.removeFromWishlist(product)
// Share product
ecommerce.shareProduct(product, shareMethod = "twitter")
// Add to wishlist
Joryio.track('Product Added to Wishlist', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
price: 29.99,
currency: 'USD',
});
// Remove from wishlist
Joryio.track('Product Removed from Wishlist', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
});
// Share product
Joryio.track('Product Shared', {
product_id: 'SKU-12345',
name: 'Classic Blue T-Shirt',
share_method: 'facebook',
});
Παρακολούθηση κουπονιών
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Coupon applied
ecommerce.applyCoupon('SAVE10', 10.00, 'percentage');
// Coupon removed
ecommerce.removeCoupon('SAVE10');
// Coupon
ecommerce.applyCoupon(couponCode: "SAVE10", discountAmount: 10.00, discountType: "percentage")
ecommerce.removeCoupon(couponCode: "SAVE10")
// Coupon
ecommerce.applyCoupon(couponCode = "SAVE10", discountAmount = 10.00, discountType = "percentage")
ecommerce.removeCoupon(couponCode = "SAVE10")
// Coupon applied
Joryio.track('Coupon Applied', {
coupon_code: 'SAVE10',
discount_amount: 10.00,
discount_type: 'percentage',
});
// Coupon removed
Joryio.track('Coupon Removed', { coupon_code: 'SAVE10' });
Παρακολούθηση αξιολογήσεων
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
- React Native
// Product review submitted
ecommerce.submitReview('SKU-12345', 5, 'Great quality shirt!');
// Review
ecommerce.submitReview(productId: "SKU-12345", rating: 5, reviewText: "Great product!")
// Review
ecommerce.submitReview(productId = "SKU-12345", rating = 5, reviewText = "Great product!")
// Product review submitted
Joryio.track('Product Reviewed', {
product_id: 'SKU-12345',
rating: 5,
review_text: 'Great quality shirt!',
});
Τυπικά συμβάντα E-Commerce
Ο e-commerce tracker στέλνει τα ίδια τυπικά συμβάντα σε κάθε πλατφόρμα:
| Όνομα συμβάντος | Περιγραφή |
|---|---|
Product Viewed | Ο χρήστης προβάλλει σελίδα προϊόντος |
Product List Viewed | Ο χρήστης προβάλλει σελίδα κατηγορίας |
Products Searched | Ο χρήστης αναζητά προϊόντα |
Product Added | Προϊόν προστέθηκε στο καλάθι |
Product Removed | Προϊόν αφαιρέθηκε από το καλάθι |
Cart Updated | Το περιεχόμενο του καλαθιού άλλαξε |
Checkout Started | Ο χρήστης ξεκινά checkout |
Payment Info Entered | Ο χρήστης προσθέτει μέθοδο πληρωμής |
Order Completed | Η παραγγελία ολοκληρώθηκε |
Order Fulfilled | Η παραγγελία στάλθηκε |
Order Delivered | Η παραγγελία παραδόθηκε |
Order Cancelled | Η παραγγελία ακυρώθηκε |
Order Refunded | Η παραγγελία επιστράφηκε |
Product Added to Wishlist | Προϊόν προστέθηκε στη λίστα επιθυμιών |
Product Removed from Wishlist | Προϊόν αφαιρέθηκε από τη λίστα επιθυμιών |
Product Shared | Το προϊόν κοινοποιήθηκε |
Coupon Applied | Εφαρμόστηκε κωδικός κουπονιού |
Coupon Removed | Αφαιρέθηκε κωδικός κουπονιού |
Product Reviewed | Υποβλήθηκε αξιολόγηση προϊόντος |
React Native
Το React Native SDK δεν περιλαμβάνει αποκλειστικό e-commerce tracker. Οι εφαρμογές React Native στέλνουν ακριβώς τα ίδια τυπικά συμβάντα με Joryio.track(), χρησιμοποιώντας τα ίδια ονόματα συμβάντων και τα ίδια ονόματα ιδιοτήτων στο wire που εκπέμπουν οι trackers των άλλων SDK (οι trackers μετατρέπουν τα inputs camelCase σε ιδιότητες συμβάντων snake_case στο wire). Η καρτέλα React Native σε κάθε ενότητα παραπάνω δείχνει την ισοδύναμη κλήση Joryio.track() για κάθε μέθοδο tracker.
Επόμενα βήματα
- Web SDK - Εγκατάσταση, ρυθμίσεις και πλήρης αναφορά API
- iOS SDK - Ενσωμάτωση του iOS SDK
- Android SDK - Ενσωμάτωση του Android SDK
- React Native SDK - Ενσωμάτωση του React Native SDK
- Προσαρμοσμένα συμβάντα - Παρακολούθηση προσαρμοσμένων συμβάντων
- E-Commerce API - E-commerce ενσωμάτωση από την πλευρά του διακομιστή