We are proud to announce Piwik 2.14.0: a new major release of Piwik!

What’s new?

In this release we have focused on improving the usability and design of Piwik. Several screens were redesigned, including the installation, administration screens and forms, data tables and buttons, the websites manager, the visitor log, and more. Performance has been slightly improved and you can now install Piwik with HHVM and TokuDB (useful for high traffic Piwik services). In terms of quality, we have made many improvements to our automated test suites.

Several major security issues were responsibly reported to us and fixed in this release. Finally we’ve updated our product roadmap so you can see some of the great things coming next.

As always we the Piwik team are very interested to hear your feedback.

More than 130 tickets have been closed by 15 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,

Security release

This release is rated critical.

Several security issues have been fixed. We are grateful for security researchers who responsibly disclosed these security issues to us: Abdullah Hussam Gazi (CSRF issue) and Dmitriy Shcherbatov (several XSS and CSRF issues, and one possible Remote Code Execution).

Database upgrade

This release does not contain any major database upgrade.

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.14.0 release there are breaking changes, New features, Library updates, New commmands.

Read more in Platform Changelog for Developers to see all changes to the platform and APIs (you can also find it in the CHANGELOG.md in the root of your Piwik).

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

New and updated guides and FAQs

List of 133 tickets closed in Piwik 2.14.0


  • #6785 Implement CLI command to precisely delete raw data by date and idsite [by @mattab]
  • #5287 Track file download and outlinks when user does a right click [by @tsteur, @diosmosis]
  • #7912 Allow CLI archiving for only specific segments [by @tsteur]
  • #6244 Record hash tag for outgoing clicks (eg. mega.co.nz outlinks) [by @mattab]
  • #3950 New segment ‘language’ [by @sgiehl]
  • #7891 Expand Outlinks / Downloads if only one domain given [by @tsteur]
  • #8186 Auto-update the referrer spammer blacklist [by @mnapoli, @mattab]
  • #2041 Support Ping requests to report a better ‘time on page’
  • #8062 Segment userId should allow to use all operators including Contains operator =@ [by @mattab]
  • #7885 Rename Ecommerce & Goals Category Titles [by @spacenate, @tsteur, @mattab]
  • #8131 Make the installation of Piwik work with HHVM. [by @Loscillo, @mattab]
  • Design & UI improvements

  • #7896 New design for buttons [by @mnapoli, @diosmosis]
  • #7895 New design for default tables [by @mnapoli, @diosmosis]
  • #7875 New design for the installation [by @mnapoli]
  • #7874 New design for alerts and notifications [by @mnapoli]
  • #7793 New design for code blocks [by @mnapoli, @diosmosis]
  • #7586 New design for Marketplace (in Administration) [by @mnapoli]
  • #7584 New design for Installer screens [by @mnapoli]
  • #7090 Improve the look of our data tables and of our report pages in general [by @tsteur]
  • #4495 use consistent colours for fonts and buttons
  • #7517 Make Popovers slightly wider [by @mattab]
  • #8190 Piwik logo on IE9 is misplaced [by @tsteur]
  • #7879 Some widgets have wrong styles in widget preview (headline etc) [by @mnapoli]
  • #7827 Edit personal email report – Report hour is not readable on Firefox [by @tsteur]
  • #8191 Use a card like design in dashboard [by @tsteur, @mattab]
  • #8087 Popover displaying messages should use Piwik design style [by @mattab, @mnapoli]
  • #8002 New design for the site manager [by @mnapoli, @tsteur]
  • #7960 New design for forms [by @mnapoli, @mattab]
  • #7909 Redesign visitor log
  • #7787 CSS and UI components demo [by @mnapoli]
  • #7587 New design for Administration screens [by @mnapoli]
  • #4789 Align numbers to the right of the columns [by @tsteur]
  • Bug fixes & Tasks

  • #7494 The pragma « disableCookies » does not work in some browsers [by @tsteur]
  • #8102 Very slow SQL queries when archiving a segment for an unknown action
  • #7812 Details cut-off on Visitor Log modal pop-up (screenshot included) [by @mattab]
  • #8197 Make sure to escape error messages [by @tsteur]
  • #7736 While loading Piwik, the top menu displays all language names in a row for 1 second [by @tsteur]
  • #8182 Disallow api content to be loaded within Piwik [by @mattab]
  • #8039 Create a page that lists all available tracker SDKs for « universal » properties
  • #8029 Installation Error Barnes_&_Noble.ico [by @sgiehl]
  • #8017 Moved Intl data translations to a new plugin [by @sgiehl, @mattab]
  • #7977 Document Ecommerce JavaScript Tracking API functions in API reference [by @mattab]
  • #7956 fix core folder with php-cs-fixer for psr-2 [by @fabiocarneiro, @mattab]
  • #7897 link tag (shortcut icon) generated twice in Morpheus/templates/layout.twig [by @sgiehl]
  • #7846 Remove UserSettings Plugin [by @tsteur]
  • #7821 Report classes should not be instantiated directly [by @tsteur]
  • #7803 Tracking code generator: Allow to generate tracking code for mobile apps etc.
  • #7624 Create and maintain up-to-date the Piwik Roadmap
  • #6552 noindex, nofollow option [by @mattab, @mnapoli, @tsteur]
  • #5197 Show Piwik version on demo [by @mattab]
  • #8174 Geo location with GeoIP PECL ISP database: correctly set the provider name [by @splinter89, @mattab]
  • #8166 When searching for websites in the Sites Manger show all fields [by @tsteur, @mattab]
  • #8136 Invalid link after uploading a plugin
  • #8132 Make sure BulkTracking skips requests for non existant sites. [by @diosmosis]
  • #8109 Fix missing variable escaping in the JS tracking code generator [by @mnapoli, @diosmosis]
  • #8104 Added ‘mbstring.func_overload = 0’ check as installation requirement [by @barbushin, @mnapoli]
  • #8081 NaN in VisitorMap when we have unknown regions
  • #8075 Piwik is overlapping graph labels when viewport is too narrow
  • #8070 API SitesManager.getSitesIdFromSiteUrl should match both HTTP and HTTPS websites [by @mattab]
  • #8061 Popup displayed after changing visualization to cities while using the visitor map
  • #8060 Visitor map visualization issues [by @diosmosis]
  • #7995 Translate of Longitude column dimension is wrong [by @tsteur]
  • #7989 Segmented Visitor Log icon does not show data when Page URL contains HTML entities [by @mattab]
  • #7985 Provider submenu label may appear untranslated (Provider_SubmenuLocationsProvider)
  • #7968 Console init failure when no config exist [by @mnapoli]
  • #7961 Invalid URL fragment encoding
  • #7958 When using old data purger, content tracking names are being deleted.
  • #7941 Incorrect screen resolution detected for devices with device pixel ratio > 1 [by @sgiehl]
  • #7940 Map labels truncated for countries with no visits [by @sgiehl]
  • #7924 Reusing a piwik database created a report that it had been updated to the same version [by @mnapoli]
  • #7899 Visitor Profile Widget should not be visible to anonymous users [by @tsteur]
  • #7886 Getting Piwik to work on IE8 again by fixing a few issues [by @diosmosis]
  • #7854 All Websites dashboard shows only the first 50 websites [by @tsteur, @diosmosis]
  • #7851 Average order value graph [by @tsteur, @diosmosis]
  • #7815 sh: ps: not found in logs [by @mnapoli, @mattab]
  • #7798 Marketplace when closing popover it scrolls to top [by @diosmosis]
  • #7796 No longer possible to change the dashboard layout to multiple columns [by @mnapoli]
  • #7774 Column Headers Missing in TSV / CSV data exports [by @diosmosis]
  • #7180 Delete old visitor logs uses idvisit instead of the date [by @diosmosis, @mattab]
  • #7086 Visit Overview (with graph) widget scroll to wrong position under circumstances
  • #5014 Outlinks not properly encoded [by @mattab]
  • #8189 Remove keywords widget from the default dashboard [by @mattab]
  • #8158 New automated test to detect when the Piwik files become too big [by @mattab]
  • #8101 Move more i18n data translations to Intl plugin [by @sgiehl]
  • #8069 Adding ping=1 tracker query param to allow JS tracker to update the end of visit time for more accurate visit length [by @diosmosis]
  • #8094 Instant log output for failing UI tests and some tweaks on detection of page activity [by @tsteur, @diosmosis]
  • #8065 Migrate all core plugins to use plugin.json instead of getInformation() [by @sgiehl, @mattab]
  • #8028 Warning: imagecopyresampled() expects parameter 2 to be resource, string given
  • #8019 Force html templates to reload when development mode is enabled [by @tsteur, @mnapoli]
  • #7996 Moved i18n data to core/Intl [by @sgiehl]
  • #7980 Implement HTTP-Authentication for transport methods socket & fopen [by @sgiehl, @mattab]
  • #7975 No way to get sites without group using the reporting API [by @alexkuk]
  • #7972 Detect monitor.us as a bot
  • #7965 Add a divider after the Visitors in Real-time header
  • #7936 with success -> successfully [by @dandv, @sgiehl]
  • #7920 List of devices under « visitors » is very near to 10 and does not require a pager
  • #7908 Require TCPDF using composer [by @sgiehl]
  • #7907 Visitorlog: Use a tooltip to display additional information to avoid text truncation [by @sgiehl, @mattab]
  • #7872 Visit Overview (with graph) widget targets correct graph [by @spacenate, @tsteur]
  • #7859 Create UI tests for ImageGraph plugin so testing can be automated (to some level) [by @diosmosis]
  • #7844 update pchart library from 2.1.3 to 2.1.4 and moved them to a new folder [by @tsteur, @diosmosis]
  • #7804 Restore auth when calling API only if needed [by @tsteur, @mnapoli]
  • #7775 Make website manager take 100% of width on a big screen [by @tsteur, @mnapoli]
  • #7707 Refactoring CronArchive setup + use for less technical debt [by @diosmosis, @mnapoli]
  • #8027 Injection Inception, Final cleanup of test environment setup [by @diosmosis]
  • #8026 Injection Inception, Add Access and Auth objects to DI [by @diosmosis, @mnapoli]
  • #8008 Injection Inception, Using DI as primary mechanism in setting up Test environment [by @diosmosis, @mnapoli]
  • #7963 Injection Inception, Allow integration + system tests to override DI [by @diosmosis]
  • #7957 Injection Inception, Adding Config to DI [by @diosmosis]
  • #7644 Moby DIoC: Piwik environment encapsulation [by @diosmosis]
  • #8214 Add date to CronArchive output when printing info about preprocessing what will be archived for. [by @diosmosis]
  • #8221 Test to make sure we do not break the external widget URL API [by @tsteur]
  • #8290 Warning – preg_match(): Unknown modifier ‘a’ [by @mattab]
  • #8264 Installer should let you bypass the « optional » file integrity check [by @mattab]
  • #8247 Sites Manager doesn’t save or show some saved global settings
  • #8201 Show « Keyword » dimension name in All websites > Search Engine [by @sgiehl]
  • #8112 Using setCookiesPath creates 2 cookies [by @parruc]
  • #7298 Email address hel*lo@mail.com should be accepted as valid [by @diosmosis]
  • #8250 Add some SearchEngine Hostnames [by @pebosi, @mattab]
  • #8227 add constant PIWIK_VENDOR_PATH [by @craue, @mattab]
  • #8207 Replaced inline style with stylesheet in add email report form [by @Fensterbank, @mattab]
  • #8206 Speeding up javascript tests 2.5 times [by @barbushin, @tsteur]
  • Translation updates

  • #7871 [automatic translation update] Updated 215 strings in 13 languages (am, ar, de, el, es, fi, nb, nl, pl, sv, fr, ru, da) [by @sgiehl]
  • #7934 [automatic translation update] Updated 104 strings in 43 languages (bn, sv, ru, bs, ca, cs, cy, el, et, eu, fa, fi, fr, gl, he, hi, hr, hu, id, is, it, ja, ka, ko, lt, lv, nb, nl, nn, pl, pt, ro, sk, sl, sq, sr, ta, te, th, tl, tr, uk, vi) [by @sgiehl]
  • #7994 [automatic translation update] Updated 329 strings in 8 languages (es, fi, nl, sk, sv, de, el, fr) [by @sgiehl]
  • #8025 [automatic translation update] Updated 339 strings in 10 languages (sr, es, ro, bg, hr, tr, ru, nl, ja, nn) [by @sgiehl]
  • #8046 [automatic translation update] Updated 207 strings in 6 languages (bg, es, it, hr, nl, cs) [by @sgiehl]
  • #8093 [automatic translation update] Updated 125 strings in 31 languages (he, sr, el, es, fr, it, nb, cs, da, de, nl, ru, sv, ar, be, bg, ca, et, fa, fi, hi, id, ja, ko, nn, pl, pt, ro, sq, th, vi) [by @sgiehl]
  • #8281 [automatic translation update] Updated 270 strings in 11 languages (de, fr, eu, hi, hu, lt, lv, es, tl, ja, sk) [by @sgiehl]
  • #8269 [automatic translation update] Updated 311 strings in 3 languages (es, ja, it) [by @sgiehl]
  • #8204 [automatic translation update] Updated 396 strings in 7 languages (hi, es, fr, de, fa, it, tl) [by @sgiehl]
  • Log Analytics

  • #78 Add webp to STATIC_EXTENSIONS. [by @marcenuc, @mattab]
  • #77 import_logs.py should look for https host if no http host is found [by @mattab]
  • #75 Cron reports: Exception in thread Thread-1 (most likely raised during interpreter shutdown) [by @diosmosis]
  • #74 NameError: global name ‘config’ is not defined [by @diosmosis]
  • #73 Error 400 when receiving an unexpected website

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