flowgrid-sdk 1.4.1 → 1.5.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.
Files changed (230) hide show
  1. package/README.md +17 -29
  2. package/dist/browser.js +12 -9
  3. package/dist/browser.js.map +1 -1
  4. package/dist/flowgrid-enterprise.flowgrid.chunk.js +2 -0
  5. package/dist/flowgrid-enterprise.flowgrid.chunk.js.map +1 -0
  6. package/dist/flowgrid-replay.flowgrid.chunk.js +3 -0
  7. package/dist/flowgrid-replay.flowgrid.chunk.js.LICENSE.txt +14 -0
  8. package/dist/flowgrid-replay.flowgrid.chunk.js.map +1 -0
  9. package/dist/flowgrid-vitals.flowgrid.chunk.js +2 -0
  10. package/dist/flowgrid-vitals.flowgrid.chunk.js.map +1 -0
  11. package/dist/flowgrid.min.js +1 -1
  12. package/dist/flowgrid.min.js.LICENSE.txt +14 -0
  13. package/dist/flowgrid.min.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +63 -10
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/client/transport.js +5 -1
  18. package/dist/lib/client/transport.js.map +1 -1
  19. package/dist/lib/consent/index.js +5 -1
  20. package/dist/lib/consent/index.js.map +1 -1
  21. package/dist/lib/consent/manager.js +5 -1
  22. package/dist/lib/consent/manager.js.map +1 -1
  23. package/dist/lib/consent/types.js +2 -1
  24. package/dist/lib/consent/types.js.map +1 -1
  25. package/dist/lib/features/analytics/attribution.js +11 -7
  26. package/dist/lib/features/analytics/attribution.js.map +1 -1
  27. package/dist/lib/features/analytics/events.js +7 -3
  28. package/dist/lib/features/analytics/events.js.map +1 -1
  29. package/dist/lib/features/analytics/funnels.js +7 -3
  30. package/dist/lib/features/analytics/funnels.js.map +1 -1
  31. package/dist/lib/features/analytics/heatmaps.js +12 -8
  32. package/dist/lib/features/analytics/heatmaps.js.map +1 -1
  33. package/dist/lib/features/analytics/identify.js +7 -3
  34. package/dist/lib/features/analytics/identify.js.map +1 -1
  35. package/dist/lib/features/analytics/index.js +24 -10
  36. package/dist/lib/features/analytics/index.js.map +1 -1
  37. package/dist/lib/features/analytics/page-views.js +12 -8
  38. package/dist/lib/features/analytics/page-views.js.map +1 -1
  39. package/dist/lib/features/analytics/performance.js +46 -9
  40. package/dist/lib/features/analytics/performance.js.map +1 -1
  41. package/dist/lib/features/analytics/replay.js +46 -9
  42. package/dist/lib/features/analytics/replay.js.map +1 -1
  43. package/dist/lib/features/analytics/retention.js +7 -3
  44. package/dist/lib/features/analytics/retention.js.map +1 -1
  45. package/dist/lib/features/analytics/sessions.js +12 -8
  46. package/dist/lib/features/analytics/sessions.js.map +1 -1
  47. package/dist/lib/features/core/activation.js +7 -3
  48. package/dist/lib/features/core/activation.js.map +1 -1
  49. package/dist/lib/features/core/experiment.js +9 -5
  50. package/dist/lib/features/core/experiment.js.map +1 -1
  51. package/dist/lib/features/core/index.js +11 -4
  52. package/dist/lib/features/core/index.js.map +1 -1
  53. package/dist/lib/features/core/track-feature.js +7 -3
  54. package/dist/lib/features/core/track-feature.js.map +1 -1
  55. package/dist/lib/features/core/track-prompt.js +7 -3
  56. package/dist/lib/features/core/track-prompt.js.map +1 -1
  57. package/dist/lib/features/ecommerce/cart.js +7 -3
  58. package/dist/lib/features/ecommerce/cart.js.map +1 -1
  59. package/dist/lib/features/ecommerce/checkout.js +7 -3
  60. package/dist/lib/features/ecommerce/checkout.js.map +1 -1
  61. package/dist/lib/features/ecommerce/index.js +23 -10
  62. package/dist/lib/features/ecommerce/index.js.map +1 -1
  63. package/dist/lib/features/ecommerce/ltv.js +7 -3
  64. package/dist/lib/features/ecommerce/ltv.js.map +1 -1
  65. package/dist/lib/features/ecommerce/products.js +7 -3
  66. package/dist/lib/features/ecommerce/products.js.map +1 -1
  67. package/dist/lib/features/ecommerce/promotions.js +7 -3
  68. package/dist/lib/features/ecommerce/promotions.js.map +1 -1
  69. package/dist/lib/features/ecommerce/purchases.js +7 -3
  70. package/dist/lib/features/ecommerce/purchases.js.map +1 -1
  71. package/dist/lib/features/ecommerce/refunds.js +7 -3
  72. package/dist/lib/features/ecommerce/refunds.js.map +1 -1
  73. package/dist/lib/features/ecommerce/search.js +7 -3
  74. package/dist/lib/features/ecommerce/search.js.map +1 -1
  75. package/dist/lib/features/ecommerce/subscriptions.js +7 -3
  76. package/dist/lib/features/ecommerce/subscriptions.js.map +1 -1
  77. package/dist/lib/features/ecommerce/wishlist.js +7 -3
  78. package/dist/lib/features/ecommerce/wishlist.js.map +1 -1
  79. package/dist/lib/features/enterprise/acquisition.js +16 -7
  80. package/dist/lib/features/enterprise/acquisition.js.map +1 -1
  81. package/dist/lib/features/enterprise/alerts.js +18 -8
  82. package/dist/lib/features/enterprise/alerts.js.map +1 -1
  83. package/dist/lib/features/enterprise/churn.js +12 -5
  84. package/dist/lib/features/enterprise/churn.js.map +1 -1
  85. package/dist/lib/features/enterprise/cohorts.js +10 -4
  86. package/dist/lib/features/enterprise/cohorts.js.map +1 -1
  87. package/dist/lib/features/enterprise/engagement.js +19 -12
  88. package/dist/lib/features/enterprise/engagement.js.map +1 -1
  89. package/dist/lib/features/enterprise/forecasting.js +18 -8
  90. package/dist/lib/features/enterprise/forecasting.js.map +1 -1
  91. package/dist/lib/features/enterprise/index.js +75 -22
  92. package/dist/lib/features/enterprise/index.js.map +1 -1
  93. package/dist/lib/features/enterprise/monetization.js +16 -7
  94. package/dist/lib/features/enterprise/monetization.js.map +1 -1
  95. package/dist/lib/features/enterprise/multi-path-funnels.js +16 -7
  96. package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -1
  97. package/dist/lib/features/enterprise/paths.js +18 -8
  98. package/dist/lib/features/enterprise/paths.js.map +1 -1
  99. package/dist/lib/features/enterprise/security.js +14 -6
  100. package/dist/lib/features/enterprise/security.js.map +1 -1
  101. package/dist/lib/features/enterprise/support.js +14 -6
  102. package/dist/lib/features/enterprise/support.js.map +1 -1
  103. package/dist/lib/flowgrid.d.ts +734 -10
  104. package/dist/lib/flowgrid.js +801 -60
  105. package/dist/lib/flowgrid.js.map +1 -1
  106. package/dist/lib/tracking/analytics/attribution.d.ts +3 -3
  107. package/dist/lib/tracking/analytics/attribution.js +5 -1
  108. package/dist/lib/tracking/analytics/attribution.js.map +1 -1
  109. package/dist/lib/tracking/analytics/events.d.ts +6 -6
  110. package/dist/lib/tracking/analytics/events.js +5 -1
  111. package/dist/lib/tracking/analytics/events.js.map +1 -1
  112. package/dist/lib/tracking/analytics/funnels.d.ts +4 -4
  113. package/dist/lib/tracking/analytics/funnels.js +5 -1
  114. package/dist/lib/tracking/analytics/funnels.js.map +1 -1
  115. package/dist/lib/tracking/analytics/heatmaps.d.ts +3 -3
  116. package/dist/lib/tracking/analytics/heatmaps.js +5 -1
  117. package/dist/lib/tracking/analytics/heatmaps.js.map +1 -1
  118. package/dist/lib/tracking/analytics/identify.d.ts +4 -4
  119. package/dist/lib/tracking/analytics/identify.js +5 -1
  120. package/dist/lib/tracking/analytics/identify.js.map +1 -1
  121. package/dist/lib/tracking/analytics/index.js +23 -10
  122. package/dist/lib/tracking/analytics/index.js.map +1 -1
  123. package/dist/lib/tracking/analytics/page-views.d.ts +4 -4
  124. package/dist/lib/tracking/analytics/page-views.js +5 -1
  125. package/dist/lib/tracking/analytics/page-views.js.map +1 -1
  126. package/dist/lib/tracking/analytics/performance.d.ts +3 -3
  127. package/dist/lib/tracking/analytics/performance.js +5 -1
  128. package/dist/lib/tracking/analytics/performance.js.map +1 -1
  129. package/dist/lib/tracking/analytics/replay.js +5 -1
  130. package/dist/lib/tracking/analytics/replay.js.map +1 -1
  131. package/dist/lib/tracking/analytics/retention.d.ts +1 -1
  132. package/dist/lib/tracking/analytics/retention.js +5 -1
  133. package/dist/lib/tracking/analytics/retention.js.map +1 -1
  134. package/dist/lib/tracking/analytics/sessions.d.ts +4 -4
  135. package/dist/lib/tracking/analytics/sessions.js +5 -1
  136. package/dist/lib/tracking/analytics/sessions.js.map +1 -1
  137. package/dist/lib/tracking/core/activation.d.ts +5 -5
  138. package/dist/lib/tracking/core/activation.js +5 -1
  139. package/dist/lib/tracking/core/activation.js.map +1 -1
  140. package/dist/lib/tracking/core/experiment.d.ts +4 -4
  141. package/dist/lib/tracking/core/experiment.js +5 -1
  142. package/dist/lib/tracking/core/experiment.js.map +1 -1
  143. package/dist/lib/tracking/core/feature.d.ts +2 -2
  144. package/dist/lib/tracking/core/feature.js +5 -1
  145. package/dist/lib/tracking/core/feature.js.map +1 -1
  146. package/dist/lib/tracking/core/index.js +11 -4
  147. package/dist/lib/tracking/core/index.js.map +1 -1
  148. package/dist/lib/tracking/core/prompt.d.ts +5 -5
  149. package/dist/lib/tracking/core/prompt.js +5 -1
  150. package/dist/lib/tracking/core/prompt.js.map +1 -1
  151. package/dist/lib/tracking/ecommerce/cart.d.ts +4 -4
  152. package/dist/lib/tracking/ecommerce/cart.js +5 -1
  153. package/dist/lib/tracking/ecommerce/cart.js.map +1 -1
  154. package/dist/lib/tracking/ecommerce/checkout.d.ts +4 -4
  155. package/dist/lib/tracking/ecommerce/checkout.js +5 -1
  156. package/dist/lib/tracking/ecommerce/checkout.js.map +1 -1
  157. package/dist/lib/tracking/ecommerce/index.js +23 -10
  158. package/dist/lib/tracking/ecommerce/index.js.map +1 -1
  159. package/dist/lib/tracking/ecommerce/ltv.d.ts +2 -2
  160. package/dist/lib/tracking/ecommerce/ltv.js +5 -1
  161. package/dist/lib/tracking/ecommerce/ltv.js.map +1 -1
  162. package/dist/lib/tracking/ecommerce/products.d.ts +3 -3
  163. package/dist/lib/tracking/ecommerce/products.js +5 -1
  164. package/dist/lib/tracking/ecommerce/products.js.map +1 -1
  165. package/dist/lib/tracking/ecommerce/promotions.d.ts +3 -3
  166. package/dist/lib/tracking/ecommerce/promotions.js +5 -1
  167. package/dist/lib/tracking/ecommerce/promotions.js.map +1 -1
  168. package/dist/lib/tracking/ecommerce/purchases.d.ts +1 -1
  169. package/dist/lib/tracking/ecommerce/purchases.js +5 -1
  170. package/dist/lib/tracking/ecommerce/purchases.js.map +1 -1
  171. package/dist/lib/tracking/ecommerce/refunds.d.ts +4 -4
  172. package/dist/lib/tracking/ecommerce/refunds.js +5 -1
  173. package/dist/lib/tracking/ecommerce/refunds.js.map +1 -1
  174. package/dist/lib/tracking/ecommerce/search.d.ts +4 -4
  175. package/dist/lib/tracking/ecommerce/search.js +5 -1
  176. package/dist/lib/tracking/ecommerce/search.js.map +1 -1
  177. package/dist/lib/tracking/ecommerce/subscriptions.d.ts +6 -6
  178. package/dist/lib/tracking/ecommerce/subscriptions.js +5 -1
  179. package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -1
  180. package/dist/lib/tracking/ecommerce/wishlist.d.ts +5 -5
  181. package/dist/lib/tracking/ecommerce/wishlist.js +5 -1
  182. package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -1
  183. package/dist/lib/tracking/enterprise/acquisition.js +5 -1
  184. package/dist/lib/tracking/enterprise/acquisition.js.map +1 -1
  185. package/dist/lib/tracking/enterprise/alerts.js +5 -1
  186. package/dist/lib/tracking/enterprise/alerts.js.map +1 -1
  187. package/dist/lib/tracking/enterprise/churn.d.ts +1 -1
  188. package/dist/lib/tracking/enterprise/churn.js +5 -1
  189. package/dist/lib/tracking/enterprise/churn.js.map +1 -1
  190. package/dist/lib/tracking/enterprise/cohorts.d.ts +1 -1
  191. package/dist/lib/tracking/enterprise/cohorts.js +5 -1
  192. package/dist/lib/tracking/enterprise/cohorts.js.map +1 -1
  193. package/dist/lib/tracking/enterprise/engagement.d.ts +4 -4
  194. package/dist/lib/tracking/enterprise/engagement.js +5 -1
  195. package/dist/lib/tracking/enterprise/engagement.js.map +1 -1
  196. package/dist/lib/tracking/enterprise/forecasting.d.ts +4 -4
  197. package/dist/lib/tracking/enterprise/forecasting.js +5 -1
  198. package/dist/lib/tracking/enterprise/forecasting.js.map +1 -1
  199. package/dist/lib/tracking/enterprise/index.js +25 -11
  200. package/dist/lib/tracking/enterprise/index.js.map +1 -1
  201. package/dist/lib/tracking/enterprise/monetization.js +5 -1
  202. package/dist/lib/tracking/enterprise/monetization.js.map +1 -1
  203. package/dist/lib/tracking/enterprise/multi-path-funnels.js +5 -1
  204. package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -1
  205. package/dist/lib/tracking/enterprise/paths.js +5 -1
  206. package/dist/lib/tracking/enterprise/paths.js.map +1 -1
  207. package/dist/lib/tracking/enterprise/security.js +5 -1
  208. package/dist/lib/tracking/enterprise/security.js.map +1 -1
  209. package/dist/lib/tracking/enterprise/support.js +5 -1
  210. package/dist/lib/tracking/enterprise/support.js.map +1 -1
  211. package/dist/lib/tracking/index.js +20 -4
  212. package/dist/lib/tracking/index.js.map +1 -1
  213. package/dist/lib/types/analytics.js +2 -1
  214. package/dist/lib/types/analytics.js.map +1 -1
  215. package/dist/lib/types/common.js +2 -1
  216. package/dist/lib/types/common.js.map +1 -1
  217. package/dist/lib/types/ecommerce.js +2 -1
  218. package/dist/lib/types/ecommerce.js.map +1 -1
  219. package/dist/lib/types/index.js +19 -3
  220. package/dist/lib/types/index.js.map +1 -1
  221. package/dist/lib/utils/browser.js +10 -4
  222. package/dist/lib/utils/browser.js.map +1 -1
  223. package/dist/lib/utils/identity.js +8 -4
  224. package/dist/lib/utils/identity.js.map +1 -1
  225. package/dist/lib/utils/storage.js +14 -6
  226. package/dist/lib/utils/storage.js.map +1 -1
  227. package/dist/umd/index.js +2 -1
  228. package/dist/umd/index.js.LICENSE.txt +14 -0
  229. package/dist/umd/index.js.map +1 -1
  230. package/package.json +2 -1
@@ -31,7 +31,713 @@
31
31
  */
32
32
  import { FlowGridTransport, FlowGridTransportConfig } from "./client/transport";
33
33
  import { IdentityManager } from "./utils/identity";
34
- import { ActivationTracker, ExperimentTracker, FeatureTracker, PromptTracker, EventTracker, PageViewTracker, SessionTracker, IdentifyTracker, FunnelTracker, RetentionTracker, AttributionTracker, HeatmapTracker, PerformanceTracker, ReplayTracker, ProductTracker, CartTracker, CheckoutTracker, PurchaseTracker, RefundTracker, PromotionTracker, WishlistTracker, SubscriptionTracker, LTVTracker, SearchTracker, EngagementTracker, CohortTracker, ChurnTracker, MonetizationTracker, MultiPathFunnelTracker, SupportTracker, AcquisitionTracker, PathTracker, AlertTracker, SecurityTracker, ForecastingTracker } from "./tracking";
34
+ import type { EngagementTracker, CohortTracker, ChurnTracker, MonetizationTracker, MultiPathFunnelTracker, SupportTracker, AcquisitionTracker, PathTracker, AlertTracker, SecurityTracker, ForecastingTracker } from "./tracking/enterprise";
35
+ import { ActivationTracker, ExperimentTracker, FeatureTracker, PromptTracker } from "./tracking/core";
36
+ import { EventTracker, PageViewTracker, SessionTracker, IdentifyTracker, FunnelTracker, RetentionTracker, AttributionTracker, HeatmapTracker, PerformanceTracker, ReplayTracker } from "./tracking/analytics";
37
+ import { ProductTracker, CartTracker, CheckoutTracker, PurchaseTracker, RefundTracker, PromotionTracker, WishlistTracker, SubscriptionTracker, LTVTracker, SearchTracker } from "./tracking/ecommerce";
38
+ export type FlowGridTrackDomain = "event" | "activation" | "feature" | "prompt" | "experiment" | "ecommerce" | "analytics" | "retention" | "attribution" | "funnel" | "engagement" | "churn" | "monetization" | "support" | "acquisition" | "paths" | "security" | "multiPathFunnels";
39
+ export interface FlowGridTrackOptions {
40
+ userId?: string;
41
+ sessionId?: string;
42
+ /** Force a specific module when an event name is intentionally generic. */
43
+ domain?: FlowGridTrackDomain;
44
+ }
45
+ /**
46
+ * Property shapes for every event name the `.track()` router understands.
47
+ * Required fields are enforced at the call site; extra fields are always
48
+ * permitted via the `Record<string, unknown>` intersection.
49
+ */
50
+ export interface FlowGridEventMap {
51
+ signup_completed: {
52
+ userId: string;
53
+ method: string;
54
+ source?: string;
55
+ } & Record<string, unknown>;
56
+ onboarding_step: {
57
+ userId: string;
58
+ stepId: string;
59
+ stepName: string;
60
+ stepOrder: number;
61
+ totalSteps: number;
62
+ } & Record<string, unknown>;
63
+ onboarding_completed: {
64
+ userId: string;
65
+ totalTimeSpent: number;
66
+ stepsCompleted: number;
67
+ stepsSkipped?: number;
68
+ } & Record<string, unknown>;
69
+ first_action: {
70
+ userId: string;
71
+ actionName: string;
72
+ timeSinceSignup: number;
73
+ } & Record<string, unknown>;
74
+ feature_usage: {
75
+ featureId: string;
76
+ featureName: string;
77
+ action?: string;
78
+ } & Record<string, unknown>;
79
+ feature_viewed: {
80
+ featureId: string;
81
+ featureName: string;
82
+ } & Record<string, unknown>;
83
+ feature_used: {
84
+ featureId: string;
85
+ featureName: string;
86
+ } & Record<string, unknown>;
87
+ feature_completed: {
88
+ featureId: string;
89
+ featureName: string;
90
+ } & Record<string, unknown>;
91
+ feature_abandoned: {
92
+ featureId: string;
93
+ featureName: string;
94
+ } & Record<string, unknown>;
95
+ prompt_submitted: {
96
+ promptId: string;
97
+ promptType: string;
98
+ } & Record<string, unknown>;
99
+ prompt_response: {
100
+ promptId: string;
101
+ responseTime: number;
102
+ completed: boolean;
103
+ } & Record<string, unknown>;
104
+ prompt_feedback: {
105
+ promptId: string;
106
+ feedbackType: string;
107
+ } & Record<string, unknown>;
108
+ prompt_conversation: {
109
+ conversationId: string;
110
+ userId: string;
111
+ turnCount: number;
112
+ totalDuration: number;
113
+ } & Record<string, unknown>;
114
+ experiment_assignment: {
115
+ experimentId: string;
116
+ userId: string;
117
+ variantId: string;
118
+ } & Record<string, unknown>;
119
+ experiment_exposure: {
120
+ experimentId: string;
121
+ userId: string;
122
+ variantId: string;
123
+ } & Record<string, unknown>;
124
+ experiment_conversion: {
125
+ experimentId: string;
126
+ userId: string;
127
+ variantId: string;
128
+ metricName: string;
129
+ } & Record<string, unknown>;
130
+ click_event: {
131
+ elementId: string;
132
+ elementText: string;
133
+ } & Record<string, unknown>;
134
+ form_event: {
135
+ formId: string;
136
+ formName: string;
137
+ } & Record<string, unknown>;
138
+ search_event: {
139
+ query: string;
140
+ category: string;
141
+ } & Record<string, unknown>;
142
+ error_event: {
143
+ message: string;
144
+ type: string;
145
+ } & Record<string, unknown>;
146
+ funnel_step: {
147
+ funnelId: string;
148
+ step: string;
149
+ stepNumber: number;
150
+ } & Record<string, unknown>;
151
+ funnel_complete: {
152
+ funnelId: string;
153
+ } & Record<string, unknown>;
154
+ funnel_abandon: {
155
+ funnelId: string;
156
+ lastStep: string;
157
+ } & Record<string, unknown>;
158
+ user_activity: {
159
+ userId: string;
160
+ } & Record<string, unknown>;
161
+ attribution_touchpoint: {
162
+ userId: string;
163
+ channel: string;
164
+ } & Record<string, unknown>;
165
+ attribution_conversion: {
166
+ userId: string;
167
+ conversionType: string;
168
+ } & Record<string, unknown>;
169
+ product_view: {
170
+ productId: string;
171
+ name: string;
172
+ price: number;
173
+ currency: string;
174
+ } & Record<string, unknown>;
175
+ product_impression: {
176
+ list: Record<string, unknown>;
177
+ } & Record<string, unknown>;
178
+ product_click: {
179
+ productId: string;
180
+ name: string;
181
+ price: number;
182
+ currency: string;
183
+ listId: string;
184
+ position: number;
185
+ } & Record<string, unknown>;
186
+ add_to_cart: {
187
+ productId: string;
188
+ name: string;
189
+ price: number;
190
+ currency: string;
191
+ quantity: number;
192
+ } & Record<string, unknown>;
193
+ remove_from_cart: {
194
+ productId: string;
195
+ name: string;
196
+ price: number;
197
+ currency: string;
198
+ } & Record<string, unknown>;
199
+ update_cart_item: {
200
+ product: Record<string, unknown>;
201
+ previousQuantity: number;
202
+ newQuantity: number;
203
+ } & Record<string, unknown>;
204
+ view_cart: {
205
+ cart: Record<string, unknown>;
206
+ } & Record<string, unknown>;
207
+ begin_checkout: {
208
+ cart: Record<string, unknown>;
209
+ } & Record<string, unknown>;
210
+ checkout_step: {
211
+ step: string;
212
+ stepNumber: number;
213
+ cart: Record<string, unknown>;
214
+ } & Record<string, unknown>;
215
+ add_shipping_info: {
216
+ cart: Record<string, unknown>;
217
+ shipping: Record<string, unknown>;
218
+ } & Record<string, unknown>;
219
+ add_payment_info: {
220
+ cart: Record<string, unknown>;
221
+ payment: Record<string, unknown>;
222
+ } & Record<string, unknown>;
223
+ purchase: {
224
+ order: Record<string, unknown>;
225
+ } & Record<string, unknown>;
226
+ refund: {
227
+ orderId: string;
228
+ refundId: string;
229
+ amount: number;
230
+ currency: string;
231
+ isFullRefund: boolean;
232
+ } & Record<string, unknown>;
233
+ refund_requested: {
234
+ orderId: string;
235
+ } & Record<string, unknown>;
236
+ refund_approved: {
237
+ refundId: string;
238
+ approvedAmount: number;
239
+ } & Record<string, unknown>;
240
+ refund_denied: {
241
+ refundId: string;
242
+ reason: string;
243
+ } & Record<string, unknown>;
244
+ refund_completed: {
245
+ refundId: string;
246
+ processedAmount: number;
247
+ } & Record<string, unknown>;
248
+ promotion_view: {
249
+ promotionId: string;
250
+ name: string;
251
+ creative: string;
252
+ position: number;
253
+ } & Record<string, unknown>;
254
+ promotion_click: {
255
+ promotionId: string;
256
+ name: string;
257
+ creative: string;
258
+ position: number;
259
+ } & Record<string, unknown>;
260
+ coupon_used: {
261
+ code: string;
262
+ orderId: string;
263
+ discountValue: number;
264
+ discountType: string;
265
+ orderValueBefore: number;
266
+ orderValueAfter: number;
267
+ } & Record<string, unknown>;
268
+ add_to_wishlist: {
269
+ productId: string;
270
+ name: string;
271
+ price: number;
272
+ currency: string;
273
+ } & Record<string, unknown>;
274
+ remove_from_wishlist: {
275
+ productId: string;
276
+ name: string;
277
+ price: number;
278
+ currency: string;
279
+ } & Record<string, unknown>;
280
+ view_wishlist: {
281
+ wishlist: Record<string, unknown>;
282
+ } & Record<string, unknown>;
283
+ wishlist_to_cart: {
284
+ productId: string;
285
+ name: string;
286
+ price: number;
287
+ currency: string;
288
+ } & Record<string, unknown>;
289
+ share_wishlist: {
290
+ wishlistId: string;
291
+ method: string;
292
+ } & Record<string, unknown>;
293
+ subscription_start: {
294
+ subscriptionId: string;
295
+ userId: string;
296
+ plan: string;
297
+ mrr: Record<string, unknown>;
298
+ billingCycle: string;
299
+ } & Record<string, unknown>;
300
+ subscription_change: {
301
+ subscriptionId: string;
302
+ userId: string;
303
+ previousPlan: string;
304
+ newPlan: string;
305
+ previousMrr: Record<string, unknown>;
306
+ newMrr: Record<string, unknown>;
307
+ changeType: string;
308
+ } & Record<string, unknown>;
309
+ subscription_cancel: {
310
+ subscriptionId: string;
311
+ userId: string;
312
+ plan: string;
313
+ lostMrr: Record<string, unknown>;
314
+ immediate: boolean;
315
+ } & Record<string, unknown>;
316
+ subscription_renew: {
317
+ subscriptionId: string;
318
+ userId: string;
319
+ mrr: Record<string, unknown>;
320
+ } & Record<string, unknown>;
321
+ trial_converted: {
322
+ subscriptionId: string;
323
+ userId: string;
324
+ plan: string;
325
+ mrr: Record<string, unknown>;
326
+ } & Record<string, unknown>;
327
+ trial_expired: {
328
+ subscriptionId: string;
329
+ userId: string;
330
+ } & Record<string, unknown>;
331
+ record_acquisition_cost: {
332
+ userId: string;
333
+ cost: Record<string, unknown>;
334
+ channel: string;
335
+ } & Record<string, unknown>;
336
+ update_customer_segment: {
337
+ userId: string;
338
+ newSegment: string;
339
+ } & Record<string, unknown>;
340
+ site_search: {
341
+ query: string;
342
+ resultsCount: number;
343
+ } & Record<string, unknown>;
344
+ search_result_click: {
345
+ query: string;
346
+ position: number;
347
+ productId: string;
348
+ name: string;
349
+ price: number;
350
+ currency: string;
351
+ } & Record<string, unknown>;
352
+ search_refinement: {
353
+ originalQuery: string;
354
+ refinedQuery: string;
355
+ refinementType: string;
356
+ } & Record<string, unknown>;
357
+ search_suggestion: {
358
+ partialQuery: string;
359
+ selectedSuggestion: string;
360
+ suggestionPosition: number;
361
+ } & Record<string, unknown>;
362
+ "engagement.dwell_time": {
363
+ featureId: string;
364
+ dwellTimeMs: number;
365
+ } & Record<string, unknown>;
366
+ "engagement_dwell_time": {
367
+ featureId: string;
368
+ dwellTimeMs: number;
369
+ } & Record<string, unknown>;
370
+ "engagement.session_depth": {
371
+ sessionId: string;
372
+ pagesVisited: number;
373
+ featuresUsed: number;
374
+ actionsTaken: number;
375
+ durationMs: number;
376
+ } & Record<string, unknown>;
377
+ "engagement_session_depth": {
378
+ sessionId: string;
379
+ pagesVisited: number;
380
+ featuresUsed: number;
381
+ actionsTaken: number;
382
+ durationMs: number;
383
+ } & Record<string, unknown>;
384
+ "engagement.content_consumption": {
385
+ contentId: string;
386
+ contentType: string;
387
+ percentageConsumed: number;
388
+ timeSpentMs: number;
389
+ } & Record<string, unknown>;
390
+ "engagement_content_consumption": {
391
+ contentId: string;
392
+ contentType: string;
393
+ percentageConsumed: number;
394
+ timeSpentMs: number;
395
+ } & Record<string, unknown>;
396
+ "engagement.user_activity": {
397
+ userId: string;
398
+ activityType: string;
399
+ durationMs: number;
400
+ } & Record<string, unknown>;
401
+ "engagement_user_activity": {
402
+ userId: string;
403
+ activityType: string;
404
+ durationMs: number;
405
+ } & Record<string, unknown>;
406
+ "churn.usage_decay": {
407
+ userId: string;
408
+ metric: string;
409
+ periods: unknown;
410
+ } & Record<string, unknown>;
411
+ "churn_usage_decay": {
412
+ userId: string;
413
+ metric: string;
414
+ periods: unknown;
415
+ } & Record<string, unknown>;
416
+ "churn.nps": {
417
+ userId: string;
418
+ score: number;
419
+ } & Record<string, unknown>;
420
+ "churn_nps": {
421
+ userId: string;
422
+ score: number;
423
+ } & Record<string, unknown>;
424
+ "churn.churn_event": {
425
+ userId: string;
426
+ churnType: string;
427
+ } & Record<string, unknown>;
428
+ "churn_churn_event": {
429
+ userId: string;
430
+ churnType: string;
431
+ } & Record<string, unknown>;
432
+ "churn.prevention_action": {
433
+ userId: string;
434
+ actionType: string;
435
+ } & Record<string, unknown>;
436
+ "churn_prevention_action": {
437
+ userId: string;
438
+ actionType: string;
439
+ } & Record<string, unknown>;
440
+ "monetization.revenue": {
441
+ userId: string;
442
+ amount: number;
443
+ currency: string;
444
+ type: string;
445
+ } & Record<string, unknown>;
446
+ "monetization_revenue": {
447
+ userId: string;
448
+ amount: number;
449
+ currency: string;
450
+ type: string;
451
+ } & Record<string, unknown>;
452
+ "support.ticket_created": {
453
+ ticketId: string;
454
+ userId: string;
455
+ subject: string;
456
+ category: string;
457
+ priority: string;
458
+ channel: string;
459
+ } & Record<string, unknown>;
460
+ "support_ticket_created": {
461
+ ticketId: string;
462
+ userId: string;
463
+ subject: string;
464
+ category: string;
465
+ priority: string;
466
+ channel: string;
467
+ } & Record<string, unknown>;
468
+ "support.ticket_updated": {
469
+ ticketId: string;
470
+ status: string;
471
+ } & Record<string, unknown>;
472
+ "support_ticket_updated": {
473
+ ticketId: string;
474
+ status: string;
475
+ } & Record<string, unknown>;
476
+ "support.csat": {
477
+ ticketId: string;
478
+ userId: string;
479
+ score: number;
480
+ } & Record<string, unknown>;
481
+ "support_csat": {
482
+ ticketId: string;
483
+ userId: string;
484
+ score: number;
485
+ } & Record<string, unknown>;
486
+ "support.feature_complaint": {
487
+ userId: string;
488
+ featureId: string;
489
+ complaintType: string;
490
+ severity: string;
491
+ } & Record<string, unknown>;
492
+ "support_feature_complaint": {
493
+ userId: string;
494
+ featureId: string;
495
+ complaintType: string;
496
+ severity: string;
497
+ } & Record<string, unknown>;
498
+ "acquisition.acquired": {
499
+ userId: string;
500
+ source: string;
501
+ } & Record<string, unknown>;
502
+ "acquisition_acquired": {
503
+ userId: string;
504
+ source: string;
505
+ } & Record<string, unknown>;
506
+ "acquisition.lifecycle_transition": {
507
+ userId: string;
508
+ fromStage: string;
509
+ toStage: string;
510
+ } & Record<string, unknown>;
511
+ "acquisition_lifecycle_transition": {
512
+ userId: string;
513
+ fromStage: string;
514
+ toStage: string;
515
+ } & Record<string, unknown>;
516
+ "acquisition.campaign_spend": {
517
+ campaignId: string;
518
+ amount: Record<string, unknown>;
519
+ date: string;
520
+ } & Record<string, unknown>;
521
+ "acquisition_campaign_spend": {
522
+ campaignId: string;
523
+ amount: Record<string, unknown>;
524
+ date: string;
525
+ } & Record<string, unknown>;
526
+ "paths.transition": {
527
+ userId: string;
528
+ fromScreen: string;
529
+ toScreen: string;
530
+ } & Record<string, unknown>;
531
+ "paths_transition": {
532
+ userId: string;
533
+ fromScreen: string;
534
+ toScreen: string;
535
+ } & Record<string, unknown>;
536
+ "paths.feature_sequence": {
537
+ userId: string;
538
+ feature: string;
539
+ order: number;
540
+ } & Record<string, unknown>;
541
+ "paths_feature_sequence": {
542
+ userId: string;
543
+ feature: string;
544
+ order: number;
545
+ } & Record<string, unknown>;
546
+ "security.login_attempt": {
547
+ userId: string;
548
+ success: boolean;
549
+ } & Record<string, unknown>;
550
+ "security_login_attempt": {
551
+ userId: string;
552
+ success: boolean;
553
+ } & Record<string, unknown>;
554
+ "security.role_change": {
555
+ userId: string;
556
+ changedBy: string;
557
+ previousRole: string;
558
+ newRole: string;
559
+ } & Record<string, unknown>;
560
+ "security_role_change": {
561
+ userId: string;
562
+ changedBy: string;
563
+ previousRole: string;
564
+ newRole: string;
565
+ } & Record<string, unknown>;
566
+ "security.permission_change": {
567
+ userId: string;
568
+ changedBy: string;
569
+ permission: string;
570
+ action: string;
571
+ } & Record<string, unknown>;
572
+ "security_permission_change": {
573
+ userId: string;
574
+ changedBy: string;
575
+ permission: string;
576
+ action: string;
577
+ } & Record<string, unknown>;
578
+ "security.data_access": {
579
+ userId: string;
580
+ resourceType: string;
581
+ accessType: string;
582
+ } & Record<string, unknown>;
583
+ "security_data_access": {
584
+ userId: string;
585
+ resourceType: string;
586
+ accessType: string;
587
+ } & Record<string, unknown>;
588
+ "security.compliance_event": {
589
+ userId: string;
590
+ eventType: string;
591
+ } & Record<string, unknown>;
592
+ "security_compliance_event": {
593
+ userId: string;
594
+ eventType: string;
595
+ } & Record<string, unknown>;
596
+ "multi_path_funnels.track_step": {
597
+ funnelId: string;
598
+ step: string;
599
+ userId: string;
600
+ } & Record<string, unknown>;
601
+ "multi_path_funnels_track_step": {
602
+ funnelId: string;
603
+ step: string;
604
+ userId: string;
605
+ } & Record<string, unknown>;
606
+ "multi_path_funnels.track_micro_conversion": {
607
+ conversionId: string;
608
+ userId: string;
609
+ } & Record<string, unknown>;
610
+ "multi_path_funnels_track_micro_conversion": {
611
+ conversionId: string;
612
+ userId: string;
613
+ } & Record<string, unknown>;
614
+ }
615
+ /** Union of every event name the `.track()` router recognises. */
616
+ export type FlowGridEventName = keyof FlowGridEventMap;
617
+ type FlowGridKnownTrackFields = Partial<{
618
+ userId: string;
619
+ sessionId: string;
620
+ method: string;
621
+ source: string;
622
+ featureId: string;
623
+ featureName: string;
624
+ action: string;
625
+ promptId: string;
626
+ promptType: string;
627
+ responseTime: number;
628
+ completed: boolean;
629
+ feedbackType: string;
630
+ conversationId: string;
631
+ turnCount: number;
632
+ totalDuration: number;
633
+ experimentId: string;
634
+ variantId: string;
635
+ variant: string;
636
+ metricName: string;
637
+ value: number;
638
+ elementId: string;
639
+ elementText: string;
640
+ formId: string;
641
+ formName: string;
642
+ query: string;
643
+ category: string;
644
+ message: string;
645
+ type: string;
646
+ funnelId: string;
647
+ step: string;
648
+ stepNumber: number;
649
+ lastStep: string;
650
+ channel: string;
651
+ conversionType: string;
652
+ list: Record<string, unknown>;
653
+ product: Record<string, unknown>;
654
+ productId: string;
655
+ name: string;
656
+ price: number;
657
+ currency: string;
658
+ position: number;
659
+ quantity: number;
660
+ previousQuantity: number;
661
+ newQuantity: number;
662
+ cart: Record<string, unknown>;
663
+ shipping: Record<string, unknown>;
664
+ payment: Record<string, unknown>;
665
+ order: Record<string, unknown>;
666
+ orderId: string;
667
+ refundId: string;
668
+ amount: unknown;
669
+ approvedAmount: number;
670
+ processedAmount: number;
671
+ reason: string;
672
+ promotionId: string;
673
+ creative: string;
674
+ code: string;
675
+ discountValue: number;
676
+ discountType: string;
677
+ orderValueBefore: number;
678
+ orderValueAfter: number;
679
+ wishlist: Record<string, unknown>;
680
+ wishlistId: string;
681
+ subscriptionId: string;
682
+ plan: string;
683
+ mrr: Record<string, unknown>;
684
+ billingCycle: string;
685
+ previousPlan: string;
686
+ newPlan: string;
687
+ previousMrr: Record<string, unknown>;
688
+ newMrr: Record<string, unknown>;
689
+ changeType: string;
690
+ lostMrr: Record<string, unknown>;
691
+ cost: Record<string, unknown>;
692
+ newSegment: string;
693
+ resultsCount: number;
694
+ originalQuery: string;
695
+ refinedQuery: string;
696
+ refinementType: string;
697
+ partialQuery: string;
698
+ selectedSuggestion: string;
699
+ suggestionPosition: number;
700
+ dwellTimeMs: number;
701
+ pagesVisited: number;
702
+ featuresUsed: number;
703
+ actionsTaken: number;
704
+ durationMs: number;
705
+ contentId: string;
706
+ contentType: string;
707
+ percentageConsumed: number;
708
+ timeSpentMs: number;
709
+ metric: string;
710
+ periods: unknown;
711
+ score: number;
712
+ churnType: string;
713
+ actionType: string;
714
+ activityType: string;
715
+ ticketId: string;
716
+ subject: string;
717
+ priority: string;
718
+ status: string;
719
+ complaintType: string;
720
+ severity: string;
721
+ fromStage: string;
722
+ toStage: string;
723
+ campaignId: string;
724
+ date: string;
725
+ fromScreen: string;
726
+ toScreen: string;
727
+ feature: string;
728
+ success: boolean;
729
+ isFullRefund: boolean;
730
+ immediate: boolean;
731
+ changedBy: string;
732
+ previousRole: string;
733
+ newRole: string;
734
+ permission: string;
735
+ resourceType: string;
736
+ accessType: string;
737
+ eventType: string;
738
+ conversionId: string;
739
+ }>;
740
+ export type FlowGridTrackProperties = Record<string, unknown> & FlowGridKnownTrackFields;
35
741
  /** Granular auto-instrumentation toggles. */
36
742
  export interface AutoTrackOptions {
37
743
  sessions?: boolean;
@@ -137,6 +843,13 @@ export declare class FlowGrid {
137
843
  static init(config: FlowGridInitConfig): FlowGrid;
138
844
  /** Returns the singleton created by {@link FlowGrid.init}, if any. */
139
845
  static instance(): FlowGrid | null;
846
+ /**
847
+ * Await the enterprise feature chunk. Call this before accessing any
848
+ * enterprise namespace (`fg.engagement`, `fg.churn`, etc.) if you need
849
+ * guaranteed availability rather than relying on the background pre-fetch
850
+ * started by `init()`.
851
+ */
852
+ static loadEnterprise(): Promise<void>;
140
853
  /**
141
854
  * Reset the singleton — primarily for tests / hot-reload. Tears down any
142
855
  * active auto-instrumentation.
@@ -173,6 +886,7 @@ export declare class FlowGrid {
173
886
  get ltv(): LTVTracker;
174
887
  get search(): SearchTracker;
175
888
  get subscriptions(): SubscriptionTracker;
889
+ private _requireEnterprise;
176
890
  get engagement(): EngagementTracker;
177
891
  get cohorts(): CohortTracker;
178
892
  get churn(): ChurnTracker;
@@ -187,17 +901,27 @@ export declare class FlowGrid {
187
901
  static setConsent: typeof FlowGridTransport.setConsent;
188
902
  static hasConsent: typeof FlowGridTransport.hasConsent;
189
903
  /**
190
- * Track a custom event.
904
+ * Track a semantic event. The `eventName` must be one of the recognised
905
+ * {@link FlowGridEventName} literals — TypeScript will error on unknown
906
+ * names and narrow `properties` to the required shape for that event.
191
907
  *
192
908
  * @example
193
909
  * ```ts
194
- * fg.track("signup_completed", { plan: "pro" });
910
+ * fg.track("signup_completed", { userId: "u_1", method: "google" });
911
+ * fg.track("add_to_cart", { productId: "sku_1", name: "Tee", price: 29, currency: "USD", quantity: 1 });
195
912
  * ```
196
913
  */
197
- track(eventName: string, properties?: Record<string, unknown>, options?: {
198
- userId?: string;
199
- sessionId?: string;
200
- }): Promise<import("./features/analytics").EventResponse>;
914
+ track<E extends FlowGridEventName>(eventName: E, properties: FlowGridEventMap[E], options?: FlowGridTrackOptions): unknown;
915
+ private withTrackContext;
916
+ private requireTrackProperties;
917
+ private dispatchTrack;
918
+ private dispatchActivationTrack;
919
+ private dispatchFeatureTrack;
920
+ private dispatchPromptTrack;
921
+ private dispatchExperimentTrack;
922
+ private dispatchAnalyticsTrack;
923
+ private dispatchEcommerceTrack;
924
+ private dispatchEnterpriseTrack;
201
925
  /**
202
926
  * Record an experiment exposure for a user.
203
927
  *
@@ -211,7 +935,7 @@ export declare class FlowGrid {
211
935
  experiment(experimentId: string, options: {
212
936
  variant: string;
213
937
  userId: string;
214
- }): Promise<import("./features/core").ExperimentResponse>;
938
+ }): Promise<import("..").ExperimentResponse>;
215
939
  /**
216
940
  * Identify a user.
217
941
  *
@@ -220,7 +944,7 @@ export declare class FlowGrid {
220
944
  * fg.identifyUser("u_1", { plan: "pro", email: "alice@example.com" });
221
945
  * ```
222
946
  */
223
- identifyUser(userId: string, traits?: Record<string, unknown>, anonymousId?: string): Promise<import("./features/analytics").IdentifyResponse>;
947
+ identifyUser(userId: string, traits?: Record<string, unknown>, anonymousId?: string): Promise<import("..").IdentifyResponse>;
224
948
  /**
225
949
  * Track a page view. Auto-detects URL/path/title/referrer in the browser.
226
950
  *
@@ -235,7 +959,7 @@ export declare class FlowGrid {
235
959
  referrer?: string;
236
960
  userId?: string;
237
961
  sessionId?: string;
238
- }): Promise<import("./features/analytics").PageViewResponse>;
962
+ }): Promise<import("..").PageViewResponse>;
239
963
  /**
240
964
  * Enable browser-side auto-instrumentation in a single call. Subscribes to:
241
965
  *