kanmi-perf-revenue 1.1.0 → 1.2.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 CHANGED
@@ -1,9 +1,17 @@
1
1
  # kanmi-perf-revenue
2
2
 
3
- Empirical Performance Revenue EngineMeasure how Core Web Vitals impact conversions from your actual data.
3
+ Revenue intelligence for web performance Native Datadog RUM integration or bring your own data.
4
4
 
5
5
  **No assumed coefficients.** No "0.5% CVR per 100ms" guesses. This tool measures the actual conversion rates at each performance bucket from YOUR session data.
6
6
 
7
+ ## Data Sources
8
+
9
+ | Source | Integration | Features |
10
+ |--------|-------------|----------|
11
+ | **Datadog RUM + Product Analytics** | Native API | Full: frustration signals, funnels, retention, replay |
12
+ | **CSV/JSON import** | Universal | Core analysis works with any backend |
13
+ | **web-vitals.js + your backend** | Self-hosted | Collect → export → analyze |
14
+
7
15
  ## Install
8
16
 
9
17
  ```bash
@@ -83,6 +91,7 @@ Monthly revenue opportunity: $10K/month
83
91
  | Feature | Description |
84
92
  |---------|-------------|
85
93
  | **8 Performance Metrics** | LCP, FCP, INP, CLS, TTFB, TTI, Onload, Page Size |
94
+ | **Datadog Product Analytics** | Frustration signals, user journeys, retention — no GA needed |
86
95
  | **Segmentation** | Device, page type, geography, traffic source |
87
96
  | **Statistical Significance** | Confidence intervals, p-values, effect sizes |
88
97
  | **Correlation Analysis** | Which metrics correlate most with conversions |
@@ -125,6 +134,119 @@ ghi789,800,1,150.00,mobile,checkout
125
134
 
126
135
  The tool queries Datadog's RUM API for session-level data including Core Web Vitals, user actions, and custom events.
127
136
 
137
+ ### Datadog Product Analytics
138
+
139
+ Full integration with Datadog Product Analytics — **no need for Google Analytics**. One SDK provides:
140
+
141
+ - Core Web Vitals + conversion data in the same session
142
+ - Frustration signals (rage clicks, dead clicks, error clicks)
143
+ - User journey mapping and retention analysis
144
+ - Funnel analysis with performance correlation
145
+
146
+ ```typescript
147
+ import {
148
+ queryEnhancedSessions,
149
+ queryFunnel,
150
+ queryCohortRetention,
151
+ analyzeFrustrationImpact,
152
+ } from 'kanmi-perf-revenue';
153
+
154
+ // Query sessions with frustration signals
155
+ const { sessions } = await queryEnhancedSessions({
156
+ apiKey: process.env.DD_API_KEY,
157
+ appKey: process.env.DD_APP_KEY,
158
+ startDate: '2025-01-01',
159
+ endDate: '2025-01-14',
160
+ includeFrustrationSignals: true,
161
+ });
162
+
163
+ // Analyze frustration impact on conversions
164
+ const impact = analyzeFrustrationImpact(sessions);
165
+ console.log(`Frustrated users convert ${(impact.summary.conversionImpact * 100).toFixed(1)}% less`);
166
+
167
+ // Query conversion funnel
168
+ const funnel = await queryFunnel(
169
+ { apiKey: process.env.DD_API_KEY, appKey: process.env.DD_APP_KEY, startDate: '2025-01-01', endDate: '2025-01-14' },
170
+ [
171
+ { name: 'View Product', selector: 'view_product' },
172
+ { name: 'Add to Cart', selector: 'add_to_cart' },
173
+ { name: 'Checkout', selector: 'checkout_start' },
174
+ { name: 'Purchase', selector: 'purchase', isConversion: true },
175
+ ]
176
+ );
177
+
178
+ // Cohort retention analysis
179
+ const retention = await queryCohortRetention(
180
+ { apiKey: process.env.DD_API_KEY, appKey: process.env.DD_APP_KEY, startDate: '2025-01-01', endDate: '2025-01-14' },
181
+ {
182
+ name: 'January Signups',
183
+ query: '@session.is_first_visit:true',
184
+ period: { start: '2025-01-01', end: '2025-01-31' },
185
+ }
186
+ );
187
+ ```
188
+
189
+ ### Self-Hosted with web-vitals.js
190
+
191
+ Don't use Datadog? Collect your own data with Google's [web-vitals](https://github.com/GoogleChrome/web-vitals) library and export to CSV.
192
+
193
+ ```html
194
+ <!-- Add to your site -->
195
+ <script type="module">
196
+ import { onLCP, onINP, onCLS, onFCP, onTTFB } from 'https://unpkg.com/web-vitals@4/dist/web-vitals.js';
197
+
198
+ const sessionId = crypto.randomUUID();
199
+ const metrics = {};
200
+
201
+ // Detect page type from URL
202
+ function getPageType(path) {
203
+ if (path === '/') return 'home';
204
+ if (path.includes('/product/')) return 'pdp';
205
+ if (path.includes('/category/')) return 'plp';
206
+ if (path.includes('/cart') || path.includes('/checkout')) return 'checkout';
207
+ return 'other';
208
+ }
209
+
210
+ function sendToBackend(metric) {
211
+ metrics[metric.name.toLowerCase()] = metric.value;
212
+
213
+ // Send to your backend (adjust URL)
214
+ navigator.sendBeacon('/api/vitals', JSON.stringify({
215
+ session_id: sessionId,
216
+ ...metrics,
217
+ timestamp: new Date().toISOString(),
218
+ device: /Mobile/.test(navigator.userAgent) ? 'mobile' : 'desktop',
219
+ page_type: getPageType(location.pathname),
220
+ }));
221
+ }
222
+
223
+ onLCP(sendToBackend);
224
+ onINP(sendToBackend);
225
+ onCLS(sendToBackend);
226
+ onFCP(sendToBackend);
227
+ onTTFB(sendToBackend);
228
+
229
+ // Track conversions - call this on purchase
230
+ window.trackConversion = (value) => {
231
+ navigator.sendBeacon('/api/vitals', JSON.stringify({
232
+ session_id: sessionId,
233
+ converted: true,
234
+ order_value: value,
235
+ }));
236
+ };
237
+ </script>
238
+ ```
239
+
240
+ Then export your backend data to CSV and analyze:
241
+
242
+ ```bash
243
+ # Export from your database
244
+ psql -c "COPY (SELECT * FROM sessions) TO STDOUT CSV HEADER" > sessions.csv
245
+
246
+ # Analyze
247
+ npx kanmi-perf-revenue --file sessions.csv --client "My Site"
248
+ ```
249
+
128
250
  ## CLI Reference
129
251
 
130
252
  ```bash
@@ -217,7 +339,11 @@ console.log(`Recommendation: ${roi.roi.recommendation}`);
217
339
  ```typescript
218
340
  import { generateAlertReport, DEFAULT_ALERT_CONFIG } from 'kanmi-perf-revenue';
219
341
 
220
- const alerts = generateAlertReport(sessions, DEFAULT_ALERT_CONFIG, baselineSessions);
342
+ // Check current sessions against thresholds
343
+ const alerts = generateAlertReport(sessions, DEFAULT_ALERT_CONFIG);
344
+
345
+ // Optionally compare to baseline for regression detection
346
+ // const alerts = generateAlertReport(sessions, DEFAULT_ALERT_CONFIG, baselineSessions);
221
347
 
222
348
  if (alerts.summary.critical > 0) {
223
349
  console.log('CRITICAL ALERTS:', alerts.alerts.filter(a => a.severity === 'critical'));
@@ -233,6 +359,44 @@ const slackMessage = exportToSlack(result, { clientName: 'Acme Corp' });
233
359
  // Send slackMessage.blocks to Slack API
234
360
  ```
235
361
 
362
+ ### Correlation Analysis
363
+
364
+ ```typescript
365
+ import { calculateMetricImportance, generateCorrelationMarkdown } from 'kanmi-perf-revenue';
366
+
367
+ const importance = calculateMetricImportance(sessions);
368
+ console.log(generateCorrelationMarkdown(importance));
369
+ // Shows which metrics correlate most strongly with conversions
370
+ ```
371
+
372
+ ### Forecasting
373
+
374
+ ```typescript
375
+ import { forecastRevenue, generateForecastMarkdown } from 'kanmi-perf-revenue';
376
+
377
+ const forecast = forecastRevenue(sessions, {
378
+ metric: 'lcp',
379
+ currentValue: 3500,
380
+ targetValue: 2500,
381
+ implementationMonth: 2,
382
+ });
383
+ console.log(generateForecastMarkdown(forecast));
384
+ // 12-month revenue projection with cumulative gains
385
+ ```
386
+
387
+ ### A/B Test Analysis
388
+
389
+ ```typescript
390
+ import { analyzeABTest, generateABTestMarkdown } from 'kanmi-perf-revenue';
391
+
392
+ // Sessions must have experiment_id and experiment_variant fields
393
+ const abReport = analyzeABTest(sessions, 'perf-optimization-test');
394
+ if (abReport) {
395
+ console.log(generateABTestMarkdown(abReport));
396
+ console.log(`Winner: ${abReport.winner?.name || 'No clear winner yet'}`);
397
+ }
398
+ ```
399
+
236
400
  ## How It Works
237
401
 
238
402
  1. **Bucket sessions by performance** — Group sessions into performance ranges (e.g., 0-1s, 1-2s, 2-3s LCP)
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Datadog Product Analytics Integration
3
+ *
4
+ * Queries Datadog Product Analytics for enhanced user behavior data:
5
+ * - Conversion funnels with drop-off analysis
6
+ * - Cohort retention analysis
7
+ * - User journey mapping
8
+ * - Frustration signals (rage clicks, error clicks, dead clicks)
9
+ *
10
+ * Product Analytics uses the same SDK as RUM, providing unified
11
+ * performance + behavior data without needing Google Analytics.
12
+ *
13
+ * @author Kanmi Obasa <i@kanmiobasa.com>
14
+ */
15
+ import type { SessionData, DatadogQueryConfig } from './datadog-session-query.js';
16
+ export interface ProductAnalyticsConfig extends DatadogQueryConfig {
17
+ /** Application ID for Product Analytics */
18
+ applicationId?: string;
19
+ /** Include frustration signals */
20
+ includeFrustrationSignals?: boolean;
21
+ /** Include retention metrics */
22
+ includeRetention?: boolean;
23
+ }
24
+ export interface FrustrationSignals {
25
+ /** Rage clicks (rapid repeated clicks on same element) */
26
+ rageClicks: number;
27
+ /** Dead clicks (clicks on non-interactive elements) */
28
+ deadClicks: number;
29
+ /** Error clicks (clicks that triggered JS errors) */
30
+ errorClicks: number;
31
+ /** Total frustration score (weighted sum) */
32
+ frustrationScore: number;
33
+ }
34
+ export interface EnhancedSessionData extends SessionData {
35
+ /** Frustration signals from user behavior */
36
+ frustration?: FrustrationSignals;
37
+ /** Session replay available */
38
+ hasReplay?: boolean;
39
+ /** User engagement score (0-100) */
40
+ engagementScore?: number;
41
+ /** Actions taken in session */
42
+ actions?: UserAction[];
43
+ /** Errors encountered */
44
+ errors?: SessionError[];
45
+ }
46
+ export interface UserAction {
47
+ type: 'click' | 'scroll' | 'input' | 'custom';
48
+ name: string;
49
+ timestamp: string;
50
+ target?: string;
51
+ frustrationSignal?: 'rage_click' | 'dead_click' | 'error_click';
52
+ }
53
+ export interface SessionError {
54
+ message: string;
55
+ source: string;
56
+ timestamp: string;
57
+ handled: boolean;
58
+ }
59
+ export interface FunnelStep {
60
+ name: string;
61
+ /** CSS selector or action name to match */
62
+ selector: string;
63
+ /** Whether this is a conversion event */
64
+ isConversion?: boolean;
65
+ }
66
+ export interface FunnelResult {
67
+ steps: FunnelStepResult[];
68
+ overallConversionRate: number;
69
+ totalSessions: number;
70
+ medianTimeToConvert: number | null;
71
+ }
72
+ export interface FunnelStepResult {
73
+ name: string;
74
+ sessions: number;
75
+ conversionRate: number;
76
+ dropOffRate: number;
77
+ avgTimeToNext: number | null;
78
+ /** Performance at this step */
79
+ performance: {
80
+ p75Lcp: number | null;
81
+ p75Inp: number | null;
82
+ frustrationRate: number;
83
+ };
84
+ }
85
+ export interface CohortDefinition {
86
+ /** Cohort name */
87
+ name: string;
88
+ /** Filter query (Datadog query syntax) */
89
+ query: string;
90
+ /** Time period for cohort */
91
+ period?: {
92
+ start: string;
93
+ end: string;
94
+ };
95
+ }
96
+ export interface RetentionResult {
97
+ cohort: string;
98
+ initialUsers: number;
99
+ /** Retention by period (day/week/month) */
100
+ retention: RetentionPeriod[];
101
+ /** Average LTV per user */
102
+ avgLtv: number;
103
+ }
104
+ export interface RetentionPeriod {
105
+ period: number;
106
+ label: string;
107
+ usersReturned: number;
108
+ retentionRate: number;
109
+ revenue: number;
110
+ }
111
+ export interface JourneyNode {
112
+ page: string;
113
+ sessions: number;
114
+ avgTimeSpent: number;
115
+ exitRate: number;
116
+ nextPages: Array<{
117
+ page: string;
118
+ probability: number;
119
+ }>;
120
+ }
121
+ export interface UserJourneyMap {
122
+ entryPoints: JourneyNode[];
123
+ totalJourneys: number;
124
+ avgJourneyLength: number;
125
+ commonPaths: Array<{
126
+ path: string[];
127
+ count: number;
128
+ conversionRate: number;
129
+ }>;
130
+ }
131
+ /**
132
+ * Query Datadog for enhanced session data including frustration signals.
133
+ */
134
+ export declare function queryEnhancedSessions(config: ProductAnalyticsConfig): Promise<{
135
+ sessions: EnhancedSessionData[];
136
+ metadata: Record<string, unknown>;
137
+ }>;
138
+ /**
139
+ * Query and analyze a conversion funnel.
140
+ */
141
+ export declare function queryFunnel(config: ProductAnalyticsConfig, steps: FunnelStep[]): Promise<FunnelResult>;
142
+ /**
143
+ * Analyze funnel with performance correlation.
144
+ */
145
+ export declare function analyzeFunnelPerformanceImpact(funnel: FunnelResult, _sessions: EnhancedSessionData[]): {
146
+ stepAnalysis: Array<{
147
+ step: string;
148
+ fastSessions: {
149
+ count: number;
150
+ conversionRate: number;
151
+ };
152
+ slowSessions: {
153
+ count: number;
154
+ conversionRate: number;
155
+ };
156
+ performanceImpact: number;
157
+ }>;
158
+ recommendations: string[];
159
+ };
160
+ /**
161
+ * Query cohort retention data.
162
+ */
163
+ export declare function queryCohortRetention(config: ProductAnalyticsConfig, cohort: CohortDefinition, periods?: number, periodType?: 'day' | 'week' | 'month'): Promise<RetentionResult>;
164
+ /**
165
+ * Build user journey map from session data.
166
+ */
167
+ export declare function buildUserJourneyMap(sessions: EnhancedSessionData[]): UserJourneyMap;
168
+ /**
169
+ * Analyze frustration signals and their impact on conversions.
170
+ */
171
+ export declare function analyzeFrustrationImpact(sessions: EnhancedSessionData[]): {
172
+ summary: {
173
+ totalSessions: number;
174
+ frustratedSessions: number;
175
+ frustrationRate: number;
176
+ conversionWithFrustration: number;
177
+ conversionWithoutFrustration: number;
178
+ conversionImpact: number;
179
+ };
180
+ bySignalType: Array<{
181
+ type: string;
182
+ count: number;
183
+ sessionsAffected: number;
184
+ conversionRate: number;
185
+ }>;
186
+ recommendations: string[];
187
+ };
188
+ /**
189
+ * Generate markdown report for Product Analytics data.
190
+ */
191
+ export declare function generateProductAnalyticsMarkdown(sessions: EnhancedSessionData[], funnel?: FunnelResult, retention?: RetentionResult): string;
192
+ //# sourceMappingURL=datadog-product-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datadog-product-analytics.d.ts","sourceRoot":"","sources":["../../src/empirical/datadog-product-analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,632 @@
1
+ /**
2
+ * Datadog Product Analytics Integration
3
+ *
4
+ * Queries Datadog Product Analytics for enhanced user behavior data:
5
+ * - Conversion funnels with drop-off analysis
6
+ * - Cohort retention analysis
7
+ * - User journey mapping
8
+ * - Frustration signals (rage clicks, error clicks, dead clicks)
9
+ *
10
+ * Product Analytics uses the same SDK as RUM, providing unified
11
+ * performance + behavior data without needing Google Analytics.
12
+ *
13
+ * @author Kanmi Obasa <i@kanmiobasa.com>
14
+ */
15
+ // =============================================================================
16
+ // ENHANCED SESSION QUERY
17
+ // =============================================================================
18
+ /**
19
+ * Query Datadog for enhanced session data including frustration signals.
20
+ */
21
+ export async function queryEnhancedSessions(config) {
22
+ const startTime = Date.now();
23
+ const site = config.site || 'datadoghq.com';
24
+ // Build RUM query with action/error data
25
+ const filters = [
26
+ '@type:session',
27
+ '@session.time_spent:>0',
28
+ ];
29
+ if (config.applicationId) {
30
+ filters.push(`@application.id:${config.applicationId}`);
31
+ }
32
+ // Query sessions
33
+ const sessionResponse = await fetch(`https://api.${site}/api/v2/rum/events/search`, {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/json',
37
+ 'DD-API-KEY': config.apiKey,
38
+ 'DD-APPLICATION-KEY': config.appKey,
39
+ },
40
+ body: JSON.stringify({
41
+ filter: {
42
+ query: filters.join(' '),
43
+ from: `${config.startDate}T00:00:00Z`,
44
+ to: `${config.endDate}T23:59:59Z`,
45
+ },
46
+ page: { limit: 10000 },
47
+ sort: '-timestamp',
48
+ }),
49
+ });
50
+ if (!sessionResponse.ok) {
51
+ const error = await sessionResponse.text();
52
+ throw new Error(`Datadog API error: ${sessionResponse.status} - ${error}`);
53
+ }
54
+ const sessionData = await sessionResponse.json();
55
+ // Query actions for frustration signals
56
+ let actionsData = { data: [] };
57
+ if (config.includeFrustrationSignals) {
58
+ const actionsResponse = await fetch(`https://api.${site}/api/v2/rum/events/search`, {
59
+ method: 'POST',
60
+ headers: {
61
+ 'Content-Type': 'application/json',
62
+ 'DD-API-KEY': config.apiKey,
63
+ 'DD-APPLICATION-KEY': config.appKey,
64
+ },
65
+ body: JSON.stringify({
66
+ filter: {
67
+ query: '@type:action @action.frustration.type:*',
68
+ from: `${config.startDate}T00:00:00Z`,
69
+ to: `${config.endDate}T23:59:59Z`,
70
+ },
71
+ page: { limit: 10000 },
72
+ }),
73
+ });
74
+ if (actionsResponse.ok) {
75
+ actionsData = await actionsResponse.json();
76
+ }
77
+ }
78
+ // Build enhanced sessions
79
+ const sessions = transformToEnhancedSessions(sessionData.data || [], actionsData.data || []);
80
+ return {
81
+ sessions,
82
+ metadata: {
83
+ totalSessions: sessions.length,
84
+ queryTimeMs: Date.now() - startTime,
85
+ period: { start: config.startDate, end: config.endDate },
86
+ includedFrustration: config.includeFrustrationSignals,
87
+ },
88
+ };
89
+ }
90
+ // =============================================================================
91
+ // FUNNEL ANALYSIS
92
+ // =============================================================================
93
+ /**
94
+ * Query and analyze a conversion funnel.
95
+ */
96
+ export async function queryFunnel(config, steps) {
97
+ const site = config.site || 'datadoghq.com';
98
+ // Query actions matching funnel steps
99
+ const stepResults = [];
100
+ let previousSessions = 0;
101
+ for (let i = 0; i < steps.length; i++) {
102
+ const step = steps[i];
103
+ // Query sessions that reached this step
104
+ const query = `@type:action @action.name:"${step.selector}"`;
105
+ const response = await fetch(`https://api.${site}/api/v2/rum/analytics/aggregate`, {
106
+ method: 'POST',
107
+ headers: {
108
+ 'Content-Type': 'application/json',
109
+ 'DD-API-KEY': config.apiKey,
110
+ 'DD-APPLICATION-KEY': config.appKey,
111
+ },
112
+ body: JSON.stringify({
113
+ filter: {
114
+ query,
115
+ from: `${config.startDate}T00:00:00Z`,
116
+ to: `${config.endDate}T23:59:59Z`,
117
+ },
118
+ compute: [
119
+ { aggregation: 'cardinality', metric: '@session.id' },
120
+ { aggregation: 'pc75', metric: '@view.largest_contentful_paint' },
121
+ { aggregation: 'pc75', metric: '@action.frustration.type' },
122
+ ],
123
+ group_by: [],
124
+ }),
125
+ });
126
+ if (!response.ok) {
127
+ throw new Error(`Funnel query failed for step: ${step.name}`);
128
+ }
129
+ const data = await response.json();
130
+ const buckets = data.data?.buckets || [];
131
+ const sessions = buckets[0]?.computes?.['c0'] || 0;
132
+ const p75Lcp = buckets[0]?.computes?.['c1'] || null;
133
+ const dropOffRate = i === 0 ? 0 : previousSessions > 0
134
+ ? (previousSessions - sessions) / previousSessions
135
+ : 0;
136
+ stepResults.push({
137
+ name: step.name,
138
+ sessions,
139
+ conversionRate: previousSessions > 0 ? sessions / previousSessions : 1,
140
+ dropOffRate,
141
+ avgTimeToNext: null, // Would need additional query
142
+ performance: {
143
+ p75Lcp,
144
+ p75Inp: null,
145
+ frustrationRate: 0,
146
+ },
147
+ });
148
+ previousSessions = sessions;
149
+ }
150
+ const firstStep = stepResults[0]?.sessions || 0;
151
+ const lastStep = stepResults[stepResults.length - 1]?.sessions || 0;
152
+ return {
153
+ steps: stepResults,
154
+ overallConversionRate: firstStep > 0 ? lastStep / firstStep : 0,
155
+ totalSessions: firstStep,
156
+ medianTimeToConvert: null,
157
+ };
158
+ }
159
+ /**
160
+ * Analyze funnel with performance correlation.
161
+ */
162
+ export function analyzeFunnelPerformanceImpact(funnel, _sessions) {
163
+ const stepAnalysis = funnel.steps.map(step => {
164
+ // This would correlate session performance with funnel progression
165
+ // Simplified for now
166
+ return {
167
+ step: step.name,
168
+ fastSessions: { count: 0, conversionRate: 0 },
169
+ slowSessions: { count: 0, conversionRate: 0 },
170
+ performanceImpact: 0,
171
+ };
172
+ });
173
+ const recommendations = [];
174
+ // Find steps with high drop-off
175
+ for (const step of funnel.steps) {
176
+ if (step.dropOffRate > 0.5) {
177
+ recommendations.push(`High drop-off at "${step.name}" (${(step.dropOffRate * 100).toFixed(0)}%). ` +
178
+ `Check page performance and UX.`);
179
+ }
180
+ if (step.performance.p75Lcp && step.performance.p75Lcp > 2500) {
181
+ recommendations.push(`Slow LCP at "${step.name}" (${step.performance.p75Lcp}ms). ` +
182
+ `Performance may be impacting conversions.`);
183
+ }
184
+ }
185
+ return { stepAnalysis, recommendations };
186
+ }
187
+ // =============================================================================
188
+ // COHORT RETENTION
189
+ // =============================================================================
190
+ /**
191
+ * Query cohort retention data.
192
+ */
193
+ export async function queryCohortRetention(config, cohort, periods = 12, periodType = 'week') {
194
+ const site = config.site || 'datadoghq.com';
195
+ // Query initial cohort size
196
+ const cohortQuery = cohort.query || '@type:session';
197
+ const initialResponse = await fetch(`https://api.${site}/api/v2/rum/analytics/aggregate`, {
198
+ method: 'POST',
199
+ headers: {
200
+ 'Content-Type': 'application/json',
201
+ 'DD-API-KEY': config.apiKey,
202
+ 'DD-APPLICATION-KEY': config.appKey,
203
+ },
204
+ body: JSON.stringify({
205
+ filter: {
206
+ query: cohortQuery,
207
+ from: cohort.period?.start || config.startDate,
208
+ to: cohort.period?.end || config.endDate,
209
+ },
210
+ compute: [
211
+ { aggregation: 'cardinality', metric: '@usr.id' },
212
+ ],
213
+ }),
214
+ });
215
+ if (!initialResponse.ok) {
216
+ throw new Error('Failed to query cohort');
217
+ }
218
+ const initialData = await initialResponse.json();
219
+ const initialUsers = initialData.data?.buckets?.[0]?.computes?.['c0'] || 0;
220
+ // Query retention for each period
221
+ const retention = [];
222
+ const startDate = new Date(cohort.period?.start || config.startDate);
223
+ for (let i = 0; i <= periods; i++) {
224
+ const periodStart = new Date(startDate);
225
+ const periodEnd = new Date(startDate);
226
+ if (periodType === 'day') {
227
+ periodStart.setDate(periodStart.getDate() + i);
228
+ periodEnd.setDate(periodEnd.getDate() + i + 1);
229
+ }
230
+ else if (periodType === 'week') {
231
+ periodStart.setDate(periodStart.getDate() + i * 7);
232
+ periodEnd.setDate(periodEnd.getDate() + (i + 1) * 7);
233
+ }
234
+ else {
235
+ periodStart.setMonth(periodStart.getMonth() + i);
236
+ periodEnd.setMonth(periodEnd.getMonth() + i + 1);
237
+ }
238
+ // Query returning users in this period
239
+ const retentionResponse = await fetch(`https://api.${site}/api/v2/rum/analytics/aggregate`, {
240
+ method: 'POST',
241
+ headers: {
242
+ 'Content-Type': 'application/json',
243
+ 'DD-API-KEY': config.apiKey,
244
+ 'DD-APPLICATION-KEY': config.appKey,
245
+ },
246
+ body: JSON.stringify({
247
+ filter: {
248
+ query: `${cohortQuery} @session.is_first_visit:false`,
249
+ from: periodStart.toISOString(),
250
+ to: periodEnd.toISOString(),
251
+ },
252
+ compute: [
253
+ { aggregation: 'cardinality', metric: '@usr.id' },
254
+ { aggregation: 'sum', metric: '@action.custom.value' },
255
+ ],
256
+ }),
257
+ });
258
+ if (retentionResponse.ok) {
259
+ const data = await retentionResponse.json();
260
+ const usersReturned = data.data?.buckets?.[0]?.computes?.['c0'] || 0;
261
+ const revenue = data.data?.buckets?.[0]?.computes?.['c1'] || 0;
262
+ retention.push({
263
+ period: i,
264
+ label: `${periodType} ${i}`,
265
+ usersReturned,
266
+ retentionRate: initialUsers > 0 ? usersReturned / initialUsers : 0,
267
+ revenue,
268
+ });
269
+ }
270
+ }
271
+ // Calculate average LTV
272
+ const totalRevenue = retention.reduce((sum, r) => sum + r.revenue, 0);
273
+ const avgLtv = initialUsers > 0 ? totalRevenue / initialUsers : 0;
274
+ return {
275
+ cohort: cohort.name,
276
+ initialUsers,
277
+ retention,
278
+ avgLtv,
279
+ };
280
+ }
281
+ // =============================================================================
282
+ // USER JOURNEY MAPPING
283
+ // =============================================================================
284
+ /**
285
+ * Build user journey map from session data.
286
+ */
287
+ export function buildUserJourneyMap(sessions) {
288
+ const pageTransitions = new Map();
289
+ const pageStats = new Map();
290
+ const paths = new Map();
291
+ for (const session of sessions) {
292
+ const pages = session.pages_visited || [];
293
+ if (pages.length === 0)
294
+ continue;
295
+ // Track path
296
+ const pathKey = pages.join(' -> ');
297
+ const existing = paths.get(pathKey) || { count: 0, conversions: 0 };
298
+ existing.count++;
299
+ if (session.has_purchase)
300
+ existing.conversions++;
301
+ paths.set(pathKey, existing);
302
+ // Track page transitions
303
+ for (let i = 0; i < pages.length; i++) {
304
+ const page = pages[i];
305
+ const stats = pageStats.get(page) || { sessions: 0, totalTime: 0, exits: 0 };
306
+ stats.sessions++;
307
+ if (i === pages.length - 1) {
308
+ stats.exits++;
309
+ }
310
+ else {
311
+ const nextPage = pages[i + 1];
312
+ if (!pageTransitions.has(page)) {
313
+ pageTransitions.set(page, new Map());
314
+ }
315
+ const transitions = pageTransitions.get(page);
316
+ transitions.set(nextPage, (transitions.get(nextPage) || 0) + 1);
317
+ }
318
+ pageStats.set(page, stats);
319
+ }
320
+ }
321
+ // Build entry points
322
+ const entryPages = new Map();
323
+ for (const session of sessions) {
324
+ const entry = session.entry_page || session.pages_visited?.[0];
325
+ if (entry) {
326
+ entryPages.set(entry, (entryPages.get(entry) || 0) + 1);
327
+ }
328
+ }
329
+ const entryPoints = [];
330
+ for (const [page, count] of entryPages) {
331
+ const stats = pageStats.get(page);
332
+ const transitions = pageTransitions.get(page);
333
+ const nextPages = [];
334
+ if (transitions) {
335
+ const total = Array.from(transitions.values()).reduce((a, b) => a + b, 0);
336
+ for (const [nextPage, transCount] of transitions) {
337
+ nextPages.push({ page: nextPage, probability: transCount / total });
338
+ }
339
+ nextPages.sort((a, b) => b.probability - a.probability);
340
+ }
341
+ entryPoints.push({
342
+ page,
343
+ sessions: count,
344
+ avgTimeSpent: 0, // Would need duration data
345
+ exitRate: stats ? stats.exits / stats.sessions : 0,
346
+ nextPages: nextPages.slice(0, 5),
347
+ });
348
+ }
349
+ entryPoints.sort((a, b) => b.sessions - a.sessions);
350
+ // Get common paths
351
+ const commonPaths = Array.from(paths.entries())
352
+ .map(([path, data]) => ({
353
+ path: path.split(' -> '),
354
+ count: data.count,
355
+ conversionRate: data.count > 0 ? data.conversions / data.count : 0,
356
+ }))
357
+ .sort((a, b) => b.count - a.count)
358
+ .slice(0, 10);
359
+ // Calculate average journey length
360
+ const totalPages = sessions.reduce((sum, s) => sum + (s.pages_visited?.length || 0), 0);
361
+ const avgJourneyLength = sessions.length > 0 ? totalPages / sessions.length : 0;
362
+ return {
363
+ entryPoints: entryPoints.slice(0, 10),
364
+ totalJourneys: sessions.length,
365
+ avgJourneyLength,
366
+ commonPaths,
367
+ };
368
+ }
369
+ // =============================================================================
370
+ // FRUSTRATION ANALYSIS
371
+ // =============================================================================
372
+ /**
373
+ * Analyze frustration signals and their impact on conversions.
374
+ */
375
+ export function analyzeFrustrationImpact(sessions) {
376
+ const frustratedSessions = sessions.filter(s => s.frustration && s.frustration.frustrationScore > 0);
377
+ const nonFrustratedSessions = sessions.filter(s => !s.frustration || s.frustration.frustrationScore === 0);
378
+ const frustratedConversions = frustratedSessions.filter(s => s.has_purchase).length;
379
+ const nonFrustratedConversions = nonFrustratedSessions.filter(s => s.has_purchase).length;
380
+ const cvrWithFrustration = frustratedSessions.length > 0
381
+ ? frustratedConversions / frustratedSessions.length
382
+ : 0;
383
+ const cvrWithoutFrustration = nonFrustratedSessions.length > 0
384
+ ? nonFrustratedConversions / nonFrustratedSessions.length
385
+ : 0;
386
+ // Analyze by signal type
387
+ const signalTypes = ['rageClicks', 'deadClicks', 'errorClicks'];
388
+ const bySignalType = signalTypes.map(type => {
389
+ const affected = sessions.filter(s => s.frustration && s.frustration[type] > 0);
390
+ const conversions = affected.filter(s => s.has_purchase).length;
391
+ return {
392
+ type: type.replace(/([A-Z])/g, ' $1').trim(),
393
+ count: affected.reduce((sum, s) => sum + (s.frustration?.[type] || 0), 0),
394
+ sessionsAffected: affected.length,
395
+ conversionRate: affected.length > 0 ? conversions / affected.length : 0,
396
+ };
397
+ });
398
+ // Generate recommendations
399
+ const recommendations = [];
400
+ if (cvrWithFrustration < cvrWithoutFrustration * 0.8) {
401
+ recommendations.push(`Frustrated users convert ${((1 - cvrWithFrustration / cvrWithoutFrustration) * 100).toFixed(0)}% less. ` +
402
+ `Prioritize UX improvements.`);
403
+ }
404
+ for (const signal of bySignalType) {
405
+ if (signal.sessionsAffected > sessions.length * 0.1) {
406
+ recommendations.push(`${signal.sessionsAffected} sessions (${((signal.sessionsAffected / sessions.length) * 100).toFixed(0)}%) ` +
407
+ `experienced ${signal.type}. Review affected interactions.`);
408
+ }
409
+ }
410
+ return {
411
+ summary: {
412
+ totalSessions: sessions.length,
413
+ frustratedSessions: frustratedSessions.length,
414
+ frustrationRate: sessions.length > 0 ? frustratedSessions.length / sessions.length : 0,
415
+ conversionWithFrustration: cvrWithFrustration,
416
+ conversionWithoutFrustration: cvrWithoutFrustration,
417
+ conversionImpact: cvrWithoutFrustration - cvrWithFrustration,
418
+ },
419
+ bySignalType,
420
+ recommendations,
421
+ };
422
+ }
423
+ // =============================================================================
424
+ // HELPERS
425
+ // =============================================================================
426
+ function transformToEnhancedSessions(sessionEvents, actionEvents) {
427
+ const sessionMap = new Map();
428
+ const frustrationMap = new Map();
429
+ // Build frustration signals from actions
430
+ for (const event of actionEvents) {
431
+ const attrs = event.attributes;
432
+ const sessionId = attrs?.session?.id;
433
+ if (!sessionId)
434
+ continue;
435
+ const signals = frustrationMap.get(sessionId) || {
436
+ rageClicks: 0,
437
+ deadClicks: 0,
438
+ errorClicks: 0,
439
+ frustrationScore: 0,
440
+ };
441
+ const action = attrs?.action;
442
+ const actionFrustration = action?.frustration;
443
+ const frustType = actionFrustration?.type;
444
+ if (frustType === 'rage_click')
445
+ signals.rageClicks++;
446
+ if (frustType === 'dead_click')
447
+ signals.deadClicks++;
448
+ if (frustType === 'error_click')
449
+ signals.errorClicks++;
450
+ signals.frustrationScore =
451
+ signals.rageClicks * 3 +
452
+ signals.deadClicks * 1 +
453
+ signals.errorClicks * 2;
454
+ frustrationMap.set(sessionId, signals);
455
+ }
456
+ // Build enhanced sessions
457
+ for (const event of sessionEvents) {
458
+ const attrs = event.attributes;
459
+ const sessionId = attrs?.session?.id;
460
+ if (!sessionId)
461
+ continue;
462
+ if (!sessionMap.has(sessionId)) {
463
+ const session = attrs.session;
464
+ const device = attrs.device;
465
+ const view = attrs.view;
466
+ const geo = attrs.geo;
467
+ const usr = attrs.usr;
468
+ const timestamp = (attrs['@timestamp'] || attrs.date);
469
+ const timestampDate = new Date(timestamp);
470
+ const enhanced = {
471
+ session_id: sessionId,
472
+ lcp_ms: view?.largest_contentful_paint || null,
473
+ fcp_ms: view?.first_contentful_paint || null,
474
+ inp_ms: view?.interaction_to_next_paint || null,
475
+ cls: view?.cumulative_layout_shift || null,
476
+ ttfb_ms: view?.time_to_first_byte || null,
477
+ tti_ms: view?.dom_interactive || null,
478
+ onload_ms: view?.load_event || null,
479
+ page_size_kb: null,
480
+ has_purchase: false,
481
+ purchase_value: 0,
482
+ conversions: [],
483
+ bounced: session?.view_count === 1,
484
+ page_views: session?.view_count || 1,
485
+ session_duration_ms: session?.time_spent || null,
486
+ device: normalizeDevice(device?.type),
487
+ page_type: extractPageType(view?.url_path),
488
+ country: geo?.country,
489
+ region: geo?.region,
490
+ user_id: usr?.id,
491
+ is_new_user: session?.is_first_visit,
492
+ timestamp,
493
+ hour_of_day: timestampDate.getHours(),
494
+ day_of_week: timestampDate.getDay(),
495
+ frustration: frustrationMap.get(sessionId),
496
+ hasReplay: session?.has_replay || false,
497
+ engagementScore: calculateEngagementScore(session),
498
+ actions: [],
499
+ errors: [],
500
+ };
501
+ sessionMap.set(sessionId, enhanced);
502
+ }
503
+ }
504
+ return Array.from(sessionMap.values());
505
+ }
506
+ function normalizeDevice(type) {
507
+ if (!type)
508
+ return 'desktop';
509
+ const normalized = type.toLowerCase();
510
+ if (normalized.includes('mobile') || normalized.includes('phone'))
511
+ return 'mobile';
512
+ if (normalized.includes('tablet') || normalized.includes('ipad'))
513
+ return 'tablet';
514
+ return 'desktop';
515
+ }
516
+ function extractPageType(urlPath) {
517
+ if (!urlPath)
518
+ return 'unknown';
519
+ const path = urlPath.toLowerCase();
520
+ if (path.includes('/product/') || path.includes('/p/'))
521
+ return 'pdp';
522
+ if (path.includes('/category/') || path.includes('/c/') || path.includes('/shop/'))
523
+ return 'plp';
524
+ if (path.includes('/checkout') || path.includes('/cart'))
525
+ return 'checkout';
526
+ if (path === '/' || path.includes('/home'))
527
+ return 'homepage';
528
+ return 'other';
529
+ }
530
+ function calculateEngagementScore(session) {
531
+ let score = 0;
532
+ // Base score from views
533
+ const views = session?.view_count || 0;
534
+ score += Math.min(views * 10, 30);
535
+ // Time spent (max 30 points for 5+ minutes)
536
+ const timeSpent = session?.time_spent || 0;
537
+ score += Math.min((timeSpent / 1000 / 60) * 6, 30);
538
+ // Actions taken
539
+ const actions = session?.action_count || 0;
540
+ score += Math.min(actions * 5, 20);
541
+ // Not bouncing
542
+ if (views > 1)
543
+ score += 10;
544
+ // Has conversion
545
+ if (session?.has_purchase)
546
+ score += 10;
547
+ return Math.min(score, 100);
548
+ }
549
+ // =============================================================================
550
+ // REPORT GENERATION
551
+ // =============================================================================
552
+ /**
553
+ * Generate markdown report for Product Analytics data.
554
+ */
555
+ export function generateProductAnalyticsMarkdown(sessions, funnel, retention) {
556
+ const lines = [];
557
+ lines.push('## Product Analytics Report');
558
+ lines.push('');
559
+ // Overview
560
+ const frustratedCount = sessions.filter(s => s.frustration && s.frustration.frustrationScore > 0).length;
561
+ const avgEngagement = sessions.reduce((sum, s) => sum + (s.engagementScore || 0), 0) / sessions.length;
562
+ lines.push('### Session Overview');
563
+ lines.push('');
564
+ lines.push(`| Metric | Value |`);
565
+ lines.push(`|--------|-------|`);
566
+ lines.push(`| Total Sessions | ${sessions.length.toLocaleString()} |`);
567
+ lines.push(`| Avg Engagement Score | ${avgEngagement.toFixed(1)}/100 |`);
568
+ lines.push(`| Frustrated Sessions | ${frustratedCount} (${((frustratedCount / sessions.length) * 100).toFixed(1)}%) |`);
569
+ lines.push(`| Sessions with Replay | ${sessions.filter(s => s.hasReplay).length} |`);
570
+ lines.push('');
571
+ // Frustration analysis
572
+ const frustrationData = analyzeFrustrationImpact(sessions);
573
+ lines.push('### Frustration Analysis');
574
+ lines.push('');
575
+ lines.push(`| Signal | Sessions | Impact on CVR |`);
576
+ lines.push(`|--------|----------|---------------|`);
577
+ for (const signal of frustrationData.bySignalType) {
578
+ lines.push(`| ${signal.type} | ${signal.sessionsAffected} | ${(signal.conversionRate * 100).toFixed(2)}% |`);
579
+ }
580
+ lines.push('');
581
+ if (frustrationData.recommendations.length > 0) {
582
+ lines.push('**Recommendations:**');
583
+ for (const rec of frustrationData.recommendations) {
584
+ lines.push(`- ${rec}`);
585
+ }
586
+ lines.push('');
587
+ }
588
+ // Funnel
589
+ if (funnel) {
590
+ lines.push('### Conversion Funnel');
591
+ lines.push('');
592
+ lines.push(`| Step | Sessions | Conversion | Drop-off |`);
593
+ lines.push(`|------|----------|------------|----------|`);
594
+ for (const step of funnel.steps) {
595
+ lines.push(`| ${step.name} | ${step.sessions.toLocaleString()} | ${(step.conversionRate * 100).toFixed(1)}% | ${(step.dropOffRate * 100).toFixed(1)}% |`);
596
+ }
597
+ lines.push('');
598
+ lines.push(`**Overall Conversion:** ${(funnel.overallConversionRate * 100).toFixed(2)}%`);
599
+ lines.push('');
600
+ }
601
+ // Retention
602
+ if (retention) {
603
+ lines.push('### Cohort Retention');
604
+ lines.push('');
605
+ lines.push(`**Cohort:** ${retention.cohort}`);
606
+ lines.push(`**Initial Users:** ${retention.initialUsers.toLocaleString()}`);
607
+ lines.push(`**Avg LTV:** $${retention.avgLtv.toFixed(2)}`);
608
+ lines.push('');
609
+ lines.push(`| Period | Retention | Revenue |`);
610
+ lines.push(`|--------|-----------|---------|`);
611
+ for (const period of retention.retention.slice(0, 8)) {
612
+ lines.push(`| ${period.label} | ${(period.retentionRate * 100).toFixed(1)}% | $${period.revenue.toLocaleString()} |`);
613
+ }
614
+ lines.push('');
615
+ }
616
+ // User journey
617
+ const journey = buildUserJourneyMap(sessions);
618
+ lines.push('### User Journeys');
619
+ lines.push('');
620
+ lines.push(`**Total Journeys:** ${journey.totalJourneys.toLocaleString()}`);
621
+ lines.push(`**Avg Journey Length:** ${journey.avgJourneyLength.toFixed(1)} pages`);
622
+ lines.push('');
623
+ if (journey.commonPaths.length > 0) {
624
+ lines.push('**Top Paths:**');
625
+ for (const path of journey.commonPaths.slice(0, 5)) {
626
+ lines.push(`- ${path.path.join(' → ')} (${path.count} sessions, ${(path.conversionRate * 100).toFixed(1)}% CVR)`);
627
+ }
628
+ lines.push('');
629
+ }
630
+ return lines.join('\n');
631
+ }
632
+ //# sourceMappingURL=datadog-product-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datadog-product-analytics.js","sourceRoot":"","sources":["../../src/empirical/datadog-product-analytics.ts"],"names":[],"mappings":"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"}
@@ -129,4 +129,6 @@ export { analyzeABTest, createPerformanceExperiment, generateABTestMarkdown, } f
129
129
  export { buildUserJourneys, calculateAttribution, analyzePerformanceInfluence, generateAttributionReport, generateAttributionMarkdown, } from './attribution.js';
130
130
  export { DEFAULT_THRESHOLDS, DEFAULT_ALERT_CONFIG, checkThresholds, detectRegressions, detectAnomalies, detectOpportunities, generateAlertReport, generateAlertMarkdown, } from './alerting.js';
131
131
  export { exportToJson, exportOpportunitiesToCsv, exportCurvesToCsv, exportToSlack, exportAlertsToSlack, exportToEmail, exportToWebhook, exportAlertWebhook, } from './export.js';
132
+ export type { ProductAnalyticsConfig, FrustrationSignals, EnhancedSessionData, UserAction, SessionError, FunnelStep as ProductAnalyticsFunnelStep, FunnelResult as ProductAnalyticsFunnelResult, FunnelStepResult, CohortDefinition, RetentionResult, RetentionPeriod, JourneyNode, UserJourneyMap, } from './datadog-product-analytics.js';
133
+ export { queryEnhancedSessions, queryFunnel, analyzeFunnelPerformanceImpact, queryCohortRetention, buildUserJourneyMap, analyzeFrustrationImpact, generateProductAnalyticsMarkdown, } from './datadog-product-analytics.js';
132
134
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAkB,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AASrC,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACnD,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC5D,4CAA4C;IAC5C,cAAc,EAAE;QACd,MAAM,EAAE,iBAAiB,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;IACT,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACtD,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAQzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,cAAc,CAahF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,cAAc,CAU5E;AA0DD;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiJ1C;AAsFD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC/F,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnG,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC7G,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,KAAK,EACL,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxF,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,oCAAoC,EACpC,gCAAgC,EAChC,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
@@ -342,6 +342,7 @@ export { analyzeABTest, createPerformanceExperiment, generateABTestMarkdown, } f
342
342
  export { buildUserJourneys, calculateAttribution, analyzePerformanceInfluence, generateAttributionReport, generateAttributionMarkdown, } from './attribution.js';
343
343
  export { DEFAULT_THRESHOLDS, DEFAULT_ALERT_CONFIG, checkThresholds, detectRegressions, detectAnomalies, detectOpportunities, generateAlertReport, generateAlertMarkdown, } from './alerting.js';
344
344
  export { exportToJson, exportOpportunitiesToCsv, exportCurvesToCsv, exportToSlack, exportAlertsToSlack, exportToEmail, exportToWebhook, exportAlertWebhook, } from './export.js';
345
+ export { queryEnhancedSessions, queryFunnel, analyzeFunnelPerformanceImpact, queryCohortRetention, buildUserJourneyMap, analyzeFrustrationImpact, generateProductAnalyticsMarkdown, } from './datadog-product-analytics.js';
345
346
  // Run if executed directly
346
347
  if (import.meta.url === `file://${process.argv[1]}`) {
347
348
  main().catch(console.error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kanmi-perf-revenue",
3
- "version": "1.1.0",
4
- "description": "Empirical Performance Revenue Engine - Measure how Core Web Vitals impact conversions from your actual data",
3
+ "version": "1.2.0",
4
+ "description": "Revenue intelligence for web performance Native Datadog RUM integration or bring your own data via CSV/JSON",
5
5
  "main": "dist/empirical/index.js",
6
6
  "types": "dist/empirical/index.d.ts",
7
7
  "type": "module",