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:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user