woocommerce/packages/js/tracks
Chi-Hsuan Huang e8dacef7a6
Track frequency of unhandled JS errors with MC Stats (#50155)
* Add bumpStat and fix tests

* Add changelog

* chore: Update dependencies and add @woocommerce/tracks for remote logging

* feat: Track frequency of unhandled JS errors with bumpStat

* chore: Update error boundary to log unhandled JS errors with bumpStat

* Add changelog

* Fix lint

* Check if tracks is enabled before bumping stats

* Fix test

* Fix lint

* chore: Refactor buildQuerystring to buildQueryParams for clarity and consistency

* Add bumpStat to wc tracks mock
2024-08-02 03:04:31 +00:00
..
changelog Track frequency of unhandled JS errors with MC Stats (#50155) 2024-08-02 03:04:31 +00:00
src Track frequency of unhandled JS errors with MC Stats (#50155) 2024-08-02 03:04:31 +00:00
typings Add `recordEvent` validation to Tracks package (#34005) 2022-09-01 13:34:42 -03:00
.eslintrc.js Add .eslintrc config to each packages 2022-03-29 16:08:07 +08:00
.npmrc Moved WCA Packages 2022-03-18 14:25:26 -07:00
CHANGELOG.md Prepare Packages for Release (#48405) 2024-06-11 15:29:16 -07:00
PREVIOUS_CHANGELOG.md Update JS packages changelogs (#33412) 2022-06-16 10:06:31 +12:00
README.md Track frequency of unhandled JS errors with MC Stats (#50155) 2024-08-02 03:04:31 +00:00
composer.json bump php version in packages/js/*/composer.json (#42020) 2024-01-04 10:18:34 -04:00
composer.lock Update changelogger to 3.3.0 to support PR number capturing with merge (#36266) 2023-01-05 14:42:51 +05:30
jest.config.json Track frequency of unhandled JS errors with MC Stats (#50155) 2024-08-02 03:04:31 +00:00
package.json Track frequency of unhandled JS errors with MC Stats (#50155) 2024-08-02 03:04:31 +00:00
tsconfig-cjs.json Enforce Strict `@types` Dependencies (#37351) 2023-03-23 18:02:20 -07:00
tsconfig.json Update tsconfigs to explicitly include files to avoid TS build errors (#47156) 2024-05-07 13:18:56 +12:00

README.md

Tracks

WooCommerce user event tracking utilities for Automattic based projects.

Installation

Install the module

pnpm install @woocommerce/tracks --save

Usage

The store must opt-in to allow tracking via the woocommerce_allow_tracking setting. If the store is not opted-in no events be recorded when using the following functions.

recordEvent( eventName, eventProperties )

Record a user event to Tracks.

import { recordEvent } from '@woocommerce/tracks';

recordEvent( 'page_view', { path } )
Param Type Description
eventName String The name of the event to record, don't include the wcadmin_ prefix
eventProperties Object Event properties to include in the event

queueRecordEvent( eventName, eventProperties )

Queue a tracks event.

This allows you to delay tracks events that would otherwise cause a race condition. For example, when we trigger wcadmin_tasklist_appearance_continue_setup we're simultaneously moving the user to a new page via window.location. This is an example of a race condition that should be avoided by enqueueing the event, and therefore running it on the next pageview.

Param Type Description
eventName String The name of the event to record, don't include the wcadmin_ prefix
eventProperties Object Event properties to include in the event

recordPageView( path, extraProperties )

Record a page view to Tracks.

Param Type Description
path String Path the page/path to record a page view for
extraProperties Object Extra event properties to include in the event

bumpStat( statName, statValue )

Bump a stat or group of stats.

import { bumpStat } from '@woocommerce/tracks';

// Bump a single stat
bumpStat( 'stat_name', 'stat_value' );

// Bump multiple stats
bumpStat( {
  stat1: 'value1',
  stat2: 'value2'
} );
Param Type Description
statName String or Object The name of the stat to bump, or an object of stat names and values
statValue String The value for the stat (only used when statName is a string)

Note: Stat names are automatically prefixed with x_woocommerce-. Stat tracking is disabled in development mode.

Debugging

When debugging is activated info for each recorded Tracks event is logged to the browser console.

To activate, open up your browser console and add this:

localStorage.setItem( 'debug', 'wc-admin:*' );