The track method lets you send custom tracking events to all of your installed apps., [data], [settings], callback);
Parameter Required Description
event Yes This is the name of the event you'd like to track. This is a required parameter.
data No An object containing the custom data you would like to send with the tracking event. Data can be sent to all installed apps, or individual apps, for example mixpanel or heap. See examples below for more info.
settings No An object containing Stackpile specific options. Currently only supports timeout and only. Use the timeout setting to set the timeout duration before the callback function is called. If you only need to send an event to specific apps in your stack, use the only setting. For example: only: ['mixpanel', 'keenio']
callback No A function that is called after the set timeout. Can be used if you need to wait before continuing with a process on your page.


A few examples of how you can use track to send custom data to your installed apps:'Clicked Sign Up', {
    all: {
        type: 'button'
    mixpanel: {
        caption: 'Sign Up'

This will send type: "button" to all installed apps and caption: "Sign Up" to Mixpanel.'Page View', {}, {
        only: ['mixpanel']

This will send a Page View event only to Mixpanel.

You can use the following custom data properties to send custom data to selected apps:

Property App
all All installed apps
amplitude Amplitude
facebookpixel Facebook Pixel
googleanalytics Google Analytics
gosquared GoSquared
heap Heap
keenio Keen IO
kissmetrics Kissmetrics
logrocket LogRocket
mixpanel Mixpanel
optimizely Optimizely
webengage WebEngage
woopra Woopra

If you're using jQuery on your site, you can track a click event with the following code:

$('[data-event]').on('click', function() {
    if (window.stackpile) {$(this).data('event'));
<a href="/signup" data-event="Clicked Sign Up">Sign Up</a>

Adding the data-event attribute to any HTML element will then allow you to track a custom event for that action.


Because our scripts are loaded asynchronous, you could run into an issue when trying to track events as soon as the page loads if the API is not ready yet. The onReady event is a callback function that lets you know when the Stackpile Unified Analytics API is ready.

(_stackpile = window._stackpile || []).push(['onReady', onSPReady]);
function onSPReady() {
    // Code that will be fired as soon as 
    // the API is ready. For example:'Page View');

Google Analytics

When sending events to Google Analytics you can make use of the following special properties:

Name Description
category Category that this event should be grouped under. If not set we will use the last bit of the event name. For example Clicked Sign Up would set the category to Sign Up
action Action for this event. If not set we will use the first word of the event name. For example Clicked Sign Up would set the action to Clicked
label Label for this event. If not set we do not send any default for this property.
value Value for this event. If not set we do not send any default for this property.

An example event with custom Google Analytics properties set:'Created Widget', {
    googleanalytics: {
        category: 'Widget',
        action: 'New Widget Added',
        label: 'Source',
        value: 'Widget Popup'


Mixpanel has a few special properties that is used to link an event to a person. We automatically transform the email, created and name properties to the special properties if they are set.

Property Mixpanel Property
email $email
created $created
name $name