{"id":137,"date":"2014-12-18T00:23:08","date_gmt":"2014-12-18T05:23:08","guid":{"rendered":"http:\/\/blog.mozilla.org\/advancingcontent\/?p=137"},"modified":"2019-09-18T13:57:37","modified_gmt":"2019-09-18T18:57:37","slug":"getting-tiles-data-from-firefox","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/advancingcontent\/2014\/12\/18\/getting-tiles-data-from-firefox\/","title":{"rendered":"Getting Tiles Data From Firefox"},"content":{"rendered":"<p>Following the launch of Tiles in November, I wanted to provide more information on how data is transmitted into and from Firefox. \u00a0Last week, I described how we <a href=\"https:\/\/blog.mozilla.org\/advancingcontent\/2014\/12\/09\/getting-tiles-data-into-firefox\/\">get Tiles data into Firefox<\/a> differently from the usual cookie-identified requests. \u00a0In this post, I will describe how we report on users\u2019 interactions with Tiles.<\/p>\n<p>As a reminder, we have three kinds of Tiles: the History Tiles, which were implemented in Firefox in 2012, Enhanced Tiles, where we have a custom creative design for a Tile for a site that a user has an existing relationship with, and Directory Tiles, where we place a Tile in a new tab page for users with no browsing history in their profile. \u00a0Enhanced and Directory Tiles may both be sponsored, involving a commercial relationship, or they may be Mozilla projects or causes, such as our <a href=\"https:\/\/webmaker.org\/\">Webmaker<\/a> initiative.<\/p>\n<p>&nbsp;<\/p>\n<p>We need to be able to report data on user\u2019s interactions with Tiles for two main reasons:<\/p>\n<ul>\n<li>to determine if the experience is a good one<\/li>\n<li>to report to our commercial partners on volumes of interactions by Firefox users<\/li>\n<\/ul>\n<p>And we do these things in accordance with our <a href=\"https:\/\/blog.mozilla.org\/privacy\/2014\/11\/11\/mozillas-data-privacy-principles-revisited\/\">data principles<\/a> both to set the standards we would like the industry to follow and, crucially, to maintain the trust of our users.<\/p>\n<p>&nbsp;<\/p>\n<p>Unless a user has opted out by switching to Classic or Blank, Firefox currently sends a list of the Tiles on a user\u2019s new tab page to Mozilla\u2019s servers, along with data about the user\u2019s interaction with the Tiles, e.g., view, click, or pin.<\/p>\n<p>Directory and Enhanced Tiles are identified by a Tile id, (e.g., \u201cFirefox for Android\u201d Tile has an id of 499 for American English-speaking users while \u201cFirefox pour Android\u201d has an id of 510 for French-speaking users). \u00a0History Tiles do not have an id, so we can only know that the user saw a history screenshot but not what page &mdash; except for early release channel Telemetry related experiments, we do not currently send URL information for Tiles, although of course we are able to infer it for the Directory and Enhanced Tiles that we have sent to Firefox.<\/p>\n<p>&nbsp;<\/p>\n<p>Our implementation of Tiles uses the <i>minimal actionable dataset<\/i>, and we protect that data with with multiple layers of security. \u00a0This means:<\/p>\n<ul>\n<li>cookie-less requests<\/li>\n<li>encrypted transmission<\/li>\n<li>aggressive cleaning of data<\/li>\n<\/ul>\n<p>We also break up the data into smaller pieces that cannot be reconstructed to the original data.\u00a0 When our server receives a list of seen Tiles from an IP address, we record that the specific individual Tiles were seen and not the whole list.<\/p>\n<div id=\"attachment_138\" style=\"width: 610px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/sample-POST.png\"><img aria-describedby=\"caption-attachment-138\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-138\" src=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/sample-POST-600x119.png\" alt=\"Sample POST graphic\" width=\"600\" height=\"119\" srcset=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/sample-POST-600x119.png 600w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/sample-POST-252x50.png 252w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/sample-POST.png 1014w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-138\" class=\"wp-caption-text\">Sample POST from opening a new tab<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>With the data aggregated across many users, we can now calculate how many total times a given Tile has been seen and visited. \u00a0By dividing the number of clicks by the number of views, we get a click-through-rate (CTR) that represents how valuable users find a particular tile, as well as a pin-rate and a block-rate. \u00a0This is sufficient for us to determine both if we think a Tile is useful for a user and also for us to report to a commercial partner.<\/p>\n<p>&nbsp;<\/p>\n<p>Calculating the CTR for each tile and comparing them helps us decide if a Tile is useful to many users. \u00a0We can already see that the most popular tiles are \u201cCustomize Firefox\u201d and \u201cFirefox for Android\u201d (Tile 499, remember) both in terms of <i>clicks<\/i> and <i>pins.<\/i><\/p>\n<p>For an advertiser, we create reports from our aggregated data, and they in turn can see the traffic for their URLs and are able to measure goal conversions on their back end. \u00a0Since the Firefox 10th anniversary announcement, which included Tiles and the <a href=\"https:\/\/www.mozilla.org\/firefox\/developer\/\">Firefox Developer Edition<\/a>, we ran a Directory Tile for the <a href=\"https:\/\/webmaker.org\/\">Webmaker<\/a> initiative. \u00a0After 25 days, it had generated nearly 1 billion views, 183 thousand clicks, and 14 thousand pins.<\/p>\n<div id=\"attachment_140\" style=\"width: 610px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Tile.png\"><img aria-describedby=\"caption-attachment-140\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-140\" src=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Tile-600x219.png\" alt=\"Webmaker Tile\" width=\"600\" height=\"219\" srcset=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Tile-600x219.png 600w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Tile-252x92.png 252w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Tile.png 1260w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-140\" class=\"wp-caption-text\">The Webmaker Tile (static and rollover states)<\/p><\/div>\n<p>The Webmaker team, meanwhile, are able to see the traffic coming in (as the Tile directs traffic to a distinct URL), and they are able to give attribution to the Tile and track conversions from there:<\/p>\n<div id=\"attachment_139\" style=\"width: 610px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Dash.png\"><img aria-describedby=\"caption-attachment-139\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-139\" src=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Dash-600x116.png\" alt=\"Webmaker Dashboard\" width=\"600\" height=\"116\" srcset=\"https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Dash-600x116.png 600w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Dash-252x49.png 252w, https:\/\/blog.mozilla.org\/advancingcontent\/files\/2014\/12\/Webmaker_Dash.png 1341w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-139\" class=\"wp-caption-text\">Webmaker.org\u2019s Analytics dashboard: 182,488 sessions and 3,551 new Webmaker users!<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>We started with a relatively straightforward implementation to be able to measure how users are interacting with Tiles. \u00a0But we\u2019ve already gotten some good ideas on how to make things even better for improved accuracy with less data. \u00a0For example, we currently cannot accurately measure how many unique users have seen a given Tile, and traditionally unique identifiers are used to measure that, but <a href=\"http:\/\/en.wikipedia.org\/wiki\/HyperLogLog\">HyperLogLog<\/a> has been suggested as a privacy-protecting technique to get us that data. \u00a0A separate idea is that we can use statistical random sampling that doesn\u2019t require all Firefox users to send data while still getting the numbers we need. We\u2019ll test sampling through Telemetry experiments to measure site popularity, and we\u2019ll share more when we get those results.<\/p>\n<p>We would love to hear your thoughts on how we treat users data to find the Tiles that users want. \u00a0And if you have ideas on how we can improve our data collection, please send them over as well!<\/p>\n<p>&ndash; <a href=\"mailto:edilee@mozilla.com\">Ed Lee<\/a> on behalf of the Tiles team.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following the launch of Tiles in November, I wanted to provide more information on how data is transmitted into and from Firefox. \u00a0Last week, I described how we get Tiles data into Firefox differently from the usual cookie-identified requests. \u00a0In &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/advancingcontent\/2014\/12\/18\/getting-tiles-data-from-firefox\/\">Continue reading<\/a><\/p>\n","protected":false},"author":468,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10810,175982],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/posts\/137"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/users\/468"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/advancingcontent\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}