Reach out with questions, bugs, or suggestions. We'll respond ASAP. Your message is sent! We'll respond via email shortly.

Heap for Marketers

A marketing department has diverse needs. Growth marketers are focused on finding smart ways to increase leads, optimize for sales conversion, understand performance of segments, and generate demand. Digital marketers are concerned with attribution, understanding conversion across the site, traffic sources, and digital channel growth. Content marketers need to increase engagement with content, and understand how their content is being consumed, who their readers are, and how to improve adoption. So, how do these needs intersect and how can Heap help?

Fundamentally, Heap empowers your marketing team to access and analyze the data they need, without relying on a dev team to implement tracking code. Heap enables marketers to become smarter about the data that affects the entire funnel, and gives them the flexibility to answer questions as they come up.

In this guide we provide detailed instructions in understanding conversion flows, attribution, and segmentation in Heap, along with a few other useful tips. After reading this you should be able to:

  1. Create and analyze a funnel based on a number of properties
  2. Understand attribution channels
  3. Segment users based on behavior and user level properties
  4. Understand Heap's data model

With these skills you will be able to:

  1. Make changes to campaigns based on funnel drop off
  2. Target a certain profile of users
  3. Make decisions on how to increase/decrease advertising spend per channel
  4. Change copy based on user engagement

Using Heap to understand conversion

Understanding your conversion rate is the first step to understanding what marketing activities yield the highest ROI. Heap gives you the tools and flexibility to analyze different user flow funnels on the spot. We provide you with data that shows what referrers are more likely to lead to conversions, what UTM campaigns are successful, and what actions increase a lead's likelihood to convert. This information leads to actionable steps such as deciding what markets to target, what channels to market to, and what copy is successful.

How do I get started?

The first step in gathering actionable information from Heap is defining conversion. What is your team's goal (free trial sign up, becoming a paying member, company wide adoption, etc.)? Using the Event Visualizer, you can define the events that complete this flow. It is easy to define pageviews, clicks, form changes, and form submissions on web and capture your interactions with your iOS app all without code or waiting for data to trickle in. (Learn about adding context from your page to events here; no code needed!)

How do I measure Conversion Rates?

You can use Heap's Funnel tool to track the number of users who are converting. With Heap's retroactivity and flexibility, it is easy to add, remove, and substitute events to model the potential paths to conversion. Using the funnel, you can discover where customers drop off, and create ad hoc queries to test different sequences of events. With Heap, you can create new event definitions at any time, and when you go back to the funnel you will be able to add that event into your funnel with a full data set!

You can group this information into any user level property by using a group by statement. Out of the box, Heap captures many first touch properties that marketers are used to seeing in other tools as well, such as: initial referrer, initial UTM campaign/source/medium/term/content, initial search keyword, and initial device type to name a few.

For example, in the conversion flow: Header - Click Signup > Signup - Personal Information - Click Next > Signup - Submit Signup form, we have grouped by Initial Device Type. Below the conversion funnel, we can see the specific counts and percentage of users who have converted based on their device type - mobile or desktop.

In this example,the overall conversion rate, from start to finish, can be found at the top of the funnel. The percentage of users who complete each step can be found in the arrows or in the table beneath the funnel. You can save or email this report to coworkers using the buttons on the right.

How can I track a specific channel or campaign?

The ability to track conversion by funnel to increase investment in high performing channels and increase successful lead generation is essential to any marketer. Heap makes it easy to filter for a specific campaign, as well as compare it to others. It is important to note that you are grouping by a first touch property, and therefore looking at what originally drove a user to visit your site. In the following explanations the word campaign can be substituted for referrer, UTM source, etc.

To get an initial overview of your performance, group your funnel by Initial UTM campaign. You can include a filter for Initial UTM campaign is defined to filter out direct traffic and untagged links. Running this query will give you the conversion rates for each UTM campaign, allowing you to compare campaign effectiveness and overall conversion

In the example above, we are comparing the different initial UTM mediums. Here we can see that web is more effective at converting users than an adwords campaigns. If we did not set a filter for Initial UTM medium is defined, we could compare each medium to the overall conversion rate.

What are initial properties?

The Referrer or Initial Referrer in Heap will show the raw referrer information (the webpage that linked to your site and initiated the session), whereas other analytics tools sometimes aggregate information about the referrer. For example, Google will group the information based on the criteria here. This makes their reports sometimes appear a bit different than Heap's, and makes our vocabulary slightly different. Similarly, in Heap UTM parameters such as source are referring directly to the query parameters appended to the url via manual tagging. For more information about these properties take a look at our doc on understanding properties or our data model.

Advanced Attribution

Once you have a general sense of how your campaign affects conversion rates, Heap allows you to dive deeper. These instructions will use UTM campaign, but once again, that can be substituted for any user level property.

How can you determine if a specific channel or campaign was the last touch?

With Heap you can determine if a campaign, let's call it campaign x, was the last touch before conversion. This is more advanced, and requires a few event modifications.

Step 1: Look at the last step in your funnel in the Event Creator.

Step 2: Add in a filter setting the UTM campaign equal to 'the campaign'

Step 3: Save it as a new event.

Step 4: Open the funnel you have already created

Step 5: Add a group by statement for Has Done the title of your new event.

The data displayed groups users into two buckets - those who converted through different campaigns and those who converted with campaign x, allowing you to compare the efficacy of campaign x to the general conversion rate.

*Feel free to annotate this event to describe the difference between this event and the general event.

How can I compare a first touch property to a last touch property?

Users don't always convert in the same session, and it is useful to know if the first touch is the same as the last touch. It's also helpful to get a better understanding of your true funnel; what is assisted conversion and what is a more effective point of conversion. In this example, let's investigate to determine if the initial UTM campaign is the same as campaign x.

To analyze this, modify the event in your last step by adding a filter for campaign x in the Event Creator as explained above. Substitute the last step in your funnel for this new event, and group by initial UTM campaign. The results of this query will allow you to compare the percentage of users whose first touch was not generated by campaign x.

If many users have different first touch properties, but didn't convert until your most recent campaign, that shows that previous campaigns were successful at driving interest, but not as effective at converting. You can compare the campaigns' differences to get a better understanding of what made a campaign successful, allowing you to perfect your campaign strategy.

Looking at more than just conversion rates

How long does it take someone to convert?

You can find out how long it takes someone to convert using our retention analysis tool. Select session for the first event, and select the last event in your conversion flow for the second event (sign up, click free trial, etc.). Group by Date first seen, and select first time in the right hand corner of the retention table. The table displayed will show you the number of days, weeks, or months before a user converted depending on the granularity you choose. You can group by any user level (first touch) property to compare the effect of different campaigns on time to conversion.

You can also determine how long it takes someone to convert based on your campaign. Using the Event creator, create an event with type equal to pageview and Path equal to /. Add a filter for UTM campaign equals your campaign name. Using the retention view, select this new event as your first event, and the final event in your flow for the second event. Group by date of first event, and make sure first time is selected. Once again, the table displayed will show you the number of days, weeks, or months before a user converted depending on the granularity you choose.

You can switch between the two tables to see if your campaign shortened the amount of time between a visit and a conversion. If at any time you are unsure what a cell in the retention means you can hover over it. A modal will appear displaying the count of users and describing the meaning of the cell.

back to top

Understanding Attribution Channels in Heap

Understanding where users are coming from and how attribution affects conversion rates is crucial to a successful marketing strategy. It is essential in generating demand, quality lead growth, and ultimately pushing the right leads to sales. Heap automatically captures this data, but there are a few things you should know to get the most out of Heap.

How are Heap's attribution channels unique?

It is important to note that unlike GA or Kissmetrics we don't provide canned attribution channels; you have to define them yourselves. The Initial Referrer is the web page that linked to your site and initiated the session. If the user navigated directly to your site, or referral headers were stripped, then this value will appear as direct. You can use initial referrer to determine attribution channel (social media, paid search, organic search, etc.). Heap doesn't aggregate Source in the same way as GA - our UTM parameters are all based on query parameters appended to the URL via manual tagging. For more info on GA's attribution channels look here.

How can I differentiate between organic and paid searches?

If you haven't manually tagged your UTM source, the URL from an organic search is slightly different than the URL from a paid search. You can read more about paid search URLs here, but in general they result in URLs similar to the following:………

To only select these URLs you can create filters for a paid search by setting a filter for Initial Referrer contains or Initial Referrer contains or Initial Referrer wildcard matches google*/search.

How do I use UTM Parameters?

Best practice is to use UTM parameters to set the source, campaign, etc. for each link to your site. You can find instructions for manual tagging here. GA's required fields are not required for Heap to track UTM parameters, so if you just set a UTM source or campaign, etc. that's fine. Heap automatically captures UTM parameters for each session by pulling the UTM query parameters from from URL. Because you set the UTM source, you can also use UTM parameters to determine attribution channel. Here are some best practices surrounding setting UTM parameters.

What if I use AdWords?

It is important to note we don't capture AdWords autotagging. We can recognize the gclid parameters although we can't derive any meaning from it (google keeps that to themselves). However, It's not possible to decode the gclid parameter. Google sets this for their own use and doesn't share any information about it externally. The only way to track AdWords campaigns (besides recognizing the presence of the gclid parameter) outside of Google Analytics is to use manual tagging for landing pages using UTM parameters. Heap automatically parses UTM parameters and treats them separate from other query parameters.

back to top

Segmentation with Heap

What are Segments?

Segments are what Heap defines as a subset of users created by filtering behavior and user attributes such as location, account type, etc. Other tools might refer to Segments as cohorts.

Why Segments

Segmenting your users based on both demographic information and behavior allows you to target your messaging to increase conversion rates. Segments are especially helpful in targeting active vs. inactive users. In Heap there are multiple types of segments you can create that revolve around user level properties and user behavior. You can use multiple filters at the same time to create a segment based on user level properties and user behavior.

How can I define segments with user level properties?

You can easily define a segment based on any of the user level properties Heap collects automatically and the information you pass to Heap using the addUserProperties API. Some of the information we collect automatically includes geolocation, initial referrers, initial UTM parameters, and initial device type. The more information you pass to Heap, the more refined your segments can be. For example, if you want to analyze data from a subset of users who originally viewed your site on their phones, you would simply create a filter where initial device type equals mobile. You can then create any graph, funnel, or retention view for users in a particular segment using filters. Note that you can't use event level properties in a segment without modifying an event definition and creating a has done statement.

How can I define a segment based on user behavior?

You can also define a segment based on a user's actions using Has Done, Has Not Done, and Count of any defined event. For this segment, make sure you set the date range to at any time. If you want to generate a list of users who came in through a certain campaign, and had viewed a couple pages, but who had not converted, you can combine Has Done and Has Not Done filters to generate this list of users. You can use these segments as a filter for any graph, funnel, or retention analysis.

You can also create a segment to analyze users who have completed a set of actions in the prior day, week, or month. To create a time bounded segment you can create filters for Has Done or Count of in the prior day, week, or month. You can analyze the number of people who belong in the segment by analyzing the segment in the Graphs tool, or by looking at a list of members in this segment using the list view.

back to top

Understanding the data model

To understand how to best your analyze data, it is important to understand how we look at users, sessions, and events in Heap, and how their properties are connected. We have user level properties, sessions level properties, and event level properties which can get pretty confusing if you don't understand how the information is connected and organized.

What is the difference between user level and event level properties?

User level properties are attributes, like first touch properties, associated with a user. If we look at the data model, we can see that user level properties apply across the entire hierarchy. They carry through each session and each event. You can group your analysis by user level properties in any analysis view (graph, filter, or retention). This allows you to compare conversion rates based on plan type, region, and A/B experiment, to name a few. At the session level, we are capturing landing page, browser, referrer, etc. (read more here). These properties all trickle down and exist at the event level. Event level properties are attributes associated with events, such as last touch properties, target text, or context captured by snapshots. Because events are at the bottom of the hierarchy, these properties only apply to the specific events, and can only be used in the graph view and for defining specific events.

First touch properties vs. Last touch properties

Heap tracks all first touch properties as user level properties, unlike many other analytics tools that only store last touch. Using these first touch, or initial properties you can create segments, and group by or filter your graphs, funnels and retention tables. In addition to these first touch properties, Heap captures every touch and attaches the session level properties to each event.

What is the identify API?

Our identify and addUserProperties APIs are a way to pass all the information about a user that you have collected to Heap so it can be a part of your analysis. Most frequently, this includes information you want associated with a certain user such as email address, account type, A/B experiment variation, and last touch properties. We automatically capture several initial properties which you can find here.

Why should I implement identify and addUserProperties?

The identify API allows you to attach a unique identifier to a user, and the addUserProperties API allows you to attach user properties such as name, account type, company, etc., after they have provided that information to you in some way, such as signing up or logging in. When you implement addUserProperties, you can pass any useful information you have about the user including demographic information, plan type, company information, industry information etc. that will help you segment the data in your analysis. The more information you pass, the more you can narrow the definition for and understand a particular subset of users (called a Segment in Heap). This enables you to complete a richer analysis of your users' interactions with your product. For more about implementation, please check out the API documentation here and our implementation guide here.

Can I attach other attributes to anonymous users?

Even if a user hasn't logged in, your site or app might still have valuable information that you might want to attach to a user as a user level property. Heap attaches a unique identifier to anonymous users, so you can still attach this information as a user level property using the addUserproperties API. A great example of when to attach user level properties to anonymous users is A/B testing. We have great documentation here on using addUserProperties to attach A/B experiments to users.

What else might I do with Heap?

Heap has a lot of additional features which marketers might take advantage of in order to get the most out of their Heap account. Here are just a few examples:

Analyze a list of users who have viewed pricing, but have not signed up

Looking at pricing generally signals intent to purchase, so targeting these users might be a better use of your time and money. You can also target this list by exporting a CSV file (note: currently, this will only show the top 5000 users).

Group by Has Done in a filter

This will group your filter into two categories - people who have done the specified event and people who have not. You can add this to any funnel to see if completing an action (like viewing the pricing page) actually has an effect on conversion rates.

Create ad-hoc conversion funnels

Changing the event in front of the sign up event to see which user actions (viewing the blog, careers page, marketing material, case studies, etc.) affects conversion rates.

Finding inefficiencies in conversion flows

Find bottlenecks and areas of drop-off in the conversion funnel. This will allow you to enhance the UI, change the steps, or increase education around your funnel to improve conversion flow.

Extend A/B testing analysis

Use A/B testing to analyze event counts, conversion rates, and retention. Use a filter for a specific A/B experiment and group by user level properties in order to provide a more in depth cohort analysis.

Attribute Retention

Analyze how an experiment, viewing a case study, watching a video might affect retention. Create a retention report and group by user property/has done event to see how these factor into a user's likelihood of returning to your product.

back to top

Other Important Docs

Snapshots: Adding more context (such as copy) to events

Heap automatically captures the Target Text of buttons and links in our Visualizer. If you want to attach metadata from the page, use Heap's snapshots feature. Without code, you can use the Event Visualizer to capture copy, form field values, or any other information stored on the page and attach it as an event-level property. This is a great way to implement A/B testing based on copy.

Defining Events Guide

Use a guide to properly define events, and check previously set definitions. This is a great read for anyone new to the team or anyone who wants to ensure their accuracy!

Implementing identify: Use cases

If you or your dev team is implementing the identify or addUserProperties APIs, this is a great read on best practices and use cases. This includes a section on best practices with integrating Optimizely, that applies to all A/B testing.


Have any more cool use cases you'd like to share or use Heap to solve? Contact us here at or if you'd like to give Heap a test drive, start a free trial today or email us at