There are two main issue impacting Marin’s tracking and attribution of conversions for campaigns targeting mobile devices.
- Consistency of JavaScript support across mobile devices.
- JavaScript support is dependent on browser version.
- JavaScript support for iOS and Android devices is fairly robust.
- Blocking of 3rd Party Cookies
- The default setting for Safari is “Only accept cookies from sites I visit” meaning 3rd party cookies are blocked by default.
- Safari is the dominant browser for devices running iOS (iPad, iPhone and Apple laptops and desktops).
With Safari being the dominant browser on iOS (iPhone, iPad) devices careful consideration must to be given to the Marin Tracker integration path selected during implementation. If mobile is a significant part of your clients’ marketing strategy and JavaScript is well supported on the targeted devices (iOS and Android with recent browser versions):
- The most robust tracking solution captures all conversions, regardless of type, with JavaScript. Clicks can then be captured by JS or Redirect.
- If any conversion type must be deployed as either an image pixel (container tag) or an action 2 redirect (button click) then clicks should be captured using Marin’s redirect.
- If the domain changes between the landing page and the conversion confirmation page then clicks should be captured using Marin’s redirect.
Marin Tracker Review
Marin’s attribution works by capturing clicks (action 1s) and conversions (action 2s) then stitching them together by UUID.
For the purposes of this document assume the following:
- Website:
http://www.powpowsports.com
- Tracker ID: 1teb318
Scenario 1: Non-Mobile Action 1 MT JS, Action 2 MT JS
- JavaScript Action 1
- Sets two cookies containing UUID value:
- _msuuid_1teb318=abc123; domain=www.powpowsports.com
- _msuuid=345xyz; domain=.marinsm.com
- Builds image pixel, reads UUID values from cookies and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- 345xyz is passed as a request/http header
- 345xyz is stored as the UUID for the action 1
- Sets two cookies containing UUID value:
- JavaScript Action 2
- Builds image pixel, reads UUID values from cookies and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- 345xyz is passed as a request/http header
- 345xyz is stored as the UUID for the action 2
- Builds image pixel, reads UUID values from cookies and sends request to tracker.marinsm.com:
- Attribution would be successful because action 1 and action 2 share third party UUID value 345xyz.
Scenario 2: Non-Mobile Action 1 MT JS, Action 2 Image Pixel Or Redirect
- JavaScript Action 1
- Sets two cookies containing UUID value:
- _msuuid_1teb318=abc123; domain=www.powpowsports.com
- _msuuid=345xyz; domain=.marinsm.com
- Builds image pixel, reads UUID values from cookies and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- 345xyz is passed as a request/http header
- 345xyz is stored as the UUID for the action 1
- Sets two cookies containing UUID value:
- Image Pixel or Redirect Action 2
- Reads UUID value and sends request to tracker.marinsm.com:
- 345xyz is passed as a request/http header
- 345xyz is stored as the UUID for the action 2
- Reads UUID value and sends request to tracker.marinsm.com:
- Attribution would be successful because action 1 and action 2 share third party UUID value 345xyz.
Scenario 3: Mobile (Safari) Action 1 MT JS, Action 2 MT JS
- JavaScript Action 1
- Sets one cookie containing UUID value:
- _msuuid_1teb318=abc123; domain=www.powpowsports.com
- _msuuid=345xyz; domain=.marinsm.com
- This cookie not set because Safari blocks 3rd party cookies by default.
- Builds image pixel, reads UUID values from cookie and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- abc123 is stored as the UUID for the action 1
- Sets one cookie containing UUID value:
- JavaScript Action 2
- Builds image pixel, reads UUID value from cookie and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- abc123 is stored as the UUID for the action 2
- Builds image pixel, reads UUID value from cookie and sends request to tracker.marinsm.com:
- Attribution would be successful because action 1 and action 2 share first party UUID value abc123.
Scenario 4: Mobile (Safari) Action 1 MT JS, Action 2 Image Pixel Or Redirect.
- JavaScript Action 1
- Sets one cookie containing UUID value:
- _msuuid_1teb318=abc123; domain=www.powpowsports.com
- _msuuid=345xyz; domain=.marinsm.com
- This cookie not set because Safari blocks 3rd party cookies by default.
- Sets one cookie containing UUID value:
- Builds image pixel, reads UUID values from cookie and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- abc123 is stored as the UUID for the action 1
- Image Pixel or Redirect Action 2
- Sends request to tracker.marinsm.com but was unable to read UUID value:
- Image pixel cannot read first party cookie value even though one was set and since the third party cookie was blocked no UUID value is passed.
- Sends request to tracker.marinsm.com but was unable to read UUID value:
- Attribution would fail because action 1 has first party UUID value and action 2 has none.
Scenario 5: Mobile (Safari) Action 1 MT JS, Action 2 MT JS
Action 1: www.powpowsports.com Action 2: shop.powpowsports.com
- JavaScript Action 1
- Sets one cookie containing UUID value:
- _msuuid_1teb318=abc123; domain=www.powpowsports.com
- _msuuid=345xyz; domain=.marinsm.com
- This cookie not set because Safari blocks 3rd party cookies by default.
- Builds image pixel, reads UUID values from cookie and sends request to tracker.marinsm.com:
- abc123 is passed as a query string parameter
- abc123 is stored as the UUID for the action 1
- Sets one cookie containing UUID value:
- JavaScript Action 2
- Image pixel cannot read first party cookie because it’s on a different domain (www vs. shop) value even though one was set and since the third party cookie was blocked no UUID value is passed.
- Attribution would fail because action 1 has first party UUID value and action 2 has none.
Addressing Mobile Attribution Failures
How might we address the scenarios where Marin failed to attribute conversions?
-
Can the action 2 be moved to Marin Tracker JS, brining it inline with scenario 3?
- If the conversion type is a button click (App Download, for example), this may not be possible.
- Most container solutions, such as MediaMind don’t allow for JavaScript. DFA, however, does allow for JavaScript with its container tag.
- If we’re deploying an image pixel through a container tag, this may not be possible.
- This does not address scenario 5 (domain switch between landing page and conversion page).
-
Would moving the action 1 to Marin Tracker Redirect help?
- Yes, Marin’s redirect takes the form
http://tracker.marinsm.com
. - This means that the _msuuid cookie domain.marinsm.com while 3rd party to
http://www.powsports.com
is considered 1st party by Safari (because of the Marin redirect). - This addresses scenario 5 (domain switch between landing page and conversion page).
- Yes, Marin’s redirect takes the form
Marin Tracker Redirect Considerations
- Should campaigns specifically targeting mobile devices have URLs wrapped in Marin’s redirect as the URL Builder configuration is typically a client wide setting