Skip to main content
Userpilot automatically detects and uses external analytics tools declared under:
window.userpilotSettings.integrations_interfaces
This object maps integration keys to their corresponding SDK instances or function references. Each key should point to the initialized SDK object, allowing Userpilot to track events through your existing analytics setup.

Example

window.userpilotSettings = {
  integrations_interfaces: {
    mixpanel: Mixpanel,
    amplitude: amplitudeInstance,
    kissmetrics: _kmq,
    heap: heap,
    ga: gtag, // or window.ga / window._gaq
    intercom: Intercom,
    gtm: window.dataLayer,
    segment: analytics
  }
};

Integration Keys

mixpanel

import mixpanel from 'mixpanel-browser';
mixpanel.init('YOUR_TOKEN');

Userpilot.initialize(APP_TOKEN, {
  integrations_interfaces: {
    mixpanel
  }
});

amplitude

import amplitude from 'amplitude-js';
amplitude.getInstance().init('YOUR_API_KEY');

Userpilot.initialize(APP_TOKEN, {
  integrations_interfaces: {
    amplitude: amplitude.getInstance()
  }
});

kissmetrics

window._kmq = window._kmq || [];
(function() {
  const _kmk = document.createElement('script');
  _kmk.async = true;
  _kmk.src = 'https://i.kissmetrics.io/i.js';
  const s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(_kmk, s);
})();

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    kissmetrics: _kmq
  }
};

heap

window.heap = window.heap || [];
heap.load('YOUR_APP_ID');

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    heap
  }
};

ga / gtag / _gaq

// For GA4
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    ga: gtag
  }
};

intercom

window.Intercom('boot', { app_id: 'YOUR_APP_ID' });

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    intercom: Intercom
  }
};

gtm

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ event: 'userpilot_loaded' });

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    gtm: window.dataLayer
  }
};

segment

!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics._writeKey="YOUR_WRITE_KEY";analytics.load("YOUR_WRITE_KEY");analytics.page();}}

window.userpilotSettings = {
  token: APP_TOKEN
  integrations_interfaces: {
    segment: analytics
  }
};