productViewed()

in src/web-ui/src/analytics/AnalyticsHandler.js [581:669]


    productViewed(user, product, feature, experimentCorrelationId, discount) {
        if (user) {
            AmplifyAnalytics.record({
                name: 'ProductViewed',
                attributes: {
                    userId: user.id,
                    productId: product.id,
                    name: product.name,
                    category: product.category,
                    image: product.image,
                    feature: feature,
                    experimentCorrelationId: experimentCorrelationId
                },
                metrics: {
                    price: +product.price.toFixed(2)
                }
            })
        }

        if (this.personalizeEventTrackerEnabled()) {
            AmplifyAnalytics.record({
                eventType: 'ProductViewed',
                userId: user ? user.id : AmplifyStore.state.provisionalUserID,
                properties: {
                    itemId: product.id,
                    discount: discount?"Yes":"No"
                }
            }, 'AmazonPersonalize');
            AmplifyStore.commit('incrementSessionEventsRecorded');
        }

        if (experimentCorrelationId) {
            RecommendationsRepository.recordExperimentOutcome(experimentCorrelationId)
        }

        let eventProperties = {
            productId: product.id,
            name: product.name,
            category: product.category,
            image: product.image,
            feature: feature,
            experimentCorrelationId: experimentCorrelationId,
            price: +product.price.toFixed(2)
        };

        if (this.segmentEnabled()) {
            window.analytics.track('ProductViewed', eventProperties);
        }

        if (this.mParticleEnabled()) {
            let productDetails = window.mParticle.eCommerce.createProduct(
               product.name,
               product.id,
               parseFloat(product.price.toFixed(2)),
               1
           );
           window.mParticle.eCommerce.logProductAction(window.mParticle.ProductActionType.ViewDetail, productDetails,{mpid: window.mParticle.Identity.getCurrentUser().getMPID()},{},{});
        }

        if (this.amplitudeEnabled()) {
            Amplitude.getInstance().logEvent('ProductViewed', 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('ProductViewed', userId);
            }
        }

        if (this.googleAnalyticsEnabled()) {
            Vue.prototype.$gtag.event('view_item', {
                "currency": "USD",
                "value": +product.price.toFixed(2),
                "items": [
                  {
                    "item_id": product.id,
                    "item_name": product.name,
                    "item_category": product.category,
                    "quantity": 1,
                    "currency": "USD",
                    "price": +product.price.toFixed(2)
                  }
                ]
            });
        }
    },