Skip to content

Commit

Permalink
Merge pull request react-ga#409 from luispuig/addTrackers
Browse files Browse the repository at this point in the history
Expose addTrackers
SimeonC authored May 21, 2020
2 parents a1f2ee0 + d69efad commit 2567200
Showing 4 changed files with 45 additions and 12 deletions.
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -122,6 +122,33 @@ ReactGA.initialize([{
If you are having additional troubles and setting `debug = true` shows as working please try using the [Chrome GA Debugger Extension](https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna).
This will help you figure out if your implementation is off or your GA Settings are not correct.

#### ReactGA.initialize(gaTrackingID, options)

GA must be initialized before using this function. The values are checked and sent through to the `ga('create', ...` call.

###### Example

```js
ReactGA.initialize('UA-000000-01', {
debug: true,
titleCase: false,
gaOptions: {
userId: 123
}
});

ReactGA.addTrackers([{
trackingId: 'UA-000000-01',
gaOptions: {
name: 'tracker1',
userId: 123
}
}, {
trackingId: 'UA-000000-02',
gaOptions: { name: 'tracker2' }
}], { debug: true, alwaysSendToDefaultTracker: false });
```

#### ReactGA.set(fieldsObject)

This will set the values of [custom dimensions](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#dimension) in Google Analytics.
27 changes: 15 additions & 12 deletions src/core.js
Original file line number Diff line number Diff line change
@@ -80,6 +80,20 @@ function _initialize(gaTrackingID, options) {
}
}

export function addTrackers(configsOrTrackingId) {
if (Array.isArray(configsOrTrackingId)) {
configsOrTrackingId.forEach((config) => {
if (typeof config !== 'object') {
warn('All configs must be an object');
return;
}
_initialize(config.trackingId, config);
});
} else {
_initialize(configsOrTrackingId, options);
}
return true;
}

export function initialize(configsOrTrackingId, options) {
if (options && options.testMode === true) {
@@ -95,18 +109,7 @@ export function initialize(configsOrTrackingId, options) {
_alwaysSendToDefaultTracker = (options && typeof options.alwaysSendToDefaultTracker === 'boolean') ?
options.alwaysSendToDefaultTracker : true;

if (Array.isArray(configsOrTrackingId)) {
configsOrTrackingId.forEach((config) => {
if (typeof config !== 'object') {
warn('All configs must be an object');
return;
}
_initialize(config.trackingId, config);
});
} else {
_initialize(configsOrTrackingId, options);
}
return true;
addTrackers(configsOrTrackingId);
}

/**
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ import UnboundOutboundLink from './components/OutboundLink';
import * as Defaults from './core';

export const initialize = Defaults.initialize;
export const addTrackers = Defaults.addTrackers;
export const ga = Defaults.ga;
export const set = Defaults.set;
export const send = Defaults.send;
2 changes: 2 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
@@ -110,6 +110,8 @@ export interface OutboundLinkProps {

export function initialize(trackingCode: string, options?: InitializeOptions): void;
export function initialize(trackers: Tracker[], options?: InitializeOptions): void;
export function addTrackers(trackingCode: string): void;
export function addTrackers(trackers: Tracker[]): void;
export function ga(): (...args: any[]) => void;
export function ga(...args: any[]): void;
export function resetCalls() : void;

0 comments on commit 2567200

Please sign in to comment.