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).
This commit is contained in:
Unchained
2026-03-25 20:35:39 +02:00
parent eb9a798d40
commit 2e6668ff0d

View File

@@ -163,12 +163,9 @@ async function handleOrderConfirmed(order: Order, eventType: string) {
// Send customer email only for ORDER_CONFIRMED (not ORDER_CREATED) // Send customer email only for ORDER_CONFIRMED (not ORDER_CREATED)
if (eventType === "ORDER_CONFIRMED") { if (eventType === "ORDER_CONFIRMED") {
await orderNotificationService.sendOrderConfirmation(order); await orderNotificationService.sendOrderConfirmation(order);
}
// Send admin notification for both events // Track revenue and order analytics only on ORDER_CONFIRMED (not ORDER_CREATED)
await orderNotificationService.sendOrderConfirmationToAdmin(order); // This prevents duplicate tracking when both events fire for the same order
// Track analytics (fire and forget - don't await)
analyticsService.trackOrderReceived({ analyticsService.trackOrderReceived({
orderId: order.id, orderId: order.id,
orderNumber: order.number, orderNumber: order.number,
@@ -185,6 +182,10 @@ async function handleOrderConfirmed(order: Order, eventType: string) {
orderId: order.id, orderId: order.id,
orderNumber: order.number, orderNumber: order.number,
}); });
}
// Send admin notification for both events
await orderNotificationService.sendOrderConfirmationToAdmin(order);
} }
async function handleOrderFulfilled(order: Order) { async function handleOrderFulfilled(order: Order) {