In order to optimize smoothness, loading times and CTRs Marfeel applies some optimizations that might lead to confusing situations when comparing PageViews measured by Google Analytics and PageViews measured by AdSense.

Normally the two numbers don’t match and can easily have a 50% mismatch. The main reasons are:

  • Marfeel loads ads using a lazy loading technique. An ad placement is only loaded when it’s about to appear on the viewport. Depending on where ad placements are in an article, it’s possible that a PageView event is sent but no ad has been loaded on the page.
  • When a user swipes from Article A to Article B, all ads in Article A are unloaded to free device memory and avoid scroll jankiness. This interaction counts as 2 pageviews (one for Article A and one for Article B). If the user swipes back to Article A and an extra PageView is tracked, but ad units are not refreshed.
  • When a user taps on Article A from a home page it logs 2 PageViews: one for the home page and one for Article A. In this case ads from the Home and Article A are loaded. If the user navigates back to the home page (by closing the UI) a new PageView is logged but no ad impressions are triggered. No new impressions are re-triggered because if the adUnits are in an already scrolled position of the page they would never be seen. The ones that will appear as a user scrolls down will be lazy loaded in any case.
  • In November 2016 we've discovered a bug in the following use case. A user that lands on an Article via DeepLinking and scrolls down to the homePage. The first impression of the home page will be attributed to Article A and not the Homepage. Again in this case two pageViews are tracked but only one impression (one pageView on AdSense). We're working on a fix for this issue, which applies only to the page attribution of an impression, not to impressions themselves.

Read more about PageView tracking on Google Analytics.