Hi all,
this resumes the usual look at our most important readership metrics. Among other things, this time we observe the annual Christmas slump in pageviews, hail the advent of the mobile singularity (December saw the first ever day with >50% mobile pageviews), and resolve the mystery of the Android app’s installation drop since mid November.
As laid out earlier, the main purpose is to raise awareness about how these are developing, call out the impact of any unusual events in the preceding week, and facilitate thinking about core metrics in general. We are still iterating on the presentation; feedback and discussion welcome.
After switching away from the weekly schedule (week-over-week and month-over-month changes are now being recorded on the Product page at MediaWiki.org) we also skipped an issue and added one week, so this edition of the report covers a timespan of nine weeks.
See also the slides from the Reading team’s quarter review meeting on January 20 for an in-depth look at various metrics.
Now to the usual data. (All numbers below are averages for December 7, 2015 to February 7, 2016 unless otherwise noted.)
Total: 529 million/day
Context (April 2015-February 2016):
(see also the Vital Signs dashboard)
Total pageviews saw a sharp drop about a week before Christmas (almost entirely on desktop), coinciding with a drop in Google referrals. But both recovered in early January, even rising above earlier levels, thanks to mobile (cf. below). Historical data from one and two years ago shows a very similar slump in total and desktop pageviews in the second half of December (with a lasting increase in mobile around Christmas, too), so I’m interpreting this as seasonal even though it preceded the actual holidays by a few days. In January 2014, traffic did not fully recover to the levels of November/early December. In January 2015, it rose slightly above them, similar to now.
Desktop: 54.3%
Mobile web: 44.4%
Apps: 1.3%
Context (April 2015-February 2016):
December 20, 2015 will forever be engraved in Wikimedia history as the first day where mobile pageviews surpassed desktop pageviews (51% vs. 49%). It was a Sunday - as we have known for a long time, mobile usage is higher on weekends. In general, the mobile percentage over a whole week still remains well below 50%. But even as desktop pageviews recovered from the Christmas slump at the beginning of January, the mobile percentage remains roughly 2% higher than before mid-December - quite likely due to a lot of new phones entering usage as Christmas presents.
Global North ratio: 78.3% of total pageviews
Context (April 2015-February 2016):
Android: 38.4k/day
Daily installs per device, from Google Play
Context (January 2015-February 2016):
As reported earlier, the app was featured twice on Google Play in recent months, and we can now estimate how many additional installs each may have caused. November’s placement in the “new and updated” section appears to have brought in more than 200k installs, and from early December to early January, the apps was featured as one of the “Best Apps of 2015” in many countries, resulting in around 350k additional installs.
The preceding reports also described how we noticed a sharp drop in the new install rate around November 12, and started investigating the cause with our contact at Google. After some detective work, it turned out that the app had been benefitting (since April) from a new feature in Google Search showing install buttons for a website’s app next to search results from that site for general search terms. Google ended this experiment in November, causing the app’s baseline install rate to drop significantly (coincidentally around the end of the “new and updated” promotion). Going forward, this means that the ongoing growth rate (installs minus uninstalls) remains much lower than it was during most of 2015.
iOS: 4.94k/day
Download numbers from App Annie
Context (last three months):
Like for the Android app, there was a notable bump around Christmas, but also an even larger spike on January 14 - the reason is not clear to us.
Android: 16.8%
(Ratio of app installs opened again 7 days after installation, among all installed during the previous week. 1:100 sample)
Context (last four months):
Retention for installations since around Christmas appears to be higher; but the data is quite noisy.
iOS: N/A
(Ratio of app installs opened again 7 days after installation, among all installed during the previous week. From iTunes Connect, opt-in only = ca. 20-30% of all users)
As reported earlier, we encountered data quality issues with this metric. We eventually received an explanation from Apple last week, but it doesn’t look very satisfactory for our purposes. We are now working to measure retention ourselves via EventLogging, like we do on Android.
Android: 1.206 million / day
Context (last four months):
A clearly visible and lasting increase around Christmas, which again indicates that the retention rates for the install peak around that time were higher than during the install peaks caused by the Google Play promotions (even though they resulted in more installs initially).
iOS: 303 k / day
Context (last four months):
Similar to Android, a clearly visible and lasting increase around Christmas.
----
For reference, the queries and source links used are listed below (access is needed for each). Unless otherwise noted, all content of this report is © Wikimedia Foundation and released under the CC BY-SA 3.0 license. Most of the above charts are available on Commons, too.
hive (wmf)> SELECT SUM(view_count)/(7000000*9) AS avg_daily_views_millions FROM wmf.projectview_hourly WHERE agent_type = 'user' AND CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) BETWEEN "2015-12-07" AND "2016-02-07";
hive (wmf)> SELECT year, month, day, CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) as date, sum(IF(access_method <> 'desktop', view_count, null)) AS mobileviews, SUM(view_count) AS allviews FROM wmf.projectview_hourly WHERE year > 0 AND agent_type = 'user' GROUP BY year, month, day ORDER BY year, month, day LIMIT 1000;
hive (wmf)> SELECT access_method, SUM(view_count)/7 FROM wmf.projectview_hourly WHERE agent_type = 'user' AND CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) BETWEEN "2015-12-07" AND "2016-02-07" GROUP BY access_method;
hive (wmf)> SELECT SUM(IF (FIND_IN_SET(country_code, 'AD,AL,AT,AX,BA,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FO,FR,FX,GB,GG,GI,GL,GR,HR,HU,IE,IL,IM,IS,IT,JE,LI,LU,LV,MC,MD,ME,MK,MT,NL,NO,PL,PT,RO,RS,RU,SE,SI,SJ,SK,SM,TR,VA,AU,CA,HK,MO,NZ,JP,SG,KR,TW,US') > 0, view_count, 0))/SUM(view_count) FROM wmf.projectview_hourly WHERE agent_type = 'user' AND CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) BETWEEN "2015-12-07" AND "2016-02-07";
hive (wmf)> SELECT year, month, day, CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")), SUM(view_count) AS all, SUM(IF (FIND_IN_SET(country_code, 'AD,AL,AT,AX,BA,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FO,FR,FX,GB,GG,GI,GL,GR,HR,HU,IE,IL,IM,IS,IT,JE,LI,LU,LV,MC,MD,ME,MK,MT,NL,NO,PL,PT,RO,RS,RU,SE,SI,SJ,SK,SM,TR,VA,AU,CA,HK,MO,NZ,JP,SG,KR,TW,US') > 0, view_count, 0)) AS Global_North_views FROM wmf.projectview_hourly WHERE year > 0 AND agent_type='user' GROUP BY year, month, day ORDER BY year, month, day LIMIT 1000;
https://console.developers.google.com/storage/browser/pubsite_prod_rev_02812522755211381933/stats/installs/ (“overview”)
https://www.appannie.com/dashboard/252257/item/324715238/downloads/?breakdown=country&date=2015-12-07~2016-02-07&chart_type=downloads&countries=ALL (select “Total”)
SELECT LEFT(timestamp, 8) AS date, SUM(IF(event_appInstallAgeDays = 0, 1, 0)) AS day0_active, SUM(IF(event_appInstallAgeDays = 7, 1, 0)) AS day7_active FROM log.MobileWikiAppDailyStats_12637385 WHERE userAgent LIKE '%-r-%' AND userAgent NOT LIKE '%Googlebot%' GROUP BY date ORDER BY DATE;
(with the retention rate calculated as day7_active divided by day0_active from seven days earlier, of course)
https://analytics.itunes.apple.com/#/retention?app=324715238
hive (wmf)> SELECT CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) as date, unique_count AS Android_DAU FROM wmf.mobile_apps_uniques_daily WHERE platform = 'Android';
hive (wmf)> SELECT CONCAT(year,"-",LPAD(month,2,"0"),"-",LPAD(day,2,"0")) as date, unique_count AS iOS_DAU FROM wmf.mobile_apps_uniques_daily WHERE platform = 'iOS';