Exodus analytics
A base class encapsulating analytics integration.
API Reference
Property name | Description |
---|
setAnonymousId | Use this to set a temporary id, mostly used to track onboarding events |
setUserId | Use this to set the permanent user id, i.e. the seed derived id fetched from analyticsUserIdAtom |
flush | Use this to send persisted events to segment. Events that are track ed before setPermanentUserId is set will need to be flushed |
getAnonymousId | Gets the anonymousId associated with the tracker. This is a UUID until setPermanentUserId is called with the userId |
track | Use this method to send events to segment. If setPermanentUserId has not been called, you must call track({ force: true }) . To throttle tracked events, use track({ sample }) with sample ranging from 0-1, e.g. track({ sample: 0.2 }) will pass through 20% of events |
setUserTraits | Used to set global "traits". Should be used sparingly -- on seed import or seed create for example. |
setDefaultEventProperties | Pretty much as it sounds. This sets persistent properties to be sent with every call to segment via track |
trackInstall | sets a persisted event that can be sent with flush postinstall |
Usage
import createStorage from '@exodus/storage-memory'
import analyticsDefinition from '@exodus/analytics/module'
import Tracker from '@exodus/segment-metrics'
const analytics = analyticsDefinition.factory({
storage: storage.namespace('analytics'),
shareActivityAtom,
tracker: new Tracker({ writeKey: segmentApiKey }),
config: {
installEventReportingUrl,
},
logger,
})
const anonymousId = '5c8d5e90-1ddb-4bdc-b428-a03ac2358c7f'
analytics.setAnonymousId(anonymousId)
analytics.requireDefaultEventProperties(['build', 'version'])
analytics.track({ event: 'PersistedEvent' })
analytics.track({ event: 'UrgentEvent', force: true })
analytics.track({ event: 'ThrottledEvent', sample: 0.3 })
const userId = await analyticsUserIdAtom.get()
analytics.setUserId(userId)
analytics.linkUserIds({ userId, annonymousId })
analytics.flush()
analytics.setDefaultEventProperties({ build: 'genesis', version: '1.0.0' })
analytics.track({ event: 'OtherEvent' })
Constructor Options
Property name | Required | Description |
---|
tracker | yes | A Tracker class instance. |
storage | yes | An object implementing the Storage interface (see below). Needed if you need to persist events (e.g. when a consumer application can be temporarily locked). |
shareActivityAtom | yes | An atom returning a boolean value indicating if a consumer application is ready to send events. |
config | no | Static configuration options |
config.installEventReportingUrl | no | Url to which to post app install events |
type SerializedEvent = 'string'
interface Storage {
set: (key: string, events: SerializedEvent[]) => Promise<undefined>
get: (key: string) => Promise<SerializedEvent[]>
}