@userflux/browser-js
Version:
UserFlux's JavaScript SDK - send your frontend analytics data to the UserFlux platform
202 lines (157 loc) • 8.15 kB
Markdown
# @userflux/browser-js
UserFlux's Browser JavaScript SDK - send your frontend analytics data to the UserFlux platform.
# Getting Started
## 1. Install the package
```bash
npm i @userflux/browser-js
```
## 2. Initialise the SDK
```javascript
import UserFlux from '@userflux/browser-js'
UserFlux.initialize('<YOUR_WRITE_KEY>', {
autoCapture: ['page_views', 'page_leaves', 'clicks'],
allowCookies: true,
autoEnrich: true,
defaultTrackingProperties: { ... },
trackSession: true
})
```
The `initialize` method takes two arguments:
- `writeKey` - Your UserFlux write key. You can find this in the UserFlux dashboard under `Management > Account Settings > Developers > Write Key`
- `options` - An object containing the following optional properties:
- `autoCapture` - An array of strings used to define which events to automatically capture. Defaults to none. The following events are available:
- `page_views` - Capture page views
- `page_leaves` - Capture page leaves
- `clicks` - Capture clicks
- `all` - Capture all of the above events
- `allowCookies` - A boolean indicating whether or not to allow cookies. Defaults to `true`
- `cookieSameSiteSetting` - A string indicating what cookie same site setting to use. Defaults to `Strict`. Options available are: `Strict`, `Lax`
- `cookieExpiryDays` - A number indicating how many days a cookie should last. Defaults to `365`
- `autoEnrich` - A boolean indicating whether or not to automatically enrich events with location and device properties. Defaults to `true`
- `defaultTrackingProperties` - An object containing any default properties to be sent with every event. Defaults to an empty object
- `trackSession` - A boolean indicating whether or not to track sessions with an unique identifier. Defaults to `true`
- `customQueryParamsToCollect` - An array of strings used to define which custom query parameters to auto collect and include in event properties. Defaults to none.
- `disableUserIdStorage` - A boolean indicating whether or not to store the provided user id in storage. Defaults to `false`
- `blockCommonBots` - A boolean indicating whether or not to block common bots from being tracked. Defaults to `true`
## 3. Tracking events
```javascript
await UserFlux.track({
event: 'event_name',
properties: { ... },
userId: '<USER_ID>',
enrichDeviceData: true,
enrichLocationData: true,
enrichPageProperties: true,
enrichReferrerProperties: true,
enrichUTMProperties: true,
enrichPaidAdProperties: true,
addToQueue: true
})
```
The `track` method takes a single argument:
- `parameters` - An object containing the following properties:
- `event` - (required) A string representing the name of the event
- `properties` - (optional) An object containing any properties to be sent with the event. Defaults to an empty object. Any `defaultTrackingProperties` provided in the global options will be merged with these properties
- `userId` - (optional) A string representing the user ID of the user you're identifying with attributes
- `externalId` - (optional) A string representing the external ID of the user you're identifying with attributes
- `enrichDeviceData` - (optional) A boolean indicating whether or not to enrich the event with device data. Defaults to the value of `autoEnrich` in the global options
- `enrichLocationData` - (optional) A boolean indicating whether or not to enrich the event with location data. Defaults to the value of `autoEnrich` in the global options
- `enrichPageProperties` - (optional) A boolean indicating whether or not to enrich the event with page properties. Defaults to `true`
- `enrichReferrerProperties` - (optional) A boolean indicating whether or not to enrich the event with referrer properties. Defaults to `true`
- `enrichUTMProperties` - (optional) A boolean indicating whether or not to enrich the event with UTM properties. Defaults to `true`
- `enrichPaidAdProperties` - (optional) A boolean indicating whether or not to enrich the event with paid advertisement properties (such as google and facebook ads). Defaults to `true`
- `addToQueue` - (optional) A boolean indicating whether or not to add the event to the queue. Defaults to `false`. If `false`, the event will be sent immediately
## 4. Identifying users
```javascript
await UserFlux.identify({
properties: { ... },
userId: '<USER_ID>',
enrichDeviceData: true,
enrichLocationData: true
})
```
The `identify` method takes a single argument:
- `parameters` - An object containing the following properties:
- `properties` - (required) An object containing any attributes to be associated with the users profile
- `userId` - (optional) A string representing the user ID of the user you're identifying with attributes
- `externalId` - (optional) A string representing the external ID of the user you're identifying with attributes
- `enrichDeviceData` - (optional) A boolean indicating whether or not to enrich the event with device data. Defaults to the value of `autoEnrich` in the global options
- `enrichLocationData` - (optional) A boolean indicating whether or not to enrich the event with location data. Defaults to the value of `autoEnrich` in the global options
# Other Methods Available
## trackBatch
```javascript
await UserFlux.trackBatch([
{
event: 'event_name',
properties: { ... },
userId: '<USER_ID>',
enrichDeviceData: true,
enrichLocationData: true,
enrichPageProperties: true,
enrichReferrerProperties: true,
enrichUTMProperties: true,
enrichPaidAdProperties: true
},
{
event: 'event_name',
properties: { ... },
userId: '<USER_ID>',
enrichDeviceData: true,
enrichLocationData: true,
enrichPageProperties: true,
enrichReferrerProperties: true,
enrichUTMProperties: true,
enrichPaidAdProperties: true
}
])
```
The `trackBatch` method takes a single argument:
- `events` - An array of objects. See the `track` method for details of the properties available for each object.
## updateDefaultTrackingProperties
```javascript
UserFlux.updateDefaultTrackingProperties({ ... })
```
If at any time you wish to update the default tracking properties, you can do so by calling the `updateDefaultTrackingProperties` method.
The `updateDefaultTrackingProperties` method takes one argument:
- `defaultTrackingProperties` - An object containing any default properties to be sent with every event.
## reset
```javascript
await UserFlux.reset()
```
If at any time you wish to reset the SDK, you can do so by calling the `reset` method. This will flush any events, clear any cookies / local storage, and reset the SDK to its initial state.
## flush
```javascript
await UserFlux.flush()
```
This will flush any pending events and send them to the UserFlux platform.
## trackPageView
```javascript
await UserFlux.trackPageView()
```
If you have disabled `autoCapture` in the global options, you can manually capture page views by calling the `trackPageView` method.
## getUserId
```javascript
UserFlux.getUserId()
```
If you have provided a `userId` in the `identify` or `track` methods, you can retrieve this by calling the `getUserId` method.
## getAnonymousId
```javascript
UserFlux.getAnonymousId()
```
You can retrieve the anonymous id by calling the `getAnonymousId` method. This is the id that will be used if no `userId` is provided in the `identify` or `track` methods.
# Alternative Installation
If you do not want to use the NPM package manger, simply drop the following into your HTML
```html
<head>
...
<script type="module" async>
import UserFlux from 'https://cdn.skypack.dev/@userflux/browser-js'
UserFlux.initialize('<YOUR_WRITE_KEY>', {
autoCapture: ['all'],
allowCookies: true,
autoEnrich: true,
defaultTrackingProperties: { ... }
})
</script>
</head>
```