HockeyStack
HomeLive DemoBook a DemoLogin
  • Getting Started
    • 👋Welcome to the Docs!
    • Product Onboarding
    • HockeyStack Implementation Scope: Reporting Product
      • HockeyStack Implementation Scope: Data Warehouse Connection
  • Release Notes
    • May 16, 2025
    • May 5, 2025
    • April 21, 2025
    • April 14, 2025
    • April 7, 2025
    • March 31, 2025
    • March 24, 2025
    • March 14, 2025
    • March 6, 2025
    • February 28, 2025
    • February 17, 2025
  • Guides
    • ❓FAQ
      • Merging in HockeyStack
      • Why has my data changed?
      • Viewing form submissions by page
      • A touchpoint's influence on conversion rates
      • Average number of touchpoints
      • Self-reported attribution
      • Trend of Engagement Score
      • How do I see which individuals / companies are included in a metric?
      • What touchpoints get credit in attribution?
      • What object/integration is this field pulling from?
      • What is "Source"?
      • What is "UTM Source"?
      • What is "UTM Medium"?
      • What is an Action?
      • How can I add Salesforce Task object into Defined Properties?
      • How can I track offline events in HubSpot?
      • How can I use LinkedIn Impressions and Engagements in my reports?
      • Measuring sales and marketing penetration in an account list
      • Measuring number of engaged contacts per company
      • Offline conversions for ad platforms
      • Tracking progression on targets
      • Building a Campaign / Asset Grouping property
      • Percentage of high quality job titles by Channel
      • Measuring conversion rates
      • Building a goal that shows open opportunities
      • Number report: Funnel stages influenced by different types of marketing touchpoints
      • Best Practices for Lifecycle Tracking in Salesforce / HubSpot
      • Adding HubSpot form fills to defined properties
      • Does HockeyStack website pixel track US States?
      • Measuring Time Between Two Goals in HockeyStack
      • What is the HubSpot "email bounces" action?
      • Hiding Fields from your CRM in HockeyStack
      • How long does it take for a relation mapping to be ready to use?
      • Can I integrate multiple LinkedIn ads accounts?
      • Can I use Zapier for integrations with HockeyStack?
      • I created a new field in Salesforce (SFDC), but I don’t see it in HockeyStack. What should I do?
      • Using two similar fields in one breakdown
      • Why can't I map back to property?
      • GA4 vs. HockeyStack Website Data Tracking
      • How does HockeyStack deduplicate accounts?
      • How do Table Totals Work: Campaign vs Campaign Group?
      • Can I create one field that calculates the total ad spend + SFDC campaign spend?
      • HubSpot: Can I filter a goal on X object by Y object fields?
      • LinkedIn Impressions: Different Ways of Measuring
      • How to define Engaged Accounts and Engaged People?
      • Building a Campaign Grouping property
    • 🖥️Dashboard Building Guides
      • Business Overview Dashboard
      • CMO Dashboard
      • Website Analytics Dashboard
      • Paid Ads Dashboard
      • Google Ads Dashboard
      • LinkedIn Ads Dashboard
      • In-Person Events
      • ABM Live-Demo
      • Content/Organic Dashboard
      • Dashboards from Labs Reports
        • LinkedIn Ads Benchmarks
        • Google Ads Benchmarks
        • Q1 2024 Recap
        • G2 Impact 2024 Report
        • Website Benchmarks
  • Documentation
    • What Will My Data Look Like?
    • 🎯Goals
      • Funnel Stages Goals
      • Form Fill Goals
      • Page View Goals
      • Click Goals
      • Finding Out a Button's CSS Selector
      • Goals on the Task Object
      • Building an All Touchpoints (Channel) Goal
    • 🔦Touchpoint Hierarchy
    • Defined Properties
    • Track Date Properties
    • 📊Reports
      • Building a Basic Report
      • Journeys Use Cases
      • Sequences
      • Lift Reports
      • Lift Analysis vs. Multi-Touch Attribution
      • Types of report filters and when to use them
      • Attribution Models
      • Attribution Lookback
      • Defining Custom Attribution Weights
      • Importing a Google Sheet to use as a Goal Column
      • Advanced Attribution Models
    • 🖥️Dashboards
    • Dashboard Filters
      • When to use AND vs. OR logic?
      • Using Regex
    • 🌠Journeys
      • Syncing journeys to CRM and Slack
    • 🥇Golden Paths
    • Funnels
    • Attribution Funnel
    • 👥Segments
    • ⚙️Settings
      • Account Reset Guide
      • Auto-tagging of URLs
      • Data Categorization in HockeyStack
      • Team Sharing
      • Tracking Multiple Domains
      • Excluding Users
      • Reporting Configuration
      • Multi-Factor Authentication
    • Advanced Data Connections
      • Account List Import
      • Property Relation Mappings
      • Sync Spend
      • Syncing spend from offline channels and campaigns
    • 🔃Audience Syncs
    • Send View updates to Webhooks
    • Odin AI
      • Odin capabilities
      • HockeyStack AI: Security, Privacy, and Responsible Use
  • DataSyncs
    • Connecting your Warehouse
      • Authenticate Snowflake
      • Authenticate Google Sheets
      • Authenticate BigQuery
      • Authenticate S3
        • Use an S3 User
        • Use an IAM Role
    • Configure a DataSync Import
    • Configure a DataSync Export
      • Data Export Schema
        • Raw Actions Export Schema
  • Integrations
    • Website Tracker
      • Google Tag Manager
      • WordPress
      • React
      • Troubleshooting
      • Reverting to Cookie-Based Tracking
      • Identifying Users
      • Tracking Custom Goals
    • Ad Platforms
      • LinkedIn Ads
      • Bing Ads
      • Capterra Ads
      • Google Ads
      • Facebook Ads
      • Tiktok Ads
      • Twitter Ads
      • StackAdapt Ads
      • Reddit Ads
      • AdRoll Ads
    • Data Warehouses
      • Snowflake
      • Amazon Redshift
      • Google Bigquery
      • Amazon S3
      • Azure Databricks
    • CRMs
      • Salesforce
        • Properties Pulled from Salesforce
        • Salesforce Pulled Objects List
        • Sending Data to Salesforce
        • Salesforce Currency
      • HubSpot
        • HubSpot Pulled Objects List
    • SSO
      • Azure AD
      • Google Workspace
      • Okta
    • ABM
      • Qualified
      • 6sense
      • Demandbase
      • Clearbit
      • Rollworks
      • G2 Intent
      • Stackadapt
    • Marketing Automation
      • Marketo
        • How to Find Your Marketo Account Details
        • Marketo Pulled Objects List
      • Pardot
      • HubSpot
        • HubSpot Pulled Objects List
    • Other Integrations
      • Calendly
      • Drift
      • Okta
      • Segment
      • Customer.io
  • Setting up your Data for import
    • Import Custom Actions
    • Import Website Actions
    • Import Properties
    • Import Metadata
  • Technical Details
    • ↖️Website Tracking
      • How Website Tracking Works
      • Cookieless Tracking
      • Bot Traffic
      • Privacy Policy
      • GDPR Compliance
    • ⚙️Data Processing from Integrations
    • 🧮Data Cleaning
  • Account Intelligence
    • ☕Getting Started
      • HockeyStack Implementation Scope: Account Intelligence Product
      • Salesforce
        • Salesforce Permissions
        • Salesforce iFrame Installation
        • Salesforce Sync Fields
      • Enable Sales Reps in HubSpot/Salesforce
    • 🏗️Workflows
      • Creating a Workflow
      • List of Workflows
      • Starter Workflow
      • Recurring Workflow Runs
      • Nodes
        • Transformations
          • Condition
          • AI for Accounts
          • Contact Discovery
          • Contact Enrichment
          • Branching
        • Destinations
          • Salesforce
          • HubSpot
          • Outreach
          • StackAdapt
          • Salesloft
          • LinkedIn
          • Pardot
    • 👀Views
      • Create a New View
    • 🔢Scoring
      • Data
Powered by GitBook
On this page
  • 1. The model itself
  • 2. The weighting and exclusion/inclusion of touchpoints
  • Including / Excluding touchpoints
  • Weighting Touchpoints
  • 3. The weighting and exclusion/inclusion of entities that perform touchpoints
  • Inclusion/Exclusion
  • Weighting
  1. Documentation
  2. Reports

Advanced Attribution Models

PreviousImporting a Google Sheet to use as a Goal ColumnNextDashboards

Last updated 5 months ago

HockeyStack features out-of-the box attribution models that you can learn more about here:

Sometimes, companies using HockeyStack want to customize their attribution models a step further to get the insights they need. The following is a list of customizations you can either make on our frontend, or our support team can help you implement.

1. The model itself

When creating reports, you can select one or many of the following models:

  • First Touch

  • Last Touch

  • Linear

  • Position-Based

  • Time Decay

Read more about their inner workings of each model here:

2. The weighting and exclusion/inclusion of touchpoints

Including / Excluding touchpoints

In HockeyStack, touchpoints included in attribution are controlled by the Property you select to attribute by within your reports.

You can create Defined Properties that include/exclude touchpoints from attribution, so that you can breakdown by the Defined Property and only give credit to the specific touchpoints you need.

Weighting Touchpoints

Attribution models inherently have weights within them. For example, Position-Based inherently gives 40% of credit to first touch, 40% to last touch, and distributes the remaining 20% amongst middle touches. But sometimes you want to add weights in addition to this inherent weighting.

Custom weighting would be based on a 0-1 weight given to each type of touchpoint. By default, each touchpoint has a custom weight of 1.

You can use the "Custom Attribution Weights" option under "Advanced Options" of your defined property definitions to add these weights.

Note that weighting stacks on top of each other. Using Position Based + A custom weight would stack the position based weight times the custom weight. Similarly, if you breakdown a report by two properties that both have custom attribution weights, both properties' weights would be multiplied.

Therefore it is mostly suggested to use the Linear model, and only add weights to your Channel property.

Below are the most common methods used for deciding on custom weights by touchpoint. You can use one or a combination.

If you add new types of touchpoints to your touchpoint definition, you should recalculate weights.

Method 1: Weighting by frequency

Some touchpoints are inherently more frequent than others. For example, an Event touchpoint is inherently less frequent than an ad impression. So you might want to have each touchpoint be weighted by the inverse of its relative frequency.

That... might not be super intuitive. Let's unpack:

If the average number of ad impressions per company is 10, average number of event touchpoints is 1, and average number of organic search visits is 2:

  • Ad impressions are 5x as frequent compared to organic search. Therefore it should be weighted down by 5x. The relative weight of ad impressions against organic search should be 1 / 5 = 0.2

  • Organic search is 1x as frequent compared to organic search. It is the same touchpoint. The relative weight of organic search to organic search is 1. Duh...

  • Event touchpoints are 0.5x as frequent compared to organic search. Therefore it should be weighted up by that amount. The relative weight of event touchpoints against organic search should be 1 / 0.5 = 2.

So now we have Organic Search at 1, Ad impressions at 0.2, and Event touchpoints at 2.

Remember that weights should be between 0 to 1. We can use a process called "normalization" to get these numbers within the 0 to 1 range.

We take the maximum number out of all of our relative weights. The maximum number in this case is 2. Then we divide each number by the maximum number.

  • Organic Search custom weight = 1 / 2 = 0.5

  • Ad impressions custom weight = 0.2 / 2 = 0.1

  • Event touchpoints custom weight = 2 / 2 = 1

Method 2: Weighting by conversion rate

Conversion rates might be helpful to understand which touchpoint should be weighted down. Usually, targeted advertising and offline touchpoints have the highest conversion rate, vs organic and direct website visits, or things like email outreach and nurture have the lowest conversion rate. This introduces a bias towards those touchpoints that have higher conversion rates.

You can use the relative weight calculation from Method 1 on conversion rates.

First, you should select a conversion point. Let's say you select Deal Creation

Then, you calculate conversion rates of companies that touch each channel.

Let's say Organic Search has a conversion rate of 0.1% while Paid Search has a conversion rate of 1%.

The relative weight of Paid Search against Organic Search becomes 1/0.1 = 10x.

You can use the remainder of the calculation from Method 1 to get to a 0-1 number.

Method 3: Weighting by Lift

A lift report indicates the effectiveness of a touchpoint in increasing conversion rates.

Using this instead of conversion rates removes the potential bias towards touchpoints that inherently have high conversion rates, such as targeted advertising, but it adds bias towards touchpoints that are only done on the converted audience, such as Email Marketing, which will inherently have a high lift.

The calculation method is similar to the Conversion Rate method.

3. The weighting and exclusion/inclusion of entities that perform touchpoints

In HockeyStack, there are 4 types of entities that perform touchpoints within the buyer journey

  1. Person-based actions

    1. Primary contact tied to opportunity (only applies to Salesforce)

    2. Secondary contacts tied to opportunity (only applies to Salesforce)

    3. All other contacts within company

  2. Company-based actions (The touchpoints for which we don't exactly know which person performed the touchpoint.)

    1. Example: Reverse ip lookup on the website connects website data with companies. In this case, until the person is identified via an email by submitting a form, these website actions are company-based actions.

    2. Example 2: LinkedIn Impressions and Engagements coming from the LinkedIn Ads integration are tied to the company, not the individual person that had the ad engagement, since LinkedIn does not share this data.

You can choose to add additional weighting or exclusions based on which entity performed the action.

Inclusion/Exclusion

You can notify your customer success manager to help implement the inclusion/exclusion schema you need.

Weighting

Weighting would be based on a 0-1 weight given to each type of entity. By default, each entity has a weight of 1.

You can notify your customer success manager to help implement the weighting schema you need.

Example:

I want to weight company-based actions as 0.1. I use a position-based model. I have a deal worth $100k with the following touchpoints:

  • First touch = website visit from google ads from primary contact

    • Google Ads has the following weighting = 0.4 x 1 = 0.4

  • 1 middle touch = website visit from linkedin ads from secondary contact

    • LinkedIn Ads has the following weighting = 0.2 x 1 = 0.2

  • Last Touch = website visit from facebook ads from reverse ip identified visitor

    • Facebook Ads has the following weighting = 0.4 x 0.1 = 0.04

Total of weights is 0.4 + 0.2 + 0.04 = 0.64. This is important, because the attribution each touchpoint gets is the % of total weight they have, times the total credit.

So attribution would be:

  • Google Ads: 0.4/0.64 x $100k = $625k

  • LinkedIn Ads: 0.2/0.64 x $100k = $312.5k

  • Facebook Ads: 0.04/0.64 x $100k = $62.5k

📊
Attribution Models
Attribution Models