Compare commits

...
2 Commits
Author SHA1 Message Date
Unchained 4a63098e3e chore(analytics): add logging to verify currency being sent
Add console.log to trackRevenue to verify what currency code
is being sent to OpenPanel for debugging USD display issue.
2026-03-25 20:36:40 +02:00
Unchained 2e6668ff0d fix(webhook): prevent duplicate revenue tracking
Move analytics tracking inside ORDER_CONFIRMED conditional block
so revenue is only tracked once when order is confirmed, not twice
(once for ORDER_CREATED and once for ORDER_CONFIRMED).
2026-03-25 20:35:39 +02:00
2 changed files with 20 additions and 18 deletions
+6 -5
View File
@@ -163,12 +163,9 @@ async function handleOrderConfirmed(order: Order, eventType: string) {
// Send customer email only for ORDER_CONFIRMED (not ORDER_CREATED)
if (eventType === "ORDER_CONFIRMED") {
await orderNotificationService.sendOrderConfirmation(order);
}
// Send admin notification for both events
await orderNotificationService.sendOrderConfirmationToAdmin(order);
// Track analytics (fire and forget - don't await)
// Track revenue and order analytics only on ORDER_CONFIRMED (not ORDER_CREATED)
// This prevents duplicate tracking when both events fire for the same order
analyticsService.trackOrderReceived({
orderId: order.id,
orderNumber: order.number,
@@ -187,6 +184,10 @@ async function handleOrderConfirmed(order: Order, eventType: string) {
});
}
// Send admin notification for both events
await orderNotificationService.sendOrderConfirmationToAdmin(order);
}
async function handleOrderFulfilled(order: Order) {
const { trackingNumber, trackingUrl } = getTrackingInfo(order);
+1
View File
@@ -53,6 +53,7 @@ class AnalyticsService {
async trackRevenue(data: RevenueData): Promise<void> {
try {
console.log(`Tracking revenue: ${data.amount} ${data.currency} for order ${data.orderNumber}`);
await op.revenue(data.amount, {
currency: data.currency,
order_id: data.orderId,