flowgrid-sdk 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -250
- package/dist/237.flowgrid.min.js +2 -0
- package/dist/237.flowgrid.min.js.map +1 -0
- package/dist/546.flowgrid.min.js +3 -0
- package/dist/546.flowgrid.min.js.LICENSE.txt +14 -0
- package/dist/546.flowgrid.min.js.map +1 -0
- package/dist/EXAMPLE.d.ts +1 -0
- package/dist/EXAMPLE.js +55 -0
- package/dist/EXAMPLE.js.map +1 -0
- package/dist/browser.d.ts +46 -103
- package/dist/browser.js +102 -0
- package/dist/browser.js.map +1 -0
- package/dist/flowgrid.min.js +1 -1
- package/dist/flowgrid.min.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client/transport.d.ts +14 -4
- package/dist/lib/client/transport.js +432 -0
- package/dist/lib/client/transport.js.map +1 -0
- package/dist/lib/consent/index.d.ts +0 -5
- package/dist/lib/consent/index.js +32 -0
- package/dist/lib/consent/index.js.map +1 -0
- package/dist/lib/consent/manager.js +336 -0
- package/dist/lib/consent/manager.js.map +1 -0
- package/dist/lib/consent/types.d.ts +3 -20
- package/dist/lib/consent/types.js +10 -0
- package/dist/lib/consent/types.js.map +1 -0
- package/dist/lib/features/analytics/attribution.d.ts +6 -47
- package/dist/lib/features/analytics/attribution.js +181 -0
- package/dist/lib/features/analytics/attribution.js.map +1 -0
- package/dist/lib/features/analytics/events.d.ts +1 -28
- package/dist/lib/features/analytics/events.js +256 -0
- package/dist/lib/features/analytics/events.js.map +1 -0
- package/dist/lib/features/analytics/funnels.js +260 -0
- package/dist/lib/features/analytics/funnels.js.map +1 -0
- package/dist/lib/features/analytics/heatmaps.d.ts +12 -19
- package/dist/lib/features/analytics/heatmaps.js +258 -0
- package/dist/lib/features/analytics/heatmaps.js.map +1 -0
- package/dist/lib/features/analytics/identify.d.ts +1 -21
- package/dist/lib/features/analytics/identify.js +213 -0
- package/dist/lib/features/analytics/identify.js.map +1 -0
- package/dist/lib/features/analytics/index.d.ts +2 -0
- package/dist/lib/features/analytics/index.js +15 -0
- package/dist/lib/features/analytics/index.js.map +1 -0
- package/dist/lib/features/analytics/page-views.d.ts +13 -30
- package/dist/lib/features/analytics/page-views.js +268 -0
- package/dist/lib/features/analytics/page-views.js.map +1 -0
- package/dist/lib/features/analytics/performance.d.ts +18 -24
- package/dist/lib/features/analytics/performance.js +232 -0
- package/dist/lib/features/analytics/performance.js.map +1 -0
- package/dist/lib/features/analytics/replay.d.ts +170 -0
- package/dist/lib/features/analytics/replay.js +381 -0
- package/dist/lib/features/analytics/replay.js.map +1 -0
- package/dist/lib/features/analytics/retention.d.ts +1 -76
- package/dist/lib/features/analytics/retention.js +135 -0
- package/dist/lib/features/analytics/retention.js.map +1 -0
- package/dist/lib/features/analytics/sessions.d.ts +12 -37
- package/dist/lib/features/analytics/sessions.js +213 -0
- package/dist/lib/features/analytics/sessions.js.map +1 -0
- package/dist/lib/features/core/activation.d.ts +1 -24
- package/dist/lib/features/core/activation.js +175 -0
- package/dist/lib/features/core/activation.js.map +1 -0
- package/dist/lib/features/core/experiment.d.ts +53 -21
- package/dist/lib/features/core/experiment.js +554 -0
- package/dist/lib/features/core/experiment.js.map +1 -0
- package/dist/lib/features/core/index.js +9 -0
- package/dist/lib/features/core/index.js.map +1 -0
- package/dist/lib/features/core/track-feature.d.ts +1 -8
- package/dist/lib/features/core/track-feature.js +119 -0
- package/dist/lib/features/core/track-feature.js.map +1 -0
- package/dist/lib/features/core/track-prompt.d.ts +5 -8
- package/dist/lib/features/core/track-prompt.js +181 -0
- package/dist/lib/features/core/track-prompt.js.map +1 -0
- package/dist/lib/features/ecommerce/cart.d.ts +1 -24
- package/dist/lib/features/ecommerce/cart.js +244 -0
- package/dist/lib/features/ecommerce/cart.js.map +1 -0
- package/dist/lib/features/ecommerce/checkout.d.ts +1 -28
- package/dist/lib/features/ecommerce/checkout.js +254 -0
- package/dist/lib/features/ecommerce/checkout.js.map +1 -0
- package/dist/lib/features/ecommerce/index.d.ts +0 -2
- package/dist/lib/features/ecommerce/index.js +15 -0
- package/dist/lib/features/ecommerce/index.js.map +1 -0
- package/dist/lib/features/ecommerce/ltv.d.ts +1 -69
- package/dist/lib/features/ecommerce/ltv.js +114 -0
- package/dist/lib/features/ecommerce/ltv.js.map +1 -0
- package/dist/lib/features/ecommerce/products.d.ts +1 -33
- package/dist/lib/features/ecommerce/products.js +223 -0
- package/dist/lib/features/ecommerce/products.js.map +1 -0
- package/dist/lib/features/ecommerce/promotions.d.ts +1 -30
- package/dist/lib/features/ecommerce/promotions.js +197 -0
- package/dist/lib/features/ecommerce/promotions.js.map +1 -0
- package/dist/lib/features/ecommerce/purchases.d.ts +1 -48
- package/dist/lib/features/ecommerce/purchases.js +193 -0
- package/dist/lib/features/ecommerce/purchases.js.map +1 -0
- package/dist/lib/features/ecommerce/refunds.d.ts +1 -27
- package/dist/lib/features/ecommerce/refunds.js +195 -0
- package/dist/lib/features/ecommerce/refunds.js.map +1 -0
- package/dist/lib/features/ecommerce/search.d.ts +1 -24
- package/dist/lib/features/ecommerce/search.js +156 -0
- package/dist/lib/features/ecommerce/search.js.map +1 -0
- package/dist/lib/features/ecommerce/subscriptions.d.ts +1 -28
- package/dist/lib/features/ecommerce/subscriptions.js +207 -0
- package/dist/lib/features/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/features/ecommerce/wishlist.d.ts +1 -28
- package/dist/lib/features/ecommerce/wishlist.js +186 -0
- package/dist/lib/features/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/features/enterprise/acquisition.d.ts +2 -57
- package/dist/lib/features/enterprise/acquisition.js +166 -0
- package/dist/lib/features/enterprise/acquisition.js.map +1 -0
- package/dist/lib/features/enterprise/alerts.d.ts +1 -37
- package/dist/lib/features/enterprise/alerts.js +246 -0
- package/dist/lib/features/enterprise/alerts.js.map +1 -0
- package/dist/lib/features/enterprise/churn.d.ts +1 -42
- package/dist/lib/features/enterprise/churn.js +175 -0
- package/dist/lib/features/enterprise/churn.js.map +1 -0
- package/dist/lib/features/enterprise/cohorts.d.ts +1 -37
- package/dist/lib/features/enterprise/cohorts.js +201 -0
- package/dist/lib/features/enterprise/cohorts.js.map +1 -0
- package/dist/lib/features/enterprise/engagement.d.ts +40 -46
- package/dist/lib/features/enterprise/engagement.js +335 -0
- package/dist/lib/features/enterprise/engagement.js.map +1 -0
- package/dist/lib/features/enterprise/forecasting.d.ts +0 -50
- package/dist/lib/features/enterprise/forecasting.js +232 -0
- package/dist/lib/features/enterprise/forecasting.js.map +1 -0
- package/dist/lib/features/enterprise/index.d.ts +1 -1
- package/dist/lib/features/enterprise/index.js +76 -0
- package/dist/lib/features/enterprise/index.js.map +1 -0
- package/dist/lib/features/enterprise/monetization.d.ts +1 -60
- package/dist/lib/features/enterprise/monetization.js +146 -0
- package/dist/lib/features/enterprise/monetization.js.map +1 -0
- package/dist/lib/features/enterprise/multi-path-funnels.d.ts +1 -17
- package/dist/lib/features/enterprise/multi-path-funnels.js +205 -0
- package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/features/enterprise/paths.d.ts +1 -56
- package/dist/lib/features/enterprise/paths.js +149 -0
- package/dist/lib/features/enterprise/paths.js.map +1 -0
- package/dist/lib/features/enterprise/security.d.ts +8 -57
- package/dist/lib/features/enterprise/security.js +202 -0
- package/dist/lib/features/enterprise/security.js.map +1 -0
- package/dist/lib/features/enterprise/support.d.ts +3 -42
- package/dist/lib/features/enterprise/support.js +162 -0
- package/dist/lib/features/enterprise/support.js.map +1 -0
- package/dist/lib/flowgrid.d.ts +278 -0
- package/dist/lib/flowgrid.js +323 -0
- package/dist/lib/flowgrid.js.map +1 -0
- package/dist/lib/frameworks/index.d.ts +13 -6
- package/dist/lib/frameworks/index.js +18 -0
- package/dist/lib/frameworks/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/client.js +355 -0
- package/dist/lib/frameworks/nextjs/client.js.map +1 -0
- package/dist/lib/frameworks/nextjs/index.js +31 -0
- package/dist/lib/frameworks/nextjs/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/server.js +259 -0
- package/dist/lib/frameworks/nextjs/server.js.map +1 -0
- package/dist/lib/frameworks/node/index.js +391 -0
- package/dist/lib/frameworks/node/index.js.map +1 -0
- package/dist/lib/frameworks/nuxt/index.js +288 -0
- package/dist/lib/frameworks/nuxt/index.js.map +1 -0
- package/dist/lib/frameworks/react/CookieBanner.js +166 -0
- package/dist/lib/frameworks/react/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/react/index.d.ts +2 -2
- package/dist/lib/frameworks/react/index.js +271 -0
- package/dist/lib/frameworks/react/index.js.map +1 -0
- package/dist/lib/frameworks/vue/CookieBanner.js +165 -0
- package/dist/lib/frameworks/vue/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/vue/index.d.ts +2 -2
- package/dist/lib/frameworks/vue/index.js +390 -0
- package/dist/lib/frameworks/vue/index.js.map +1 -0
- package/dist/lib/tracking/analytics/attribution.d.ts +14 -0
- package/dist/lib/tracking/analytics/attribution.js +18 -0
- package/dist/lib/tracking/analytics/attribution.js.map +1 -0
- package/dist/lib/tracking/analytics/events.d.ts +26 -0
- package/dist/lib/tracking/analytics/events.js +30 -0
- package/dist/lib/tracking/analytics/events.js.map +1 -0
- package/dist/lib/tracking/analytics/funnels.d.ts +16 -0
- package/dist/lib/tracking/analytics/funnels.js +22 -0
- package/dist/lib/tracking/analytics/funnels.js.map +1 -0
- package/dist/lib/tracking/analytics/heatmaps.d.ts +27 -0
- package/dist/lib/tracking/analytics/heatmaps.js +22 -0
- package/dist/lib/tracking/analytics/heatmaps.js.map +1 -0
- package/dist/lib/tracking/analytics/identify.d.ts +16 -0
- package/dist/lib/tracking/analytics/identify.js +22 -0
- package/dist/lib/tracking/analytics/identify.js.map +1 -0
- package/dist/lib/tracking/analytics/index.d.ts +10 -0
- package/dist/lib/tracking/analytics/index.js +11 -0
- package/dist/lib/tracking/analytics/index.js.map +1 -0
- package/dist/lib/tracking/analytics/page-views.d.ts +29 -0
- package/dist/lib/tracking/analytics/page-views.js +50 -0
- package/dist/lib/tracking/analytics/page-views.js.map +1 -0
- package/dist/lib/tracking/analytics/performance.d.ts +22 -0
- package/dist/lib/tracking/analytics/performance.js +22 -0
- package/dist/lib/tracking/analytics/performance.js.map +1 -0
- package/dist/lib/tracking/analytics/replay.d.ts +34 -0
- package/dist/lib/tracking/analytics/replay.js +46 -0
- package/dist/lib/tracking/analytics/replay.js.map +1 -0
- package/dist/lib/tracking/analytics/retention.d.ts +10 -0
- package/dist/lib/tracking/analytics/retention.js +10 -0
- package/dist/lib/tracking/analytics/retention.js.map +1 -0
- package/dist/lib/tracking/analytics/sessions.d.ts +20 -0
- package/dist/lib/tracking/analytics/sessions.js +26 -0
- package/dist/lib/tracking/analytics/sessions.js.map +1 -0
- package/dist/lib/tracking/core/activation.d.ts +23 -0
- package/dist/lib/tracking/core/activation.js +33 -0
- package/dist/lib/tracking/core/activation.js.map +1 -0
- package/dist/lib/tracking/core/experiment.d.ts +122 -0
- package/dist/lib/tracking/core/experiment.js +150 -0
- package/dist/lib/tracking/core/experiment.js.map +1 -0
- package/dist/lib/tracking/core/feature.d.ts +13 -0
- package/dist/lib/tracking/core/feature.js +14 -0
- package/dist/lib/tracking/core/feature.js.map +1 -0
- package/dist/lib/tracking/core/index.d.ts +4 -0
- package/dist/lib/tracking/core/index.js +5 -0
- package/dist/lib/tracking/core/index.js.map +1 -0
- package/dist/lib/tracking/core/prompt.d.ts +18 -0
- package/dist/lib/tracking/core/prompt.js +26 -0
- package/dist/lib/tracking/core/prompt.js.map +1 -0
- package/dist/lib/tracking/ecommerce/cart.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/cart.js +22 -0
- package/dist/lib/tracking/ecommerce/cart.js.map +1 -0
- package/dist/lib/tracking/ecommerce/checkout.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/checkout.js +22 -0
- package/dist/lib/tracking/ecommerce/checkout.js.map +1 -0
- package/dist/lib/tracking/ecommerce/index.d.ts +10 -0
- package/dist/lib/tracking/ecommerce/index.js +11 -0
- package/dist/lib/tracking/ecommerce/index.js.map +1 -0
- package/dist/lib/tracking/ecommerce/ltv.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/ltv.js +14 -0
- package/dist/lib/tracking/ecommerce/ltv.js.map +1 -0
- package/dist/lib/tracking/ecommerce/products.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/products.js +18 -0
- package/dist/lib/tracking/ecommerce/products.js.map +1 -0
- package/dist/lib/tracking/ecommerce/promotions.d.ts +14 -0
- package/dist/lib/tracking/ecommerce/promotions.js +25 -0
- package/dist/lib/tracking/ecommerce/promotions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/purchases.d.ts +11 -0
- package/dist/lib/tracking/ecommerce/purchases.js +10 -0
- package/dist/lib/tracking/ecommerce/purchases.js.map +1 -0
- package/dist/lib/tracking/ecommerce/refunds.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/refunds.js +22 -0
- package/dist/lib/tracking/ecommerce/refunds.js.map +1 -0
- package/dist/lib/tracking/ecommerce/search.d.ts +24 -0
- package/dist/lib/tracking/ecommerce/search.js +22 -0
- package/dist/lib/tracking/ecommerce/search.js.map +1 -0
- package/dist/lib/tracking/ecommerce/subscriptions.d.ts +21 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js +38 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/wishlist.d.ts +19 -0
- package/dist/lib/tracking/ecommerce/wishlist.js +26 -0
- package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/tracking/enterprise/acquisition.d.ts +25 -0
- package/dist/lib/tracking/enterprise/acquisition.js +22 -0
- package/dist/lib/tracking/enterprise/acquisition.js.map +1 -0
- package/dist/lib/tracking/enterprise/alerts.d.ts +32 -0
- package/dist/lib/tracking/enterprise/alerts.js +30 -0
- package/dist/lib/tracking/enterprise/alerts.js.map +1 -0
- package/dist/lib/tracking/enterprise/churn.d.ts +23 -0
- package/dist/lib/tracking/enterprise/churn.js +22 -0
- package/dist/lib/tracking/enterprise/churn.js.map +1 -0
- package/dist/lib/tracking/enterprise/cohorts.d.ts +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js.map +1 -0
- package/dist/lib/tracking/enterprise/engagement.d.ts +31 -0
- package/dist/lib/tracking/enterprise/engagement.js +44 -0
- package/dist/lib/tracking/enterprise/engagement.js.map +1 -0
- package/dist/lib/tracking/enterprise/forecasting.d.ts +18 -0
- package/dist/lib/tracking/enterprise/forecasting.js +22 -0
- package/dist/lib/tracking/enterprise/forecasting.js.map +1 -0
- package/dist/lib/tracking/enterprise/index.d.ts +11 -0
- package/dist/lib/tracking/enterprise/index.js +12 -0
- package/dist/lib/tracking/enterprise/index.js.map +1 -0
- package/dist/lib/tracking/enterprise/monetization.d.ts +14 -0
- package/dist/lib/tracking/enterprise/monetization.js +10 -0
- package/dist/lib/tracking/enterprise/monetization.js.map +1 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.d.ts +20 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js +18 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/tracking/enterprise/paths.d.ts +20 -0
- package/dist/lib/tracking/enterprise/paths.js +18 -0
- package/dist/lib/tracking/enterprise/paths.js.map +1 -0
- package/dist/lib/tracking/enterprise/security.d.ts +28 -0
- package/dist/lib/tracking/enterprise/security.js +26 -0
- package/dist/lib/tracking/enterprise/security.js.map +1 -0
- package/dist/lib/tracking/enterprise/support.d.ts +25 -0
- package/dist/lib/tracking/enterprise/support.js +22 -0
- package/dist/lib/tracking/enterprise/support.js.map +1 -0
- package/dist/lib/tracking/index.d.ts +4 -0
- package/dist/lib/tracking/index.js +5 -0
- package/dist/lib/tracking/index.js.map +1 -0
- package/dist/lib/types/analytics.d.ts +10 -2
- package/dist/lib/types/analytics.js +6 -0
- package/dist/lib/types/analytics.js.map +1 -0
- package/dist/lib/types/common.js +6 -0
- package/dist/lib/types/common.js.map +1 -0
- package/dist/lib/types/ecommerce.js +6 -0
- package/dist/lib/types/ecommerce.js.map +1 -0
- package/dist/lib/types/index.js +8 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/browser.d.ts +16 -0
- package/dist/lib/utils/browser.js +32 -0
- package/dist/lib/utils/browser.js.map +1 -0
- package/dist/lib/utils/identity.js +346 -0
- package/dist/lib/utils/identity.js.map +1 -0
- package/dist/lib/utils/storage.js +105 -0
- package/dist/lib/utils/storage.js.map +1 -0
- package/dist/umd/237.index.js +2 -0
- package/dist/umd/237.index.js.map +1 -0
- package/dist/umd/546.index.js +3 -0
- package/dist/umd/546.index.js.LICENSE.txt +14 -0
- package/dist/umd/546.index.js.map +1 -0
- package/dist/umd/index.js +2 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +27 -80
- package/dist/lib/features/ecommerce/inventory.d.ts +0 -219
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ecommerce - Purchase/Transaction Tracking
|
|
3
|
+
* @module features/ecommerce/purchases
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Track completed purchases, transactions, and revenue with
|
|
7
|
+
* full order details and customer information.
|
|
8
|
+
*
|
|
9
|
+
* @useCases
|
|
10
|
+
* - Track completed purchases
|
|
11
|
+
* - Calculate revenue metrics
|
|
12
|
+
* - Monitor order values
|
|
13
|
+
* - Analyze purchase patterns
|
|
14
|
+
* - Track customer lifetime value
|
|
15
|
+
*
|
|
16
|
+
* @metrics
|
|
17
|
+
* - Total revenue
|
|
18
|
+
* - Number of orders
|
|
19
|
+
* - Average order value
|
|
20
|
+
* - Revenue per customer
|
|
21
|
+
* - Items per order
|
|
22
|
+
*
|
|
23
|
+
* @chartData
|
|
24
|
+
* - Line chart: Revenue over time
|
|
25
|
+
* - Bar chart: Revenue by product/category
|
|
26
|
+
* - KPI cards: Revenue, AOV, Orders
|
|
27
|
+
* - Table: Recent transactions
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const purchases = new Purchases(webId, endpoint, apiKey);
|
|
32
|
+
*
|
|
33
|
+
* // Track a purchase
|
|
34
|
+
* await purchases.track({
|
|
35
|
+
* order: {
|
|
36
|
+
* orderId: 'ORD-12345',
|
|
37
|
+
* items: orderItems,
|
|
38
|
+
* total: 299.99,
|
|
39
|
+
* currency: 'USD'
|
|
40
|
+
* }
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
import { FlowGridTransport } from "../../client/transport";
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// PURCHASES CLASS
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Purchases - Track completed purchases and revenue.
|
|
50
|
+
*
|
|
51
|
+
* @extends FlowGridTransport
|
|
52
|
+
*
|
|
53
|
+
* @description
|
|
54
|
+
* Provides purchase tracking capabilities including:
|
|
55
|
+
* - Purchase completion events
|
|
56
|
+
* - Revenue tracking
|
|
57
|
+
* - Order details capture
|
|
58
|
+
* - Customer LTV tracking
|
|
59
|
+
* - Attribution tracking
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const purchases = new Purchases(webId, endpoint, apiKey);
|
|
64
|
+
*
|
|
65
|
+
* // Track completed purchase
|
|
66
|
+
* await purchases.track({
|
|
67
|
+
* order: {
|
|
68
|
+
* orderId: 'ORD-12345',
|
|
69
|
+
* items: cartItems,
|
|
70
|
+
* subtotal: 279.99,
|
|
71
|
+
* discountTotal: 30.00,
|
|
72
|
+
* shippingTotal: 9.99,
|
|
73
|
+
* taxTotal: 26.00,
|
|
74
|
+
* total: 285.98,
|
|
75
|
+
* currency: 'USD',
|
|
76
|
+
* shipping: { method: 'express', cost: 9.99 },
|
|
77
|
+
* payment: { method: 'credit_card' }
|
|
78
|
+
* },
|
|
79
|
+
* userId: 'user_123'
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export class Purchases extends FlowGridTransport {
|
|
84
|
+
/**
|
|
85
|
+
* Tracks a completed purchase.
|
|
86
|
+
*
|
|
87
|
+
* @param config - Purchase configuration
|
|
88
|
+
* @returns Promise resolving to purchase response
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* await purchases.track({
|
|
93
|
+
* order: {
|
|
94
|
+
* orderId: 'ORD-98765',
|
|
95
|
+
* items: [
|
|
96
|
+
* { productId: 'PROD-1', name: 'Widget', price: 29.99, quantity: 2, lineTotal: 59.98 }
|
|
97
|
+
* ],
|
|
98
|
+
* subtotal: 59.98,
|
|
99
|
+
* discountTotal: 0,
|
|
100
|
+
* shippingTotal: 5.99,
|
|
101
|
+
* taxTotal: 5.40,
|
|
102
|
+
* total: 71.37,
|
|
103
|
+
* currency: 'USD'
|
|
104
|
+
* },
|
|
105
|
+
* attribution: {
|
|
106
|
+
* source: 'google',
|
|
107
|
+
* medium: 'cpc',
|
|
108
|
+
* campaign: 'spring_sale'
|
|
109
|
+
* }
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
async track(config) {
|
|
114
|
+
const order = config.order;
|
|
115
|
+
return await this.init("purchase", {
|
|
116
|
+
type: "ecommerce",
|
|
117
|
+
subtype: "purchase",
|
|
118
|
+
order: {
|
|
119
|
+
orderId: order.orderId,
|
|
120
|
+
items: order.items,
|
|
121
|
+
subtotal: order.subtotal,
|
|
122
|
+
discountTotal: order.discountTotal,
|
|
123
|
+
shippingTotal: order.shippingTotal,
|
|
124
|
+
taxTotal: order.taxTotal,
|
|
125
|
+
total: order.total,
|
|
126
|
+
currency: order.currency,
|
|
127
|
+
shipping: order.shipping,
|
|
128
|
+
payment: order.payment,
|
|
129
|
+
coupons: order.coupons,
|
|
130
|
+
affiliation: order.affiliation
|
|
131
|
+
},
|
|
132
|
+
revenue: order.total,
|
|
133
|
+
itemCount: order.items.reduce((sum, i) => sum + i.quantity, 0),
|
|
134
|
+
userId: config.userId,
|
|
135
|
+
sessionId: config.sessionId,
|
|
136
|
+
attribution: config.attribution,
|
|
137
|
+
...config.properties,
|
|
138
|
+
timestamp: new Date().toISOString()
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Tracks order status change.
|
|
143
|
+
*
|
|
144
|
+
* @param orderId - Order identifier
|
|
145
|
+
* @param newStatus - New order status
|
|
146
|
+
* @param previousStatus - Previous status (optional)
|
|
147
|
+
* @returns Promise resolving to status change response
|
|
148
|
+
*/
|
|
149
|
+
async statusChange(orderId, newStatus, previousStatus) {
|
|
150
|
+
return await this.init("order_status_change", {
|
|
151
|
+
type: "ecommerce",
|
|
152
|
+
subtype: "order_status_change",
|
|
153
|
+
orderId,
|
|
154
|
+
newStatus,
|
|
155
|
+
previousStatus,
|
|
156
|
+
timestamp: new Date().toISOString()
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Tracks order shipped event.
|
|
161
|
+
*
|
|
162
|
+
* @param orderId - Order identifier
|
|
163
|
+
* @param shipping - Shipping details with tracking
|
|
164
|
+
* @returns Promise resolving to shipped response
|
|
165
|
+
*/
|
|
166
|
+
async shipped(orderId, shipping) {
|
|
167
|
+
return await this.init("order_shipped", {
|
|
168
|
+
type: "ecommerce",
|
|
169
|
+
subtype: "order_shipped",
|
|
170
|
+
orderId,
|
|
171
|
+
shipping,
|
|
172
|
+
timestamp: new Date().toISOString()
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Tracks order delivered event.
|
|
177
|
+
*
|
|
178
|
+
* @param orderId - Order identifier
|
|
179
|
+
* @param deliveredAt - Delivery timestamp
|
|
180
|
+
* @returns Promise resolving to delivered response
|
|
181
|
+
*/
|
|
182
|
+
async delivered(orderId, deliveredAt) {
|
|
183
|
+
return await this.init("order_delivered", {
|
|
184
|
+
type: "ecommerce",
|
|
185
|
+
subtype: "order_delivered",
|
|
186
|
+
orderId,
|
|
187
|
+
deliveredAt: deliveredAt || new Date().toISOString(),
|
|
188
|
+
timestamp: new Date().toISOString()
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
export default Purchases;
|
|
193
|
+
//# sourceMappingURL=purchases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchases.js","sourceRoot":"","sources":["../../../../src/lib/features/ecommerce/purchases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA4H3D,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,KAAK,CAAC,MAAsB;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B;YACD,OAAO,EAAE,KAAK,CAAC,KAAK;YACpB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,GAAG,MAAM,CAAC,UAAU;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,SAA0B,EAC1B,cAAgC;QAEhC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC5C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,qBAAqB;YAC9B,OAAO;YACP,SAAS;YACT,cAAc;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,QAAsB;QACnD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,eAAe;YACxB,OAAO;YACP,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,WAAoB;QACnD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,iBAAiB;YAC1B,OAAO;YACP,WAAW,EAAE,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CAEF;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* ```
|
|
43
43
|
*/
|
|
44
44
|
import { FlowGridTransport } from "../../client/transport";
|
|
45
|
-
import { Refund, CartItem, MoneyValue,
|
|
45
|
+
import { Refund, CartItem, MoneyValue, TimeSeriesData } from "../../types";
|
|
46
46
|
/**
|
|
47
47
|
* Configuration for tracking a refund.
|
|
48
48
|
*/
|
|
@@ -202,31 +202,5 @@ export declare class Refunds extends FlowGridTransport {
|
|
|
202
202
|
* @returns Promise resolving to completion response
|
|
203
203
|
*/
|
|
204
204
|
complete(refundId: string, processedAmount: number): Promise<RefundResponse>;
|
|
205
|
-
/**
|
|
206
|
-
* Retrieves refund analytics for dashboards and charts.
|
|
207
|
-
*
|
|
208
|
-
* @param filter - Date range filter
|
|
209
|
-
* @returns Promise resolving to refund analytics
|
|
210
|
-
*
|
|
211
|
-
* @example
|
|
212
|
-
* ```typescript
|
|
213
|
-
* const analytics = await refunds.getAnalytics({
|
|
214
|
-
* range: 'last30days'
|
|
215
|
-
* });
|
|
216
|
-
*
|
|
217
|
-
* // Bar chart - refunds by reason
|
|
218
|
-
* const reasonChart = analytics.byReason.map(r => ({
|
|
219
|
-
* name: r.reason,
|
|
220
|
-
* value: r.count
|
|
221
|
-
* }));
|
|
222
|
-
*
|
|
223
|
-
* // Table - problematic products
|
|
224
|
-
* const problemProducts = analytics.topRefundedProducts;
|
|
225
|
-
*
|
|
226
|
-
* // Revenue impact KPI
|
|
227
|
-
* const impact = analytics.revenueImpact.refundImpactPercent;
|
|
228
|
-
* ```
|
|
229
|
-
*/
|
|
230
|
-
getAnalytics(filter?: DateRangeFilter): Promise<RefundAnalyticsData>;
|
|
231
205
|
}
|
|
232
206
|
export default Refunds;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ecommerce - Refund Tracking
|
|
3
|
+
* @module features/ecommerce/refunds
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Track refunds, returns, and order cancellations with
|
|
7
|
+
* reason analysis and revenue impact.
|
|
8
|
+
*
|
|
9
|
+
* @useCases
|
|
10
|
+
* - Track full and partial refunds
|
|
11
|
+
* - Analyze refund reasons
|
|
12
|
+
* - Monitor return rates by product
|
|
13
|
+
* - Calculate net revenue after refunds
|
|
14
|
+
* - Identify problematic products
|
|
15
|
+
*
|
|
16
|
+
* @metrics
|
|
17
|
+
* - Total refunds
|
|
18
|
+
* - Refund rate
|
|
19
|
+
* - Average refund value
|
|
20
|
+
* - Refunds by reason
|
|
21
|
+
* - Net revenue impact
|
|
22
|
+
*
|
|
23
|
+
* @chartData
|
|
24
|
+
* - Bar chart: Refunds by reason
|
|
25
|
+
* - Line chart: Refund trends
|
|
26
|
+
* - Table: Products with highest return rates
|
|
27
|
+
* - KPI: Refund rate vs benchmark
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const refunds = new Refunds(webId, endpoint, apiKey);
|
|
32
|
+
*
|
|
33
|
+
* // Track a refund
|
|
34
|
+
* await refunds.track({
|
|
35
|
+
* orderId: 'ORD-12345',
|
|
36
|
+
* refundId: 'REF-001',
|
|
37
|
+
* amount: 49.99,
|
|
38
|
+
* currency: 'USD',
|
|
39
|
+
* reason: 'defective',
|
|
40
|
+
* isFullRefund: false
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
import { FlowGridTransport } from "../../client/transport";
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// REFUNDS CLASS
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Refunds - Track refunds and returns.
|
|
50
|
+
*
|
|
51
|
+
* @extends FlowGridTransport
|
|
52
|
+
*
|
|
53
|
+
* @description
|
|
54
|
+
* Provides refund tracking capabilities including:
|
|
55
|
+
* - Full refund tracking
|
|
56
|
+
* - Partial refund tracking
|
|
57
|
+
* - Refund reason analysis
|
|
58
|
+
* - Return rate monitoring
|
|
59
|
+
* - Revenue impact calculation
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const refunds = new Refunds(webId, endpoint, apiKey);
|
|
64
|
+
*
|
|
65
|
+
* // Track full refund
|
|
66
|
+
* await refunds.track({
|
|
67
|
+
* orderId: 'ORD-12345',
|
|
68
|
+
* refundId: 'REF-001',
|
|
69
|
+
* amount: 149.99,
|
|
70
|
+
* currency: 'USD',
|
|
71
|
+
* reason: 'customer_request',
|
|
72
|
+
* isFullRefund: true
|
|
73
|
+
* });
|
|
74
|
+
*
|
|
75
|
+
* // Track partial refund with items
|
|
76
|
+
* await refunds.track({
|
|
77
|
+
* orderId: 'ORD-12345',
|
|
78
|
+
* refundId: 'REF-002',
|
|
79
|
+
* items: [refundedItem],
|
|
80
|
+
* amount: 49.99,
|
|
81
|
+
* currency: 'USD',
|
|
82
|
+
* reason: 'defective',
|
|
83
|
+
* isFullRefund: false
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export class Refunds extends FlowGridTransport {
|
|
88
|
+
/**
|
|
89
|
+
* Tracks a refund event.
|
|
90
|
+
*
|
|
91
|
+
* @param config - Refund configuration
|
|
92
|
+
* @returns Promise resolving to refund response
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* await refunds.track({
|
|
97
|
+
* orderId: 'ORD-98765',
|
|
98
|
+
* refundId: 'REF-123',
|
|
99
|
+
* items: [
|
|
100
|
+
* { productId: 'PROD-1', name: 'Widget', price: 29.99, quantity: 1, lineTotal: 29.99 }
|
|
101
|
+
* ],
|
|
102
|
+
* amount: 29.99,
|
|
103
|
+
* currency: 'USD',
|
|
104
|
+
* reason: 'wrong_item',
|
|
105
|
+
* isFullRefund: false,
|
|
106
|
+
* initiatedBy: 'customer'
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
async track(config) {
|
|
111
|
+
return await this.init("refund", {
|
|
112
|
+
type: "ecommerce",
|
|
113
|
+
subtype: "refund",
|
|
114
|
+
orderId: config.orderId,
|
|
115
|
+
refundId: config.refundId,
|
|
116
|
+
items: config.items,
|
|
117
|
+
amount: config.amount,
|
|
118
|
+
currency: config.currency,
|
|
119
|
+
reason: config.reason,
|
|
120
|
+
isFullRefund: config.isFullRefund,
|
|
121
|
+
userId: config.userId,
|
|
122
|
+
initiatedBy: config.initiatedBy,
|
|
123
|
+
...config.properties,
|
|
124
|
+
timestamp: new Date().toISOString()
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Tracks a refund request (before processing).
|
|
129
|
+
*
|
|
130
|
+
* @param orderId - Original order ID
|
|
131
|
+
* @param items - Items requested for refund
|
|
132
|
+
* @param reason - Refund reason
|
|
133
|
+
* @returns Promise resolving to request response
|
|
134
|
+
*/
|
|
135
|
+
async request(orderId, items, reason) {
|
|
136
|
+
return await this.init("refund_requested", {
|
|
137
|
+
type: "ecommerce",
|
|
138
|
+
subtype: "refund_requested",
|
|
139
|
+
orderId,
|
|
140
|
+
items,
|
|
141
|
+
reason,
|
|
142
|
+
timestamp: new Date().toISOString()
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Tracks refund approval.
|
|
147
|
+
*
|
|
148
|
+
* @param refundId - Refund identifier
|
|
149
|
+
* @param approvedAmount - Approved refund amount
|
|
150
|
+
* @returns Promise resolving to approval response
|
|
151
|
+
*/
|
|
152
|
+
async approve(refundId, approvedAmount) {
|
|
153
|
+
return await this.init("refund_approved", {
|
|
154
|
+
type: "ecommerce",
|
|
155
|
+
subtype: "refund_approved",
|
|
156
|
+
refundId,
|
|
157
|
+
approvedAmount,
|
|
158
|
+
timestamp: new Date().toISOString()
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Tracks refund denial.
|
|
163
|
+
*
|
|
164
|
+
* @param refundId - Refund identifier
|
|
165
|
+
* @param denialReason - Reason for denial
|
|
166
|
+
* @returns Promise resolving to denial response
|
|
167
|
+
*/
|
|
168
|
+
async deny(refundId, denialReason) {
|
|
169
|
+
return await this.init("refund_denied", {
|
|
170
|
+
type: "ecommerce",
|
|
171
|
+
subtype: "refund_denied",
|
|
172
|
+
refundId,
|
|
173
|
+
denialReason,
|
|
174
|
+
timestamp: new Date().toISOString()
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Tracks refund completion (money returned).
|
|
179
|
+
*
|
|
180
|
+
* @param refundId - Refund identifier
|
|
181
|
+
* @param processedAmount - Amount actually refunded
|
|
182
|
+
* @returns Promise resolving to completion response
|
|
183
|
+
*/
|
|
184
|
+
async complete(refundId, processedAmount) {
|
|
185
|
+
return await this.init("refund_completed", {
|
|
186
|
+
type: "ecommerce",
|
|
187
|
+
subtype: "refund_completed",
|
|
188
|
+
refundId,
|
|
189
|
+
processedAmount,
|
|
190
|
+
timestamp: new Date().toISOString()
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export default Refunds;
|
|
195
|
+
//# sourceMappingURL=refunds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../../../src/lib/features/ecommerce/refunds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAgF3D,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,OAAQ,SAAQ,iBAAiB;IAC5C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,GAAG,MAAM,CAAC,UAAU;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,KAAkB,EAClB,MAAe;QAEf,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACzC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,kBAAkB;YAC3B,OAAO;YACP,KAAK;YACL,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,cAAsB;QACpD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,iBAAiB;YAC1B,QAAQ;YACR,cAAc;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,YAAoB;QAC/C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,eAAe;YACxB,QAAQ;YACR,YAAY;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,eAAuB;QACtD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACzC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ;YACR,eAAe;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CAEF;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
import { FlowGridTransport } from "../../client/transport";
|
|
42
|
-
import { Product,
|
|
42
|
+
import { Product, TimeSeriesData } from "../../types";
|
|
43
43
|
/**
|
|
44
44
|
* Search query configuration.
|
|
45
45
|
*/
|
|
@@ -198,28 +198,5 @@ export declare class SearchAnalytics extends FlowGridTransport {
|
|
|
198
198
|
* @returns Promise resolving to search response
|
|
199
199
|
*/
|
|
200
200
|
trackSuggestion(partialQuery: string, selectedSuggestion: string, suggestionPosition: number): Promise<SearchResponse>;
|
|
201
|
-
/**
|
|
202
|
-
* Gets search analytics for dashboards.
|
|
203
|
-
*
|
|
204
|
-
* @param filter - Date range filter
|
|
205
|
-
* @returns Promise resolving to search analytics
|
|
206
|
-
*
|
|
207
|
-
* @example
|
|
208
|
-
* ```typescript
|
|
209
|
-
* const analytics = await search.getAnalytics({
|
|
210
|
-
* range: 'last30days'
|
|
211
|
-
* });
|
|
212
|
-
*
|
|
213
|
-
* // Word cloud data
|
|
214
|
-
* const wordCloud = analytics.topQueries.map(q => ({
|
|
215
|
-
* text: q.query,
|
|
216
|
-
* value: q.searches
|
|
217
|
-
* }));
|
|
218
|
-
*
|
|
219
|
-
* // Table - zero result queries to fix
|
|
220
|
-
* const toFix = analytics.zeroResultQueries;
|
|
221
|
-
* ```
|
|
222
|
-
*/
|
|
223
|
-
getAnalytics(filter?: DateRangeFilter): Promise<SearchAnalyticsData>;
|
|
224
201
|
}
|
|
225
202
|
export default SearchAnalytics;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ecommerce - Search Analytics
|
|
3
|
+
* @module features/ecommerce/search
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Track site search behavior to improve product discovery
|
|
7
|
+
* and conversion from search results.
|
|
8
|
+
*
|
|
9
|
+
* @useCases
|
|
10
|
+
* - Track search queries and results
|
|
11
|
+
* - Identify zero-result searches
|
|
12
|
+
* - Measure search-to-purchase conversion
|
|
13
|
+
* - Analyze popular search terms
|
|
14
|
+
* - Optimize search suggestions
|
|
15
|
+
*
|
|
16
|
+
* @metrics
|
|
17
|
+
* - Search volume
|
|
18
|
+
* - Zero-result rate
|
|
19
|
+
* - Search refinement rate
|
|
20
|
+
* - Click-through rate from search
|
|
21
|
+
* - Conversion from search
|
|
22
|
+
*
|
|
23
|
+
* @chartData
|
|
24
|
+
* - Word cloud: Popular search terms
|
|
25
|
+
* - Bar chart: Top queries
|
|
26
|
+
* - Table: Zero-result queries
|
|
27
|
+
* - Funnel: Search to purchase
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const search = new SearchAnalytics(webId, endpoint, apiKey);
|
|
32
|
+
*
|
|
33
|
+
* // Track search
|
|
34
|
+
* await search.track({
|
|
35
|
+
* query: 'wireless headphones',
|
|
36
|
+
* resultsCount: 42,
|
|
37
|
+
* filters: { brand: 'Sony' }
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
import { FlowGridTransport } from "../../client/transport";
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// SEARCH ANALYTICS CLASS
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* SearchAnalytics - Track site search behavior.
|
|
47
|
+
*
|
|
48
|
+
* @extends FlowGridTransport
|
|
49
|
+
*
|
|
50
|
+
* @description
|
|
51
|
+
* Provides search analytics including:
|
|
52
|
+
* - Search query tracking
|
|
53
|
+
* - Result click tracking
|
|
54
|
+
* - Zero-result detection
|
|
55
|
+
* - Search refinement tracking
|
|
56
|
+
* - Search to conversion analysis
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const search = new SearchAnalytics(webId, endpoint, apiKey);
|
|
61
|
+
*
|
|
62
|
+
* // Track search
|
|
63
|
+
* await search.track({
|
|
64
|
+
* query: 'running shoes',
|
|
65
|
+
* resultsCount: 156,
|
|
66
|
+
* filters: { size: '10', color: 'black' },
|
|
67
|
+
* sortBy: 'price_asc'
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* // Track click from search results
|
|
71
|
+
* await search.trackClick({
|
|
72
|
+
* query: 'running shoes',
|
|
73
|
+
* product: clickedProduct,
|
|
74
|
+
* position: 3
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export class SearchAnalytics extends FlowGridTransport {
|
|
79
|
+
/**
|
|
80
|
+
* Tracks a search query.
|
|
81
|
+
*
|
|
82
|
+
* @param config - Search configuration
|
|
83
|
+
* @returns Promise resolving to search response
|
|
84
|
+
*/
|
|
85
|
+
async track(config) {
|
|
86
|
+
return await this.init("site_search", {
|
|
87
|
+
type: "ecommerce",
|
|
88
|
+
subtype: "site_search",
|
|
89
|
+
query: config.query,
|
|
90
|
+
resultsCount: config.resultsCount,
|
|
91
|
+
hasResults: config.resultsCount > 0,
|
|
92
|
+
category: config.category,
|
|
93
|
+
filters: config.filters,
|
|
94
|
+
sortBy: config.sortBy,
|
|
95
|
+
page: config.page || 1,
|
|
96
|
+
userId: config.userId,
|
|
97
|
+
sessionId: config.sessionId,
|
|
98
|
+
timestamp: new Date().toISOString()
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Tracks a click on search result.
|
|
103
|
+
*
|
|
104
|
+
* @param config - Search click configuration
|
|
105
|
+
* @returns Promise resolving to search response
|
|
106
|
+
*/
|
|
107
|
+
async trackClick(config) {
|
|
108
|
+
return await this.init("search_result_click", {
|
|
109
|
+
type: "ecommerce",
|
|
110
|
+
subtype: "search_result_click",
|
|
111
|
+
query: config.query,
|
|
112
|
+
product: config.product,
|
|
113
|
+
position: config.position,
|
|
114
|
+
page: config.page || 1,
|
|
115
|
+
timestamp: new Date().toISOString()
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Tracks search refinement (modifying search).
|
|
120
|
+
*
|
|
121
|
+
* @param originalQuery - Original search query
|
|
122
|
+
* @param refinedQuery - New/refined query
|
|
123
|
+
* @param refinementType - Type of refinement
|
|
124
|
+
* @returns Promise resolving to search response
|
|
125
|
+
*/
|
|
126
|
+
async trackRefinement(originalQuery, refinedQuery, refinementType) {
|
|
127
|
+
return await this.init("search_refinement", {
|
|
128
|
+
type: "ecommerce",
|
|
129
|
+
subtype: "search_refinement",
|
|
130
|
+
originalQuery,
|
|
131
|
+
refinedQuery,
|
|
132
|
+
refinementType,
|
|
133
|
+
timestamp: new Date().toISOString()
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Tracks autocomplete/suggestion selection.
|
|
138
|
+
*
|
|
139
|
+
* @param partialQuery - Partial query typed
|
|
140
|
+
* @param selectedSuggestion - Suggestion selected
|
|
141
|
+
* @param suggestionPosition - Position of suggestion
|
|
142
|
+
* @returns Promise resolving to search response
|
|
143
|
+
*/
|
|
144
|
+
async trackSuggestion(partialQuery, selectedSuggestion, suggestionPosition) {
|
|
145
|
+
return await this.init("search_suggestion", {
|
|
146
|
+
type: "ecommerce",
|
|
147
|
+
subtype: "search_suggestion",
|
|
148
|
+
partialQuery,
|
|
149
|
+
selectedSuggestion,
|
|
150
|
+
suggestionPosition,
|
|
151
|
+
timestamp: new Date().toISOString()
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
export default SearchAnalytics;
|
|
156
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/lib/features/ecommerce/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuG3D,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IACpD;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,MAAyB;QACxC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC5C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,YAAoB,EACpB,cAA+E;QAE/E,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,mBAAmB;YAC5B,aAAa;YACb,YAAY;YACZ,cAAc;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,YAAoB,EACpB,kBAA0B,EAC1B,kBAA0B;QAE1B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,mBAAmB;YAC5B,YAAY;YACZ,kBAAkB;YAClB,kBAAkB;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CAEF;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
import { FlowGridTransport } from "../../client/transport";
|
|
44
|
-
import { MoneyValue,
|
|
44
|
+
import { MoneyValue, TimeSeriesData } from "../../types";
|
|
45
45
|
/**
|
|
46
46
|
* Subscription start configuration.
|
|
47
47
|
*/
|
|
@@ -250,32 +250,5 @@ export declare class Subscriptions extends FlowGridTransport {
|
|
|
250
250
|
* @returns Promise resolving to subscription response
|
|
251
251
|
*/
|
|
252
252
|
trialExpired(subscriptionId: string, userId: string): Promise<SubscriptionResponse>;
|
|
253
|
-
/**
|
|
254
|
-
* Gets subscription analytics for dashboards.
|
|
255
|
-
*
|
|
256
|
-
* @param filter - Date range filter
|
|
257
|
-
* @returns Promise resolving to subscription analytics
|
|
258
|
-
*
|
|
259
|
-
* @example
|
|
260
|
-
* ```typescript
|
|
261
|
-
* const analytics = await subscriptions.getAnalytics({
|
|
262
|
-
* range: 'thisMonth'
|
|
263
|
-
* });
|
|
264
|
-
*
|
|
265
|
-
* // KPI cards
|
|
266
|
-
* const kpis = [
|
|
267
|
-
* { label: 'MRR', value: analytics.summary.totalMrr.amount },
|
|
268
|
-
* { label: 'Churn Rate', value: analytics.summary.churnRate },
|
|
269
|
-
* { label: 'NRR', value: analytics.summary.netRevenueRetention }
|
|
270
|
-
* ];
|
|
271
|
-
*
|
|
272
|
-
* // Waterfall chart
|
|
273
|
-
* const waterfall = analytics.mrrMovement;
|
|
274
|
-
*
|
|
275
|
-
* // MRR trend line
|
|
276
|
-
* const trend = analytics.mrrTrend.data;
|
|
277
|
-
* ```
|
|
278
|
-
*/
|
|
279
|
-
getAnalytics(filter?: DateRangeFilter): Promise<SubscriptionAnalyticsData>;
|
|
280
253
|
}
|
|
281
254
|
export default Subscriptions;
|