in src/web-ui/src/analytics/AnalyticsHandler.js [270:390]
productAddedToCart(user, cart, product, quantity, feature, experimentCorrelationId) {
if (user) {
AmplifyAnalytics.record({
name: 'ProductAdded',
attributes: {
userId: user.id,
cartId: cart.id,
productId: product.id,
name: product.name,
category: product.category,
image: product.image,
feature: feature,
experimentCorrelationId: experimentCorrelationId
},
metrics: {
quantity: quantity,
price: +product.price.toFixed(2)
}
})
AmplifyAnalytics.updateEndpoint({
userId: user.id,
userAttributes: {
HasShoppingCart: ['true']
},
metrics: {
ItemsInCart: cart.items.length
}
})
}
if (this.personalizeEventTrackerEnabled()) {
AmplifyAnalytics.record({
eventType: 'ProductAdded',
userId: user ? user.id : AmplifyStore.state.provisionalUserID,
properties: {
itemId: product.id,
discount: "No"
}
}, 'AmazonPersonalize')
AmplifyStore.commit('incrementSessionEventsRecorded');
}
let eventProperties = {
userId: user ? user.id : null,
cartId: cart.id,
productId: product.id,
name: product.name,
category: product.category,
image: product.image,
feature: feature,
experimentCorrelationId: experimentCorrelationId,
quantity: quantity,
price: +product.price.toFixed(2)
};
if (this.segmentEnabled()) {
window.analytics.track('ProductAdded', eventProperties);
}
if (this.mParticleEnabled()) {
let productName = product.name;
let productId = product.id;
let productPrice = product.price;
let productDetails = window.mParticle.eCommerce.createProduct(
productName,
productId,
parseFloat(productPrice),
quantity
);
let totalAmount = productPrice * quantity;
let transactionAttributes = {
Id: cart.id,
Revenue: totalAmount,
Tax: totalAmount * .10
};
let customAttributes = {
mpid: window.mParticle.Identity.getCurrentUser().getMPID(),
cartId: cart.id,
category: product.category,
image: product.image,
feature: feature,
experimentCorrelationId: experimentCorrelationId
};
// Send details of viewed product to mParticle
window.mParticle.eCommerce.logProductAction(window.mParticle.ProductActionType.AddToCart, productDetails, customAttributes, {}, transactionAttributes);
}
if (this.amplitudeEnabled()) {
Amplitude.getInstance().logEvent('ProductAdded', eventProperties);
}
if (user && this.optimizelyEnabled()) {
const optimizelyClientInstance = this.optimizelyClientInstance();
const expectedRevisionNumber = optimizelyClientInstance.configObj.revision;
if (this.isOptimizelyDatafileSynced(expectedRevisionNumber)) {
const userId = user.id.toString();
optimizelyClientInstance.track('ProductAdded', userId);
}
}
if (this.googleAnalyticsEnabled()) {
Vue.prototype.$gtag.event('add_to_cart', {
"currency": "USD",
"value": +product.price.toFixed(2),
"items": [
{
"item_id": product.id,
"item_name": product.name,
"item_category": product.category,
"quantity": quantity,
"currency": "USD",
"price": +product.price.toFixed(2)
}
]
});
}
},