2023-06-06 07:20:34 +00:00
|
|
|
/**
|
|
|
|
* External dependencies
|
|
|
|
*/
|
|
|
|
import { getSetting } from '@woocommerce/settings';
|
|
|
|
import { recordEvent } from '@woocommerce/tracks';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Internal dependencies
|
|
|
|
*/
|
|
|
|
import {
|
|
|
|
CoreProfilerStateMachineContext,
|
|
|
|
UserProfileEvent,
|
|
|
|
BusinessInfoEvent,
|
2023-06-13 22:03:03 +00:00
|
|
|
PluginsLearnMoreLinkClicked,
|
2023-06-15 20:37:14 +00:00
|
|
|
PluginsInstallationCompletedWithErrorsEvent,
|
|
|
|
PluginsInstallationCompletedEvent,
|
2023-06-06 07:20:34 +00:00
|
|
|
} from '..';
|
|
|
|
import { POSSIBLY_DEFAULT_STORE_NAMES } from '../pages/BusinessInfo';
|
2023-06-15 20:37:14 +00:00
|
|
|
import {
|
|
|
|
InstalledPlugin,
|
|
|
|
PluginInstallError,
|
|
|
|
} from '../services/installAndActivatePlugins';
|
|
|
|
import { getPluginTrackKey, getTimeFrame } from '~/utils';
|
2023-06-06 07:20:34 +00:00
|
|
|
|
|
|
|
const recordTracksStepViewed = (
|
|
|
|
_context: unknown,
|
|
|
|
_event: unknown,
|
|
|
|
{ action }: { action: unknown }
|
|
|
|
) => {
|
|
|
|
const { step } = action as { step: string };
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_step_view', {
|
2023-06-06 07:20:34 +00:00
|
|
|
step,
|
|
|
|
wc_version: getSetting( 'wcVersion' ),
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
|
|
|
const recordTracksStepSkipped = (
|
|
|
|
_context: unknown,
|
|
|
|
_event: unknown,
|
|
|
|
{ action }: { action: unknown }
|
|
|
|
) => {
|
|
|
|
const { step } = action as { step: string };
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( `coreprofiler_${ step }_skip` );
|
2023-06-06 07:20:34 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
const recordTracksIntroCompleted = () => {
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_step_complete', {
|
|
|
|
step: 'intro_opt_in',
|
2023-06-06 07:20:34 +00:00
|
|
|
wc_version: getSetting( 'wcVersion' ),
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
|
|
|
const recordTracksUserProfileCompleted = (
|
|
|
|
_context: CoreProfilerStateMachineContext,
|
|
|
|
event: Extract< UserProfileEvent, { type: 'USER_PROFILE_COMPLETED' } >
|
|
|
|
) => {
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_step_complete', {
|
2023-06-06 07:20:34 +00:00
|
|
|
step: 'user_profile',
|
|
|
|
wc_version: getSetting( 'wcVersion' ),
|
|
|
|
} );
|
|
|
|
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_user_profile', {
|
2023-06-06 07:20:34 +00:00
|
|
|
business_choice: event.payload.userProfile.businessChoice,
|
|
|
|
selling_online_answer: event.payload.userProfile.sellingOnlineAnswer,
|
|
|
|
selling_platforms: event.payload.userProfile.sellingPlatforms
|
|
|
|
? event.payload.userProfile.sellingPlatforms.join()
|
|
|
|
: null,
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
|
|
|
const recordTracksSkipBusinessLocationCompleted = () => {
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_step_complete', {
|
2023-06-06 07:20:34 +00:00
|
|
|
step: 'skip_business_location',
|
|
|
|
wc_version: getSetting( 'wcVersion' ),
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
|
|
|
const recordTracksBusinessInfoCompleted = (
|
|
|
|
_context: CoreProfilerStateMachineContext,
|
|
|
|
event: Extract< BusinessInfoEvent, { type: 'BUSINESS_INFO_COMPLETED' } >
|
|
|
|
) => {
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_step_complete', {
|
2023-06-06 07:20:34 +00:00
|
|
|
step: 'business_info',
|
|
|
|
wc_version: getSetting( 'wcVersion' ),
|
|
|
|
} );
|
|
|
|
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( 'coreprofiler_business_info', {
|
2023-06-06 07:20:34 +00:00
|
|
|
business_name_filled:
|
|
|
|
POSSIBLY_DEFAULT_STORE_NAMES.findIndex(
|
|
|
|
( name ) => name === event.payload.storeName
|
|
|
|
) === -1,
|
|
|
|
industry: event.payload.industry,
|
|
|
|
store_location_previously_set:
|
|
|
|
_context.onboardingProfile.is_store_country_set || false,
|
|
|
|
geolocation_success: _context.geolocatedLocation !== undefined,
|
|
|
|
geolocation_overruled: event.payload.geolocationOverruled,
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
2023-06-13 22:03:03 +00:00
|
|
|
const recordTracksPluginsLearnMoreLinkClicked = (
|
|
|
|
_context: unknown,
|
|
|
|
_event: PluginsLearnMoreLinkClicked,
|
|
|
|
{ action }: { action: unknown }
|
|
|
|
) => {
|
|
|
|
const { step } = action as { step: string };
|
2023-06-15 20:37:14 +00:00
|
|
|
recordEvent( `coreprofiler_${ step }_learn_more_link_clicked`, {
|
2023-06-13 22:03:03 +00:00
|
|
|
plugin: _event.payload.plugin,
|
|
|
|
link: _event.payload.learnMoreLink,
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
2023-06-15 20:37:14 +00:00
|
|
|
const recordFailedPluginInstallations = (
|
|
|
|
_context: unknown,
|
|
|
|
_event: PluginsInstallationCompletedWithErrorsEvent
|
|
|
|
) => {
|
|
|
|
recordEvent( 'coreprofiler_store_extensions_installed_and_activated', {
|
|
|
|
success: false,
|
|
|
|
failed_extensions: _event.payload.errors.map(
|
|
|
|
( error: PluginInstallError ) => getPluginTrackKey( error.plugin )
|
|
|
|
),
|
|
|
|
} );
|
|
|
|
};
|
|
|
|
|
|
|
|
const recordSuccessfulPluginInstallation = (
|
|
|
|
_context: unknown,
|
|
|
|
_event: PluginsInstallationCompletedEvent
|
|
|
|
) => {
|
|
|
|
const installationCompletedResult =
|
|
|
|
_event.payload.installationCompletedResult;
|
|
|
|
|
|
|
|
const trackData: {
|
|
|
|
success: boolean;
|
|
|
|
installed_extensions: string[];
|
|
|
|
total_time: string;
|
|
|
|
[ key: string ]: number | boolean | string | string[];
|
|
|
|
} = {
|
|
|
|
success: true,
|
|
|
|
installed_extensions: installationCompletedResult.installedPlugins.map(
|
|
|
|
( installedPlugin: InstalledPlugin ) =>
|
|
|
|
getPluginTrackKey( installedPlugin.plugin )
|
|
|
|
),
|
|
|
|
total_time: getTimeFrame( installationCompletedResult.totalTime ),
|
|
|
|
};
|
|
|
|
|
|
|
|
for ( const installedPlugin of installationCompletedResult.installedPlugins ) {
|
|
|
|
trackData[
|
|
|
|
'install_time_' + getPluginTrackKey( installedPlugin.plugin )
|
|
|
|
] = getTimeFrame( installedPlugin.installTime );
|
|
|
|
}
|
|
|
|
|
|
|
|
recordEvent(
|
|
|
|
'coreprofiler_store_extensions_installed_and_activated',
|
|
|
|
trackData
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2023-06-06 07:20:34 +00:00
|
|
|
export default {
|
|
|
|
recordTracksStepViewed,
|
|
|
|
recordTracksStepSkipped,
|
|
|
|
recordTracksIntroCompleted,
|
|
|
|
recordTracksUserProfileCompleted,
|
|
|
|
recordTracksSkipBusinessLocationCompleted,
|
|
|
|
recordTracksBusinessInfoCompleted,
|
2023-06-13 22:03:03 +00:00
|
|
|
recordTracksPluginsLearnMoreLinkClicked,
|
2023-06-15 20:37:14 +00:00
|
|
|
recordFailedPluginInstallations,
|
|
|
|
recordSuccessfulPluginInstallation,
|
2023-06-06 07:20:34 +00:00
|
|
|
};
|