fleek-track-analytics 1.17.40 → 1.17.42
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.
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# Node.js Backend Integration Guide - fleek-track-analytics
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `fleek-track-analytics` library provides a unified analytics interface for Node.js backends, supporting dual-send to both Segment and RudderStack. Events can be sent to both platforms simultaneously, with selective routing to RudderStack based on configuration.
|
|
6
|
+
|
|
7
|
+
## Package Information
|
|
8
|
+
|
|
9
|
+
**Package Name**: `fleek-track-analytics`
|
|
10
|
+
**Current Version**: `1.17.40`
|
|
11
|
+
**npm Registry**: https://www.npmjs.com/package/fleek-track-analytics
|
|
12
|
+
|
|
13
|
+
### Dependencies Used by the Library
|
|
14
|
+
|
|
15
|
+
The library uses the following packages internally:
|
|
16
|
+
|
|
17
|
+
- **@rudderstack/rudder-sdk-node**: `^2.0.0` - RudderStack Node.js SDK
|
|
18
|
+
- **@segment/analytics-node**: `^2.1.0` - Segment Node.js SDK
|
|
19
|
+
|
|
20
|
+
**Note**: These are peer dependencies managed by the library. Your backend does NOT need to install them directly.
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install fleek-track-analytics@1.17.40
|
|
26
|
+
# or
|
|
27
|
+
yarn add fleek-track-analytics@1.17.40
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
### Architecture
|
|
33
|
+
|
|
34
|
+
1. **Dual-Send Pattern**: Events are sent to Segment (always) and RudderStack (conditionally based on routing config)
|
|
35
|
+
2. **Independent Initialization**: Segment and RudderStack initialize independently - failures in one don't affect the other
|
|
36
|
+
3. **Event Routing**: Only events in the routing configuration are sent to RudderStack
|
|
37
|
+
4. **Mutual Exclusivity**: SDK failures are isolated - if Segment fails, RudderStack still works and vice versa
|
|
38
|
+
|
|
39
|
+
### Event Flow
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Backend Code
|
|
43
|
+
↓
|
|
44
|
+
TrackAnalytics.track() / identify() / page()
|
|
45
|
+
↓
|
|
46
|
+
┌─────────────────────────────────────┐
|
|
47
|
+
│ Segment (Always) │
|
|
48
|
+
│ - Sends all events │
|
|
49
|
+
└─────────────────────────────────────┘
|
|
50
|
+
↓
|
|
51
|
+
┌─────────────────────────────────────┐
|
|
52
|
+
│ RudderStack (Conditional) │
|
|
53
|
+
│ - Checks event routing config │
|
|
54
|
+
│ - Sends only if event matches │
|
|
55
|
+
└─────────────────────────────────────┘
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Initialization
|
|
59
|
+
|
|
60
|
+
### Import
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { TrackAnalytics } from 'fleek-track-analytics/lib/node';
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Configuration Interface
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
interface IAnalyticsInit {
|
|
70
|
+
platform: 'NODE';
|
|
71
|
+
App: 'VENDOR_APP' | 'CONSUMER_APP' | 'CONSUMER_WEB' | 'SHOPIFY_CHECKOUT' | 'VENDOR_WEB_PORTAL' | 'QC_APP';
|
|
72
|
+
segment: boolean;
|
|
73
|
+
segmentKey: string;
|
|
74
|
+
devMode?: boolean;
|
|
75
|
+
debug?: boolean;
|
|
76
|
+
errorHandler: (e: unknown) => void;
|
|
77
|
+
|
|
78
|
+
// Trace manager (optional)
|
|
79
|
+
traceManager?: {
|
|
80
|
+
enabled?: boolean;
|
|
81
|
+
sessionTimeout?: number;
|
|
82
|
+
debug?: boolean;
|
|
83
|
+
errorHandler?: (error: Error) => void;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// RudderStack configuration (optional)
|
|
87
|
+
rudderstack?: {
|
|
88
|
+
enabled: boolean;
|
|
89
|
+
writeKey?: string; // Optional - uses default if not provided
|
|
90
|
+
dataPlaneUrl?: string; // Optional - uses default if not provided
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Default RudderStack Configuration
|
|
96
|
+
|
|
97
|
+
If `writeKey` or `dataPlaneUrl` are not provided, the library uses these defaults:
|
|
98
|
+
- **dataPlaneUrl**: `https://rudderstack.joinfleek.com`
|
|
99
|
+
- **writeKey**: `37DB5IcrJ9GQNtcww0uenrGfy0p`
|
|
100
|
+
|
|
101
|
+
### Example Initialization
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { TrackAnalytics } from 'fleek-track-analytics/lib/node';
|
|
105
|
+
|
|
106
|
+
// Create instance
|
|
107
|
+
const analytics = new TrackAnalytics({
|
|
108
|
+
platform: 'NODE',
|
|
109
|
+
App: 'VENDOR_WEB_PORTAL', // or your app type
|
|
110
|
+
segment: true,
|
|
111
|
+
segmentKey: 'your-segment-write-key',
|
|
112
|
+
debug: process.env.NODE_ENV === 'development',
|
|
113
|
+
errorHandler: (error) => {
|
|
114
|
+
console.error('Analytics error:', error);
|
|
115
|
+
// Optionally send to error tracking service
|
|
116
|
+
},
|
|
117
|
+
rudderstack: {
|
|
118
|
+
enabled: true,
|
|
119
|
+
// Optional - will use defaults if not provided
|
|
120
|
+
// writeKey: 'your-rudderstack-write-key',
|
|
121
|
+
// dataPlaneUrl: 'https://rudderstack.joinfleek.com',
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Initialize (must be called before using track/identify/page)
|
|
126
|
+
await analytics.initAnalytics();
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Usage
|
|
130
|
+
|
|
131
|
+
### Track Events
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
analytics.track(
|
|
135
|
+
{
|
|
136
|
+
eventName: 'Order Placed FOR VENDOR',
|
|
137
|
+
eventParams: {
|
|
138
|
+
orderId: 'order-123',
|
|
139
|
+
amount: 99.99,
|
|
140
|
+
currency: 'USD',
|
|
141
|
+
// ... other event properties
|
|
142
|
+
},
|
|
143
|
+
userId: 'user-123', // Optional
|
|
144
|
+
anonymousId: 'anon-456', // Optional (if no userId)
|
|
145
|
+
},
|
|
146
|
+
() => {
|
|
147
|
+
// Optional callback after event is sent
|
|
148
|
+
console.log('Event sent');
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Identify Users
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
analytics.identify({
|
|
157
|
+
userId: 'user-123',
|
|
158
|
+
anonymousId: 'anon-456', // Optional
|
|
159
|
+
traits: {
|
|
160
|
+
email: 'user@example.com',
|
|
161
|
+
name: 'John Doe',
|
|
162
|
+
plan: 'premium',
|
|
163
|
+
// ... other user traits
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Page Views
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
analytics.page({
|
|
172
|
+
userId: 'user-123', // Optional
|
|
173
|
+
anonymousId: 'anon-456', // Optional
|
|
174
|
+
name: 'Order Confirmation',
|
|
175
|
+
category: 'Shop',
|
|
176
|
+
properties: {
|
|
177
|
+
orderId: 'order-123',
|
|
178
|
+
// ... other page properties
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Event Routing to RudderStack
|
|
184
|
+
|
|
185
|
+
### How Routing Works
|
|
186
|
+
|
|
187
|
+
Events are sent to RudderStack only if they match the routing configuration. The routing is defined **inside the library** (not configurable from your backend).
|
|
188
|
+
|
|
189
|
+
### Events Currently Routed to RudderStack
|
|
190
|
+
|
|
191
|
+
The following events are automatically sent to RudderStack (in addition to Segment):
|
|
192
|
+
|
|
193
|
+
- `collection_viewed`
|
|
194
|
+
- `collection_plp_viewed`
|
|
195
|
+
- `vendor_plp_viewed`
|
|
196
|
+
- `Search Used`
|
|
197
|
+
- `Message sent in chat`
|
|
198
|
+
- `Send Message`
|
|
199
|
+
- `New Order Tracking Update`
|
|
200
|
+
- `vendor_list_experiment`
|
|
201
|
+
- `Order Placed FOR VENDOR`
|
|
202
|
+
- `Order Placed FOR CUSTOMER`
|
|
203
|
+
|
|
204
|
+
**Note**: All events are **always** sent to Segment. Only the events listed above are also sent to RudderStack.
|
|
205
|
+
|
|
206
|
+
### Routing Logic
|
|
207
|
+
|
|
208
|
+
1. Check if event name is in `sendToRudderstack` array
|
|
209
|
+
2. If not found, check if event matches any `eventPatterns` (regex patterns)
|
|
210
|
+
3. If either condition matches, send to RudderStack
|
|
211
|
+
|
|
212
|
+
## RudderStack Configuration
|
|
213
|
+
|
|
214
|
+
### Batching Behavior
|
|
215
|
+
|
|
216
|
+
The RudderStack Node.js SDK is configured with:
|
|
217
|
+
- **flushAt**: 20 events (batch size)
|
|
218
|
+
- **flushInterval**: 10000ms (10 seconds)
|
|
219
|
+
|
|
220
|
+
Events are automatically batched and sent when either:
|
|
221
|
+
- 20 events accumulate, OR
|
|
222
|
+
- 10 seconds pass
|
|
223
|
+
|
|
224
|
+
### Data Enrichment
|
|
225
|
+
|
|
226
|
+
All events sent to RudderStack are automatically enriched with:
|
|
227
|
+
- `anlaytics_lib_version`: Library version
|
|
228
|
+
- `fleek_platform`: App type (e.g., 'VENDOR_WEB_PORTAL')
|
|
229
|
+
- `time_stamp`: Unix timestamp
|
|
230
|
+
|
|
231
|
+
## Error Handling
|
|
232
|
+
|
|
233
|
+
### Independent Error Handling
|
|
234
|
+
|
|
235
|
+
- **Segment failures** don't affect RudderStack
|
|
236
|
+
- **RudderStack failures** don't affect Segment
|
|
237
|
+
- Errors are logged via the `errorHandler` callback
|
|
238
|
+
- Application continues to function even if both SDKs fail
|
|
239
|
+
|
|
240
|
+
### Error Handler Example
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
errorHandler: (error) => {
|
|
244
|
+
// Log to your error tracking service
|
|
245
|
+
console.error('Analytics error:', error);
|
|
246
|
+
|
|
247
|
+
// Optionally send to Sentry, DataDog, etc.
|
|
248
|
+
// sentry.captureException(error);
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## TypeScript Types
|
|
253
|
+
|
|
254
|
+
### Event Parameters
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
// Track event
|
|
258
|
+
analytics.track({
|
|
259
|
+
eventName: string, // Event name from EVENT_NAMES type
|
|
260
|
+
eventParams: Record<string, unknown>, // Event-specific properties
|
|
261
|
+
userId?: string,
|
|
262
|
+
anonymousId?: string,
|
|
263
|
+
// ... other optional fields
|
|
264
|
+
}, callback?: () => void);
|
|
265
|
+
|
|
266
|
+
// Identify
|
|
267
|
+
analytics.identify({
|
|
268
|
+
userId?: string,
|
|
269
|
+
anonymousId?: string,
|
|
270
|
+
traits?: Record<string, string | boolean>,
|
|
271
|
+
// ... other optional fields
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// Page
|
|
275
|
+
analytics.page({
|
|
276
|
+
userId?: string,
|
|
277
|
+
anonymousId?: string,
|
|
278
|
+
name?: string,
|
|
279
|
+
category?: string,
|
|
280
|
+
properties?: Record<string, unknown>,
|
|
281
|
+
// ... other optional fields
|
|
282
|
+
});
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Complete Example
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
import { TrackAnalytics } from 'fleek-track-analytics/lib/node';
|
|
289
|
+
|
|
290
|
+
// Initialize
|
|
291
|
+
const analytics = new TrackAnalytics({
|
|
292
|
+
platform: 'NODE',
|
|
293
|
+
App: 'VENDOR_WEB_PORTAL',
|
|
294
|
+
segment: true,
|
|
295
|
+
segmentKey: process.env.SEGMENT_WRITE_KEY!,
|
|
296
|
+
debug: process.env.NODE_ENV === 'development',
|
|
297
|
+
errorHandler: (error) => {
|
|
298
|
+
console.error('Analytics error:', error);
|
|
299
|
+
},
|
|
300
|
+
rudderstack: {
|
|
301
|
+
enabled: true,
|
|
302
|
+
// Uses defaults: https://rudderstack.joinfleek.com
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
await analytics.initAnalytics();
|
|
307
|
+
|
|
308
|
+
// Track an event
|
|
309
|
+
analytics.track({
|
|
310
|
+
eventName: 'Order Placed FOR VENDOR',
|
|
311
|
+
eventParams: {
|
|
312
|
+
orderId: 'order-123',
|
|
313
|
+
amount: 99.99,
|
|
314
|
+
vendorId: 'vendor-456',
|
|
315
|
+
},
|
|
316
|
+
userId: 'user-789',
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
// Identify a user
|
|
320
|
+
analytics.identify({
|
|
321
|
+
userId: 'user-789',
|
|
322
|
+
traits: {
|
|
323
|
+
email: 'vendor@example.com',
|
|
324
|
+
name: 'Vendor Name',
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Important Notes
|
|
330
|
+
|
|
331
|
+
1. **Initialization Required**: Always call `await analytics.initAnalytics()` before using track/identify/page methods
|
|
332
|
+
2. **Callback-Based API**: All methods use callbacks (not promises) - this is by design for Node.js compatibility
|
|
333
|
+
3. **Event Routing is Internal**: The routing configuration exists in the library, not in your backend code
|
|
334
|
+
4. **Default Config**: If you don't provide RudderStack `writeKey` or `dataPlaneUrl`, defaults are used
|
|
335
|
+
5. **Mutual Exclusivity**: Segment and RudderStack operate independently - one can fail without affecting the other
|
|
336
|
+
|
|
337
|
+
## Troubleshooting
|
|
338
|
+
|
|
339
|
+
### Events Not Appearing in RudderStack
|
|
340
|
+
|
|
341
|
+
1. Check if RudderStack is enabled: `rudderstack.enabled === true`
|
|
342
|
+
2. Verify the event name is in the routing configuration
|
|
343
|
+
3. Check errorHandler logs for initialization failures
|
|
344
|
+
4. Verify writeKey and dataPlaneUrl are correct (or using defaults)
|
|
345
|
+
|
|
346
|
+
### TypeScript Errors
|
|
347
|
+
|
|
348
|
+
- Ensure you're importing from `fleek-track-analytics/lib/node`
|
|
349
|
+
- Check that `platform: 'NODE'` is set correctly
|
|
350
|
+
- Verify all required fields in `IAnalyticsInit` are provided
|
|
351
|
+
|
|
352
|
+
## Package Versions Summary
|
|
353
|
+
|
|
354
|
+
| Package | Version | Purpose |
|
|
355
|
+
|---------|---------|---------|
|
|
356
|
+
| `fleek-track-analytics` | `1.17.40` | Main library |
|
|
357
|
+
| `@rudderstack/rudder-sdk-node` | `^2.0.0` | RudderStack SDK (internal) |
|
|
358
|
+
| `@segment/analytics-node` | `^2.1.0` | Segment SDK (internal) |
|
|
359
|
+
|
|
360
|
+
## Support
|
|
361
|
+
|
|
362
|
+
For issues or questions, refer to the library repository or contact the maintainers.
|
|
363
|
+
|
|
@@ -13,16 +13,21 @@ class TrackAnalytics {
|
|
|
13
13
|
this.rudderstackWrapper = null;
|
|
14
14
|
this.initAnalytics = async () => {
|
|
15
15
|
var _a;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.
|
|
16
|
+
if (this.initParams.segment) {
|
|
17
|
+
try {
|
|
18
|
+
if (this.initParams.devMode && !this.initParams.debug) {
|
|
19
|
+
this.analyticsWrapper = dev_logger_1.devModeLogger;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.analyticsWrapper = (0, node_segment_1.nodeSegment)(this.initParams.segmentKey, this.initParams.App, this.initParams.debug);
|
|
23
|
+
}
|
|
19
24
|
}
|
|
20
|
-
|
|
21
|
-
this.
|
|
25
|
+
catch (e) {
|
|
26
|
+
this.initParams.errorHandler(new Error(`Segment initialization failed: ${e instanceof Error ? e.message : String(e)}. Continuing with RudderStack if enabled.`));
|
|
27
|
+
this.analyticsWrapper = null;
|
|
22
28
|
}
|
|
23
29
|
}
|
|
24
|
-
|
|
25
|
-
this.initParams.errorHandler(new Error(`Segment initialization failed: ${e instanceof Error ? e.message : String(e)}. Continuing with RudderStack if enabled.`));
|
|
30
|
+
else {
|
|
26
31
|
this.analyticsWrapper = null;
|
|
27
32
|
}
|
|
28
33
|
if ((_a = this.initParams.rudderstack) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-analytics.js","sourceRoot":"","sources":["../../../src/node/track-analytics/track-analytics.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAEhD,iEAA6D;AAC7D,yEAAqE;AACrE,2FAAsF;AACtF,6FAA0F;AAC1F,oDAAoD;AAGpD,MAAM,cAAc;IAKlB,YAAY,MAAsB;QAH1B,qBAAgB,GAAiC,IAAI,CAAC;QACtD,uBAAkB,GAAiC,IAAI,CAAC;QAMhE,kBAAa,GAAG,KAAK,IAAI,EAAE;;YAEzB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"track-analytics.js","sourceRoot":"","sources":["../../../src/node/track-analytics/track-analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type tPLATFORM = 'REACT_NATIVE' | 'WEB' | 'NODE';
|
|
2
|
-
export type tAPP = 'VENDOR_APP' | 'CONSUMER_APP' | 'CONSUMER_WEB' | 'SHOPIFY_CHECKOUT' | 'VENDOR_WEB_PORTAL' | 'QC_APP';
|
|
2
|
+
export type tAPP = 'VENDOR_APP' | 'CONSUMER_APP' | 'CONSUMER_WEB' | 'SHOPIFY_CHECKOUT' | 'VENDOR_WEB_PORTAL' | 'QC_APP' | 'FLEEK_NODE';
|
|
3
3
|
export interface IAnalyticsInit {
|
|
4
4
|
platform: tPLATFORM;
|
|
5
5
|
App: tAPP;
|