diff --git a/src/progressive-profiling/ProgressiveProfiling.jsx b/src/progressive-profiling/ProgressiveProfiling.jsx index f9478b17..3d6f0e24 100644 --- a/src/progressive-profiling/ProgressiveProfiling.jsx +++ b/src/progressive-profiling/ProgressiveProfiling.jsx @@ -30,9 +30,9 @@ import { import { getAllPossibleQueryParams } from '../data/utils'; import FormFieldRenderer from '../field-renderer'; import { - activateRecommendationsExperiment, + activateRecommendationsExperiment, RECOMMENDATIONS_EXP_VARIATION, trackRecommendationViewedOptimizely, } from '../recommendations/optimizelyExperiment'; -import { trackRecommendationsViewed } from '../recommendations/track'; +import { trackRecommendationsGroup, trackRecommendationsViewed } from '../recommendations/track'; import { saveUserProfile } from './data/actions'; import { welcomePageSelector } from './data/selectors'; import messages from './messages'; @@ -79,7 +79,11 @@ const ProgressiveProfiling = (props) => { const queryParams = getAllPossibleQueryParams(registrationResponse.redirectUrl); if (enablePersonalizedRecommendations && !('enrollment_action' in queryParams)) { const userIdStr = authenticatedUser.userId.toString(); - const showRecommendations = activateRecommendationsExperiment(userIdStr); + const variation = activateRecommendationsExperiment(userIdStr); + const showRecommendations = variation === RECOMMENDATIONS_EXP_VARIATION; + + trackRecommendationsGroup(variation, authenticatedUser.userId); + trackRecommendationViewedOptimizely(authenticatedUser.userId); setShowRecommendationsPage(showRecommendations); if (!showRecommendations) { trackRecommendationsViewed([], true, authenticatedUser.userId); diff --git a/src/recommendations/optimizelyExperiment.js b/src/recommendations/optimizelyExperiment.js index a437ccb4..aec3b7a0 100644 --- a/src/recommendations/optimizelyExperiment.js +++ b/src/recommendations/optimizelyExperiment.js @@ -14,13 +14,7 @@ export const eventNames = { * @param {String} userId user id of authenticated user. * @return {boolean} true if the user is in variation else false */ -const activateRecommendationsExperiment = (userId) => { - const variation = optimizelyInstance.activate( - RECOMMENDATIONS_EXP_KEY, - userId, - ); - return variation === RECOMMENDATIONS_EXP_VARIATION; -}; +const activateRecommendationsExperiment = (userId) => optimizelyInstance.activate(RECOMMENDATIONS_EXP_KEY, userId); /** * Fire an optimizely track event for post registration recommended course card clicked. @@ -31,7 +25,18 @@ const trackRecommendationCardClickOptimizely = (userId, userAttributes = {}) => optimizelyInstance.track(eventNames.recommendedCourseClicked, userId, userAttributes); }; +/** + * Fire an optimizely track event for post registration recommendation viewed. + * @param {String} userId user id of authenticated user. + * @param {Object} userAttributes Dictionary of user attributes (optional). +*/ +const trackRecommendationViewedOptimizely = (userId, userAttributes = {}) => { + optimizelyInstance.track(eventNames.recommendationsViewed, userId, userAttributes); +}; + export { + RECOMMENDATIONS_EXP_VARIATION, activateRecommendationsExperiment, trackRecommendationCardClickOptimizely, + trackRecommendationViewedOptimizely, }; diff --git a/src/recommendations/track.js b/src/recommendations/track.js index 3bdcf5c1..eea6e0cf 100644 --- a/src/recommendations/track.js +++ b/src/recommendations/track.js @@ -4,6 +4,7 @@ export const LINK_TIMEOUT = 300; export const eventNames = { recommendedCourseClicked: 'edx.bi.user.recommended.course.click', + recommendationsGroup: 'edx.bi.user.recommendations.group', recommendationsViewed: 'edx.bi.user.recommendations.viewed', }; @@ -43,7 +44,18 @@ export const trackRecommendationsViewed = (recommendedCourseKeys, isControl, use ); }; +export const trackRecommendationsGroup = (variation, userId) => { + sendTrackEvent( + eventNames.recommendationsGroup, { + variation, + page: 'authn_recommendations', + user_id: userId, + }, + ); +}; + export default { trackRecommendationsClicked, + trackRecommendationsGroup, trackRecommendationsViewed, };