Javascript - Advanced Settings

Callbacks

Indicative also allows callbacks, which will be fired after a successful or unsuccessful stat post. You can include a callback function in any of the buildEvent methods, like so:

var callbackFn = function () {
        console.info("callback!");
};

Indicative.buildEvent('event-name', callbackFn);
Indicative.buildEvent('event-name', 'unique-user-id', callbackFn);
Indicative.buildEvent('event-name', 'unique-user-id', {propertyName: 'propertyValue'}, callbackFn);
Indicative.buildEvent('event-name', {propertyName: 'propertyValue'}, callbackFn);

With so many different ways to build an event, you’ll have a lot of flexibility to build and send any custom events you need. For further references, refer to the Indicative object API table below.

 

Stateful Variables

We allow you to set stateful variables across every page. Stateful variables are stored as a persistent cookie, so every page will be able to share the same common properties and a uniqueID for the user triggering events on your site. Anywhere in your JavaScript, after Indicative was initialized, call:

Indicative.setUniqueID("unique-user-id");

This will allow you to log events without having to refer to a unique ID every time you build an event. Indicative also allows for stateful properties, as well, which can be added with the following calls:

Indicative.addProperty('propertyName', 'propertyValue');
Indicative.addProperties({propertyName: 'propertyValue', propertyName2: 'propertyValue2'});
Indicative.addProperties([{propertyName: 'propertyValue'}, {propertyName2: 'propertyValue2'}]);

These properties will be appended to subsequent event calls. They will not override the properties passed into a buildEvent call, rather append to the list of properties. If a common property isn’t applicable anymore, call:

Indicative.removeProperty('propertyName');

This will remove a single property. It’s just as easy to clear the entire common properties list:

Indicative.clearProperty();

 

How to Track Links

Tracking href link clicks can be challenging, because once the page changes we lose our chance to fire an event. To solve this problem, we’ve added a callback to our build object. Use the following function to track link clicks and then send the user to the linked page:

function linkClick (event, linkName) {
        var url = event.target.getAttribute('href');
        console.info(event);
        event.preventDefault();

        Indicative.buildEvent("Link Click", {Link_Name: linkName}, function () {
            console.info("go to site");
            if (url) {
                window.location = url;
            }
        });
}

To call this function in your HTML, set up a link like so: 

<a onclick="linkClick(event, 'home')" href="home.html">Home</a>
 

How to Track Web Sessions

We’ve implemented Web Sessions in our JavaScript SDK track users’ web sessions with just a slight change to one line of your code. If a user has no activity for 30 minutes (no events are fired locally), upon any new event activity, the JavaScript SDK will also fire a “Web Session” event to indicate the start of a new Web Session.

Note: The window of inactivity is customizable, but defaults to 30 minutes, with industry standards.
 

How to Integrate

Where you see the line in this snippet:

Indicative.initialize(apiKey);

Alter it to read:

Indicative.initialize(apiKey, {recordSessions: true});

If you want to alter the inactive session length, change the line to be this instead:

Indicative.initialize(apiKey, {recordSessions: true, sessionsThreshold: 5});

where 5 signifies 5 minutes.

 

Automatic Tracking

We automatically track the following properties:

  • browser: browser
  • operating system: browser_os
  • device: browser_device
  • referrer: browser_referrer
  • language: browser_language
  • page title: page_title
  • url: page_url

We also automatically track marketing channels provided by UTM search parameters. You’ll be able to see the following properties if you have users loading your page with UTM properties in the URL: campaign_source,campaign_mediumcampaign_termcampaign_content, and campaign_name. We will also provide these channel properties in their own section of the data panel, titled as Channels.

How to Track Users Across Subdomains

We support tracking user sessions across various subdomains through the use of our SDK. If the option 'cookiesOnMainDomain' is set to true, it will store the cookie on the root domain.

Where you see this line in the snippet: 

Indicative.initialize(apiKey);

Alter it to read: 

Indicative.initialize(apiKey, {recordSessions: true, sessionsThreshold: 30, cookiesOnMainDomain: true });

Whenever the cookiesOnMainDomain option is set to true, it is recommended that you include the base domain name. If it is not set, our SDK will attempt to figure it out by taking the last two tokens of the domain name, and in some cases it may be invalid values (e.g. .com.mx).

To explicitly add the domain name, add the domainName to the initialization parameters. 

Indicative.initialize(apiKey, {recordSessions: true, sessionsThreshold: 30, cookiesOnMainDomain: true, domainName: ‘example.com.mx’ })
Warning: Changing or enabling this option may break existing cookie tracking.
 

Aliasing

Indicative supports aliasing between anonymous IDs and user IDs to allow customers to unify event streams submitted with separate unique keys. Click here for a full walkthrough of Indicative's aliasing protocol.

0 users found this helpful