Campaign tracking

Campaign tracking is why we make use of sessions. We want to know how our marketing efforts led to people visiting our website and what they did in the sessions that originated from campaigns or other efforts.

For more information about how sessions are handled, read our session management documentation.

When making analyses of traffic to our websites we want to aggregate the data to the following levels:

Channel -> Medium -> Source

To understand channel, medium and source, it is good to make an analogy to the real world.

Let’s say your website is a city and you want people to visit your city. First you want to know which types of transportation they use.

For example, do they use roads, rail roads or water. This could be seen as the channels in online.

Then, when someone travel by road, you could categorize the traffic by type of transportation method. An example could be a car or a bike. This is what we call mediums in online.

Then finally, the source is where the user originated from.

A full example would be:

  1. A user traveled to our city on the road by bike from New York city.

2. A user visited our website through a Search network. We paid for an a search ad (Google Ads) so the medium is search_paid and the source is google.

3. A user visited our website through a Social network. We created a post on our Facebook page. The medium is social_organic and the source is facebook.

Default channels and mediums

The channel is the grouping of mediums. The medium is the method on how the user came to our website.

Harvest Collect has the following default channels and mediums. It is possible to create your own custom channels and mediums.

Medium Channel Description
search_paid search Use this for search advertising.
search_organic search Determined based on search referrers.
social_paid social Use this for social advertising.
social_organic social Determined based on social referrers.
display_paid display Use this for display advertising.
display_organic display Use this for house / non paid display.
video_paid video Use this for video advertising.
video_organic video Use this for house / non paid videos.
email_campaign email Use this for email campaigns.
email_transaction email Use this for transaction emails.
affiliate affiliate Use this for affiliate marketing.
referral referral Automatically determined.
internal internal Use this for promoting your own websites.
<unknown medium> other other channel is used for unknown mediums.
direct direct Automatically determined.

Referral exclusion

Whenever a user came from a new referral, a new session is started. Usually this is the correct behaviour, but not always.

A common scenario is that someone needs to leave the website to do a payment at the website of a payment service provider, like PayPal.

After the payment, the user returns to the website and therefore has a new referrer. This would lead to a new session by default.

Harvest Collect allows you to set a list of referrers that should not trigger the creation of a new session.

If there is no harvest_session cookie and the user came from a referrer that was excluded, then Harvest Collect would treat the new session as originating from direct.

Valid referrer variables

Harvest Collect checks the source, medium, channel and campaign against the list of valid values. Harvest Collect will automatically check whether values are valid.

A specific variable in sessionData “validReferrerVariables” will have the value “1” if the variables values are valid and “0” if they are not.

This makes it easy to check for wrongfully used utm-parameters. This information could be used to create a campaign tracking quality score. This score tells you how well you are tagging your campaigns.

Custom channels and mediums

It is possible to configure your own custom channels and mediums. This way the campaign tracking quality score can be determined based on your own custom configuration.

It is possible to have a medium exist in multiple channels. If this is the case, Harvest Collect cannot determine the channel by itself. Therefore, you will need to provide the harvest_channel query string parameter. An example could be:

https://www.graindataconsultants.com?harvest_channel=email&utm_medium=newsletter&utm_source=newsletter-195