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:
- 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 | Use this for email campaigns. | |
email_transaction | 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: