Additional Integrations

Though we don't have direct integrations for the platforms listed below, we've successfully ingested data from them in the past using their APIs and documentation. For questions about platforms not listed below, reach out to [email protected].

Bluekai

BlueKai is a cloud-based big data platform that enables companies to personalize online, offline, and mobile marketing campaigns.

See the Oracle Help Center for information on how to bring data in from Bluekai.

Drift

Drift offers conversational marketing and sales tools known as Driftbots.

See Drift's developer documentation on tracking events for steps to send Drift events into Heap.

Drift makes a series of event listeners available, which they recommend using to send data to other tools. Those event listeners are as follows:

(function() {
  window.drift.on('welcomeMessage:open', function() {
    heap.track('Drift: Welcome Message opened');
  });
  window.drift.on('welcomeMessage:close', function() {
    heap.track('Drift: Welcome Message closed');
  });
  window.drift.on('awayMessage:open', function() {
    heap.track('Drift: Away Message opened');
  });
  window.drift.on('awayMessage:close', function() {
    heap.track('Drift: Away Message closed');
  });
  window.drift.on("campaign:open", function(data) {
    heap.track("Drift: Opened campaign");
  });
  window.drift.on("campaign:dismiss", function(data) {
    heap.track("Drift: Dismissed campaign");
  });
  window.drift.on("campaign:click", function(data) {
    heap.track("Drift: Clicked campaign");
  });
  window.drift.on("campaign:submit", function(data) {
    heap.strack("Drift: Submitted on campaign");
  });
  window.drift.on("sliderMessage:close", function(data) {
    heap.track("Drift: Closed slider", {
      "Bot Message": data.botMessage,
      "User Interacted with Conversation": data.userInteractedWithConversation
    });
  });
  window.drift.on("startConversation", function(data) {
    heap.track("Drift: Started new conversation", {
      "Conversation ID": data.conversationId,
      "Inbox ID": data.inboxId
    });
  });
  window.drift.on("message:sent", function(data) {
    heap.track("Drift: Replied to conversation", {
      "Conversation ID": data.conversationId,
      "Inbox ID": data.inboxId
    });
  });
  window.drift.on("message", function(data) {
    heap.track("Drift: Received message", {
      "Team Member Name": data.teamMember.name,
      "Conversation ID": data.conversationId,
      "Inbox ID": data.inboxId
    });
  });
  window.drift.on("emailCapture", function(e) {
    heap.track("Drift: Submitted email", {
      "Email": e.data.email
    });
    heap.addUserProperties({
      'Email': e.data.email
    });
  });
  window.drift.on("scheduling:requestMeeting", function(data) {
    heap.track("Drift: Requested meeting", {
      "Team Member Name": data.teamMember.name
    });
  });
  window.drift.on("scheduling:meetingBooked", function(data) {
    heap.track("Drift: Booked meeting", {
      "Team Member Name": data.teamMember.name
    });
  });
})();

Use this snippet to add data to a Pageview snapshot:

(function() { window.drift.on('welcomeMessage:open', function() { heap.track('Drift: Welcome Message opened'); }); window.drift.on('welcomeMessage:close', function() { heap.track('Drift: Welcome Message closed'); }); window.drift.on('awayMessage:open', function() { heap.track('Drift: Away Message opened'); }); window.drift.on('awayMessage:close', function() { heap.track('Drift: Away Message closed'); }); window.drift.on("campaign:open", function(data) { heap.track("Drift: Opened campaign"); }); window.drift.on("campaign:dismiss", function(data) { heap.track("Drift: Dismissed campaign"); }); window.drift.on("campaign:click", function(data) { heap.track("Drift: Clicked campaign"); }); window.drift.on("campaign:submit", function(data) { heap.strack("Drift: Submitted on campaign"); }); window.drift.on("sliderMessage:close", function(data) { heap.track("Drift: Closed slider", { "Bot Message": data.botMessage, "User Interacted with Conversation": data.userInteractedWithConversation }); }); window.drift.on("startConversation", function(data) { heap.track("Drift: Started new conversation", { "Conversation ID": data.conversationId, "Inbox ID": data.inboxId }); }); window.drift.on("message:sent", function(data) { heap.track("Drift: Replied to conversation", { "Conversation ID": data.conversationId, "Inbox ID": data.inboxId }); }); window.drift.on("message", function(data) { heap.track("Drift: Received message", { "Team Member Name": data.teamMember.name, "Conversation ID": data.conversationId, "Inbox ID": data.inboxId }); }); window.drift.on("emailCapture", function(e) { heap.track("Drift: Submitted email", { "Email": e.data.email }); heap.addUserProperties({ 'Email': e.data.email }); }); window.drift.on("scheduling:requestMeeting", function(data) { heap.track("Drift: Requested meeting", { "Team Member Name": data.teamMember.name }); }); window.drift.on("scheduling:meetingBooked", function(data) { heap.track("Drift: Booked meeting", { "Team Member Name": data.teamMember.name }); }); })();

Eloqua

Eloqua is a platform for managing marketing campaigns and sales lead generation.

See Oracle's documentation on exporting data from Eloqua as well as their activities export definitions.

When exporting data, make sure you have an identity value to use to tie in Eloqua data with the appropriate user.

Note that you might hit rate limits when using our Bulk Track API to bring the events into Heap. You should do nightly batches to bypass this issue.

Evergage

Evergage is a cloud-based platform that allows you to collect, analyze, and respond to user behavior on your website and web applications in real-time.

See Evergage's documentation on sending events server-side for information on how to send Evergage events into Heap. You can also use Webhooks with Evergage's API to route your Evergage data into Heap.

Kameleoon

Kameleoon is an AI-driven personalization and A/B testing platform for conversion-first digital product owners and marketers.

See Kameleoon's doc on setting up Heap for information on how to associate Heap with an A/B test in Kameleoon.

LaunchDarkly

LaunchDarkly offers feature management tools for development and operations teams.

See LaunchDarkly's implementation documentation for steps on how to send LaunchDarkly data into Heap.

To set this up, attach LaunchDarkly's user key and feature flags as user and event properties in Heap.

If you're using addEventProperties, be sure to double-check the length of the cookie—there is a max of 4kb for the props cookie and most servers have an 8kb cookie load limit. You can calculate the cookie size of passing all feature flags by in the browser console.

encodeURIComponent(JSON.stringify(ldclient.allFlags())).length

You can also add user flags as user properties.

// get LaunchDarkly user ID and send to Heap as user property

var ldUserId = ldclient.getUser().key
heap.addUserProperties({"ldUserId": ldUserId});

/ /get LaunchDarkly feature flags and attach as properties to all events

var ldProps = ldclient.allFlags();
heap.addEventProperties(ldProps);

Mandrill

Mandrill is a transactional email platform for Mailchimp users, which you can use to send data-driven, targeted emails.

See Mandrill's developer documentation on exporting activity history to send Mandrill data into Heap.

You will need to regularly retrieve your user's email addresses to access this data. We recommend setting up a nightly task to pull down your Mandrill activity, and then pipe that data through our Bulk Track API.

Monetate

Monetate is an experience optimization and 1-to-1 personalization platform which you can use to set up and run A/B and multivariate tests.

See our Monetate documentation for steps to capture all Monetate test variations and personalization campaigns as properties in Heap.

Qubit

Qubit is a personalization platform that enables eCommerce teams to match trading demands with customer affinities.

In Qubit, experiment data is exposed in a client-side object, qb_etc_data. The keys are as follows:

c — variation id
ckg — creative key group
cm — active variation id
cnt — active variation index (control or X)
e — experiment id
i — iteration id
p — actual probability of user to bucket
pc — probability to bucket
s — no idea
tc — matches experiment id, not sure of precise usage

You will need to use defined properties (similar to our Google Optimize integration) to sort out the experiment and variation IDs.

You can try this integration snippet by adding it directly to your codebase, or as a Snapshot, to achieve this. Note that it may miss the first pageview.

(function() {
  var props = {};
  var intervalCount = 0;
  var intervalId = setInterval(function() {
    if ((window.qb_etc_data) || (intervalCount < 100)) {
      var name, value;
      var exp = window.qb_etc_data;
      if ("undefined" !== typeof exp) {
        for (var i = 0; i < exp.length; i++) {
          name = "Qubit: " + exp[i].e;
          value = exp[i].cm;
          props[name] = value;
        }
        heap.clearEventProperties();
        heap.addEventProperties(props);

      }
      clearInterval(intervalId);
    } else {
      intervalCount++;
    }
  }, 100);
})();

Note that the mappings come from this bookmarklet.

WalkMe

WalkMe is a digital adoption platform that allows you to provide in-app information such as product tours, walkthroughs, tooltips, and manage customer engagement.

We can ingest data via callbacks referenced in WalkMe's documentation on types of events. For more information, see Walkme's doc on How to Use Webhooks With Heap.

Zendesk

Zendesk is a customer service, sales, and CRM platform that offers a support ticketing system and internal helpdesk.

See Zendesk's developer documentation on incremental ticket export and JSON formatting for tickets in Zendesk.

Updated 7 days ago

Additional Integrations


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.