in src/web-ui/src/analytics/AnalyticsHandler.js [847:981]
orderCompleted(user, cart, order) {
if (user) {
AmplifyAnalytics.record({
name: 'OrderCompleted',
attributes: {
userId: user.id,
cartId: cart.id,
orderId: order.id.toString()
},
metrics: {
orderTotal: +order.total.toFixed(2)
}
})
}
for (var itemIdx in order.items) {
let orderItem = order.items[itemIdx]
if (user) {
AmplifyAnalytics.record({
name: '_monetization.purchase',
attributes: {
userId: user.id,
cartId: cart.id,
orderId: order.id.toString(),
_currency: 'USD',
_product_id: orderItem.product_id
},
metrics: {
_quantity: orderItem.quantity,
_item_price: +orderItem.price.toFixed(2)
}
})
}
if (this.personalizeEventTrackerEnabled()) {
AmplifyAnalytics.record({
eventType: 'OrderCompleted',
userId: user ? user.id : AmplifyStore.state.provisionalUserID,
properties: {
itemId: orderItem.product_id,
discount: "No"
}
}, 'AmazonPersonalize')
AmplifyStore.commit('incrementSessionEventsRecorded');
}
if (this.amplitudeEnabled()) {
// Amplitude revenue
let revenue = new Amplitude.Revenue()
.setProductId(orderItem.product_id.toString())
.setPrice(+orderItem.price.toFixed(2))
.setQuantity(orderItem.quantity);
Amplitude.getInstance().logRevenueV2(revenue);
}
}
if (user && user.id) {
AmplifyAnalytics.updateEndpoint({
userId: user.id,
userAttributes: {
HasShoppingCart: ['false'],
HasCompletedOrder: ['true']
},
metrics: {
ItemsInCart: 0
}
})
}
if (this.mParticleEnabled()) {
var orderList = [];
let totalAmount = 0;
for (var x = 0; x < cart.items.length; x++) {
var orderItem = cart.items[x];
var orderDetails = window.mParticle.eCommerce.createProduct(
orderItem.product_name,
orderItem.product_id,
parseFloat(orderItem.price),
parseInt(orderItem.quantity)
);
totalAmount = totalAmount + parseFloat(orderItem.price);
orderList.push(orderDetails);
}
let transactionAttributes = {
Id: cart.id,
Revenue: totalAmount,
Tax: totalAmount * .10
};
let customAttributes = {mpid: window.mParticle.Identity.getCurrentUser().getMPID()}
if (order.promo_code != null && order.promo_code != "")
customAttributes = { promo_code: order.promo_code };
window.mParticle.eCommerce.logProductAction(window.mParticle.ProductActionType.Purchase, orderList, customAttributes, {}, transactionAttributes);
}
let eventProperties = {
cartId: cart.id,
orderId: order.id,
orderTotal: +order.total.toFixed(2)
};
if (this.segmentEnabled()) {
window.analytics.track('OrderCompleted', eventProperties);
}
if (this.amplitudeEnabled()) {
Amplitude.getInstance().logEvent('OrderCompleted', eventProperties);
}
if (this.googleAnalyticsEnabled()) {
let gaItems = [];
for (var i in order.items) {
gaItems.push({
"item_id": order.items[i].product_id,
"item_name": order.items[i].product_name,
"quantity": order.items[i].quantity,
"index": gaItems.length + 1,
"currency": "USD",
"price": +order.items[i].price.toFixed(2)
});
}
Vue.prototype.$gtag.event('purchase', {
"transaction_id": order.id.toString(),
"value": +order.total.toFixed(2),
"currency": "USD",
"items": gaItems
});
}
},