Piwik 2.10.0 is a new major release of Piwik! In this release we have focused on improving performance, adding several features to the Log Analytics tool and fixed dozens of bugs to improve your Piwik experience. More than 110 issues were closed by 11 contributors!

After You Update

  • Use the forums if you have any question or feedback (free support),
  • Please help us spread the word about Piwik! Maybe you can write about the project on your blog, website, twitter, talk about Piwik Analytics at conferences, or let your friends and colleagues know what is Piwik. Already 1,000,000+ websites have liberated their web analytics, and with your help we can grow the community!
  • To improve Piwik in your language consider contributing to translations,

Database upgrade

Note: This release contains major database upgrades and upgrading your database will take a long time if you have a lot of data in your database.

Please make sure you read the Update Piwik guide for high traffic instances.

Platform Changes

Piwik is an open analytics platform. In an effort to help Piwik developers learn about improvements and changes in the core APIs, we document the changes since the last release.

In this 2.10.0 release there are breaking API changes, API deprecations, Library updates.

-> Check out this CHANGELOG.md file (in the root of Piwik) to see all changes to the platform and APIs.

Note: the Marketplace showcases more than 35 plugins extending Piwik but we think this is just the beginning!

New and updated guides and FAQs

List of 116 tickets closed in Piwik 2.10.0

  • #6851 Cloudfront log importing support and W3CExtendedFormat refactor [by @diosmosis]
  • #6825 IIS advanced log importing, netscaler log importing and cs-username handling [by @diosmosis]
  • #6554 Support for importing AWS CloudFront log files [by @biroca]
  • #4936 Query parameters imported incorrectly from IIS 8.5 logs [by @mattab]
  • #4707 Log Analytics: add support for Netscaler w3c logs [by @diosmosis]
  • #6795 IIS Advanced Logging Module log files support for Log Analytics [by @diosmosis]
  • #6388 Support Page Speed tracking in IIS 8 log files (generation time) [by @diosmosis]
  • #5980 Track the username (cs-username) as User ID in IIS and W3C extended logs [by @diosmosis]
  • #5418 Importing w3c extended logs [by @diosmosis]
  • #6866 PHP caching library based on Doctrine cache: new open source PHP project [by @tsteur]
  • #6861 added support for different caching backends such as redis [by @tsteur]
  • #6856 during core:archive console command, preprocess any custom date ranges that were selected in any User’s Preferences [by @mattab]
  • #6847 create new visit on different campaign info or different referrer website [by @diosmosis]
  • #2624 When a campaign changes, creates a new “visit” by default [by @diosmosis]
  • #2541 Aggregate data for multiple (groups) of websites
  • #6824 User fingerprint hash should be different by default on separate websites [by @mattab]
  • #6075 Write tracking requests into a queue and don’t process them immediately [by @tsteur]
  • #6690 Geo location support for IPv6 addresses [by @joostdekeijzer, @mattab]
  • #6786 Live API can timeout on very large Piwik servers [by @mattab]
  • #5178 Make Piwik compatible with sql_mode = STRICT_TRANS_TABLES (MySQL 5.6 default and best practise) [by @diosmosis]
  • #6672 Pre-process custom date ranges when users have selected them as their default date range [by @mattab]
  • #6637 in multiple frontends setup, the cache file is not up to date on all frontends [by @tsteur]
  • #6625 Do not request live information in case tab is not active [by @tsteur]
  • #6589 Processed metrics metadata [by @mattab, @diosmosis]
  • #6565 Remove duplicate reports from UserSettings plugin [by @sgiehl, @mattab]
  • #6548 How to handle dependency injection? [by @mnapoli]
  • #6545 live widget could benefit from sleep mode / shared hosting scenario [by @tsteur]
  • #6872 New referrer spammer: 7makemoneyonline.com [by @mattab]
  • #6858 New Referrer Spammer: buttons-for-website.com [by @mattab]
  • #6827 Moved resolution reports to a new plugin [by @sgiehl]
  • #6865 Module and action forwarding to prevent BC break does not work for Image Graphs [by @mattab]
  • #6859 Error while trying to invalidate reports with raw data removal enabled [by @mattab]
  • #6828 Plugin for Piwik that modifies the ‘API.get’ output to also list the website name and main website URL.
  • #6849 Can’t add site, The method ‘isPluginActivated’ does not exist or is not available in the module ‘\Piwik\Plugins\CoreAdminHome\API’. [by @mattab]
  • #6845 Notice: ob_flush() [ref.outcontrol]: failed to flush buffer. No buffer to flush [by @mattab]
  • #6842 Separated error and exception handling from logging [by @mnapoli]
  • #6835 PHP Tracker client does not persist the time of the last ecommerce order [by @mattab]
  • #6830 API error for web cron archive.php with: für nähere Informationen): last-3776 [by @mattab]
  • #6829 Fail when the codebase version is older than the Piwik database schema version [by @mattab]
  • #6823 web cron (misc/cron/archive.php?token_auth=xyz) sometimes does not load [by @mattab]
  • #6817 Live API SQL is refactored into Model, LogQueryBuilder [by @mattab]
  • #6807 Multisites – confusing behaviour [by @tsteur]
  • #6802 Tracker refactoring and added queued tracking plugin [by @tsteur]
  • #6798 Notice: Undefined property: stdClass::$module in plugins/Dashboard/API.php on line 137 [by @mattab]
  • #6796 New plugin to let a Super User create a custom, parameterised page in Piwik
  • #6794 Provide better information regarding memory usage by each plugin [by @czolnowski, @mattab]
  • #6792 json_encode(): Invalid UTF-8 sequence in argument [by @mattab]
  • #6789 bug in ecommerce item reports + row evolution: abandonedCarts parameter which is required for abandoned carts report does not get sent to row evoluton API [by @diosmosis]
  • #6788 Move the `proxy-hide-piwik-url` project into a separate repository [by @mnapoli]
  • #6890 Provide better debug possibility using the Symfony VarDumper library [by @tsteur]
  • #6889 Fix views and events that have the same timestamp get disordered [by @tsteur, @mattab]
  • #6887 Create new DevicePlugins and move there the browser plugin reports [by @sgiehl, @mattab]
  • #6886 Adds Hungarian translation [by @sagikazarmark]
  • #6884 Cannot install, redirected to http://localhost/dev/piwik/&trackerStatus=0 [by @kylekatarnls, @mattab]
  • #6870 Move PiwikTracker.php to own repository [by @tsteur]
  • #6843 Environment and configs
  • #6837 Show Exit Page > Exit Page Titles > Exit Page, then a error occurs. [by @mnapoli]
  • #6813 Refactored the logger to use PSR-3 and Monolog (#6622) [by @mnapoli, @mattab]
  • #6630 Content tracking – replay from logs
  • #6503 Exclude all requests from all existing Google bot IP ranges [by @mattab]
  • #6779 Create a SECURITY.md file to explain responsible disclosure procedure [by @mattab]
  • #6760 Updater dry-run: do not show the SQL query to update core_version or $plugin_version [by @mattab]
  • #6756 Ecommerce reports, row evolution issues [by @diosmosis]
  • #6752 Removed screentype report [by @sgiehl, @mattab]
  • #6742 Ecommerce log: also display non-ecommerce actions in Ecommerce log [by @mattab]
  • #6740 In plugin settings it should be more clear which field caused an error [by @tsteur]
  • #6733 automatically cache settings in tracker cache if used in tracker mode [by @tsteur]
  • #6730 When a site ID was invalidated via API CoreAdminHome.invalidateArchivedReports, it should be reprocessed even when period archiving fails at first [by @mattab]
  • #6728 In tracker mode plugin system settings should be automatically cached [by @tsteur]
  • #6722 error message in form are html encoded [by @mattab]
  • #6720 Do not use default value in case value is an integer or a float and a string is requested [by @tsteur]
  • #6719 For maxthon browsers (Chinese Internet Explorer) then ignore DoNotTrack header as it is always enabled [by @mattab]
  • #6713 Ecommerce Log shows error when there are abandoned carts and no conversion yet [by @mattab]
  • #6712 Proxy script fails after piwik.php returns 204 response [by @mnapoli]
  • #6689 Time bugfix [by @Uby501, @mattab]
  • #6687 Fix for IE9 in compatibility mode [by @Fensterbank, @mnapoli]
  • #6658 Moved the `tmp/` path into the config (was hardcoded everywhere) [by @mnapoli, @mattab]
  • #6652 URLs without scheme eg. //example.com/home should be valid URLs in Piwik [by @av2k, @mattab, @piwik-auto-commit-bot]
  • #6651 Red flag running Core unit tests, either on Jessie and Precise [by @mattab]
  • #6648 Import INI config in DI config [by @mnapoli]
  • #6562 strnatcasecmp() expects parameter 1 to be string, array given in /Piwik/core/DataTable/Filter/Sort.php on line 142 [by @mattab]
  • #6560 Add badges to plugins repositories [by @mnapoli]
  • #6529 Make sure core plugins are always loaded in same order [by @mattab]
  • #6489 do not call exit/die in core/Tracker.php
  • #6468 Add system check to enforce always_populate_raw_post_data is -1 on PHP 5.6 [by @mattab]
  • #6301 Visitor log: overlapping provider name
  • #6261 Processed metrics calculation refactor and removal of as much queued filter use as possible
  • #6222 core:archive errors: shell_exec(): Unable to execute ‘which ‘ps’ 2> /dev/null [by @mattab]
  • #6163 Overriding Compatibility View in IE9 [by @Fensterbank]
  • #6104 Make ‘Time on page’ column displayed in format MM:SS instead of ‘1 min 46s’
  • #6042 Introduce mechanism to hide API modules and/or actions from the API listing page
  • #5888 No Multi Row Evolution graph data for “Android Browser” row
  • #5398 Error message in server log: plugins/.htaccess: AddHandler not allowed here [by @mattab]
  • #5304 Visitor Log – Modal doesn’t always close [by @mattab]
  • #5241 Visitor Log: symbol for abandoned cart is missing if … [by @mattab]
  • #5129 All websites dashboard: sparklines rendered ‘flat’ when sorting by website name
  • #5081 Warn in System check that Piwik is not compatible with Apache modspeed and ngx_pagespeed [by @mattab]
  • #4512 Web site selector dialog box too narrow … [by @mattab]
  • #4391 Visitor log: IPv6 Address, long Provider overlaps other layout elements [by @mattab]
  • #3414 API message: This report has been reprocessed since your last click. [by @mattab]
  • #3147 Obscure or prevent referer for outgoing links in piwik via rel=noreferrer (works in Firefox) [by @mattab]
  • #6910 Faster bootstrap for PHPUnit tests [by @mnapoli, @mattab]
  • #6903 Trivial fixes in tests README [by @FelixSchwarz, @mnapoli]
  • #6895 Image graphs: show days within selected range [by @BeezyT]
  • #6891 Simplified bootstrap files [by @mnapoli, @mattab]
  • #6882 Use Mysql 5.6 on Continuous Integration [by @diosmosis]
  • #6876 When DeviceDetection plugin is disabled, ‘Settings’ page should render without error [by @diosmosis]
  • #6873 Cache file can be created with incorrect content [by @tsteur]
  • #6850 when importing visits on a day different from the visit’s day, invalidate the archived reports [by @tsteur]
  • #6751 Row Evolution Metrics Bug [by @diosmosis]
  • #6656 Move towards DI for the configuration system
  • #6542 Automatically refresh every week the last CI build for each of our repository
  • #5808 Bulk Request: Views and Events that have the same timestamp get disordered [by @tsteur]
  • #4982 All Websites dashboard page title [by @mnapoli]
  • #6803 [automatic translation update] Updated 424 strings in 47 languages (gl, cs, da, de, el, it, ar, be, bg, ca, es, et, eu, fa, fi, fr, he, hi, hu, id, is, ja, ka, ko, lt, lv, nb, nl, nn, pl, pt, ro, ru, sk, sl, sq, sr, sv, ta, th, tl, uk, vi, am, hr, te, tr) [by @sgiehl]
  • #6914 [automatic translation update] Updated 31 strings in 5 languages (ar, da, de, el, es) [by @sgiehl]

Did you know you can get involved in the project? Piwik needs you to create the best open analytics platform!