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

What’s new?

This release aims to be outstanding from a performance, security, and reliability point of view. It also includes a beautiful new design which lets you focus on your data, and a new search bar to lets you easily navigate to any menu, website or segment in your Piwik dashboards. For administrators and power users, this release includes new diagnostic tools, logging messages, a new Log viewer plugin, and better overall performance and scalability. There are dozens other improvements, see the full list below. Piwik 2.15.0 is built to last.

We look forward to hearing your feedback in the forums or in the issue tracker

187 tickets have been closed by more than 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.

We are grateful for Security researchers who disclosed security issues privately to the Piwik Security Response team: Elamaran Venkatraman, Egidio Romano and Dmitriy Shcherbatov. The following vulnerabilities were fixed: XSS, CSRF, possible file inclusion in older PHP versions (low impact), possible Object Injection Vulnerability (low impact).

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.15.0 release there are API deprecations, New features, New APIs, New commmands, Internal API changes.

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 50 plugins extending Piwik but we think this is just the beginning!

Updated guides and FAQs

New and updated Plugins

  • New plugin: AnonymousPiwikUsageMeasurement to measure how your Piwik is used, and opt-in to share anonymised usage stats with us.
  • New plugin: LogViewer to let you view the Piwik application log messages directly within Piwik.
  • Following plugins have been updated on the Marketplace to be compatible with 2.15.0: InterSites, LoginLdap, SimplePageBuilder, QueuedTracking, TaskTimetable.

List of 187 tickets closed in Piwik 2.15.0

    piwik/piwik

    Major changes

  • #5029 Make theme look great when used in Mobile browser
  • #1542 Implement « Content Security Policy » (CSP)
  • #1254 Format numbers displayed in Piwik reports (eg. 1,000,000 instead of 1000000)
  • #8826 Disable ‘Provider’ plugin by default for new Piwik users (tracker performance) [by @mattab, @diosmosis]
  • #8578 Make Piwik opt-out feature work on internet explorer 11 when third party cookies are disabled
  • #9051 Release AnonymousPiwikUsageMeasurement plugin on the Marketplace
  • #7589 New Piwik design when main menu is on the left [by @mattab]
  • #6497 On databases that have a default charset that is not utf-8, data can get corrupted [by @tsteur]
  • #8946 New Awesome Search bar in Piwik
  • #8893 Major progress in PHP7 Compatibility for Piwik
  • #8825 New Command ‘core:invalidate-report-data’ to invalidate archive data (w/ period cascading) [by @diosmosis, @mattab]
  • #8755 Display the « Segmented Visitor Log » icon in Custom Variables report
  • #8625 New diagnostic command ‘diagnostics:analyze-archive-table’ that analyzes archive tables [by @diosmosis, @tsteur]
  • #7883 Allow plugin developers to get their plugins translated by the piwik community [by @sgiehl]
  • #7239 Improved diagnostics: new LogViewer plugin in Marketplace!
  • #6031 Make it easier to create Segments with Custom Variables [by @diosmosis]
  • #4103 New segments: Download file URL ‘downloadUrl’ and Outlink URL ‘outlinkUrl’ [by @mattab]
  • #588 New website setting: Only track visits and actions when the action URL starts with one of the above URLs [by @diosmosis]
  • #8066 SQL query to find websites with traffic since last successful archiving can take 6+ hours [by @tsteur, @diosmosis]
  • #7913 In SQL queries, print out the name of the plugin in a SQL comment for troubleshooting which plugin triggered query
  • #7169 Use the « Left Menu » as default menu for all Piwik users
  • #2846 Two factor authentication login: new GoogleAuthenticator plugin on Marketplace!
  • #8864 Improve date selector usability [by @tsteur]
  • #8633 New command ‘database:optimize-archive-tables’ to optimize archive tables (even if on InnoDB). [by @diosmosis]
  • #8850 Archiving performance: cache the slow segment subqueries that are using LIKE constraint [by @mattab]
  • #7618 Update some of UI icons with new set of font icons [by @mnapoli, @diosmosis]
  • #6773 a multilingual Glossary using Piwik translations, available from your « Help » page and glossary.matomo.org [by @mattab]
  • #7588 New design for Administration Left menu
  • #8776 Row Evolution can fail when a segment is used
  • #8593 How do I enable debug logging in Piwik Tracker?
  • #7733 Chrome’s « Data Saver » mode prevents tracking of many visitors using Chrome browser
  • #6593 PageURL Segmentation fails on the ecommerce page [by @diosmosis]
  • #5094 When AdBlock Plus is used, suggest user to disable it for Piwik
  • #4589 Use Piwik to measure how Piwik app is used by the community (opt-in) [by @tsteur]
  • #9075 Display ‘Report generated Xs ago’ in help tooltip [by @mattab]
  • #7778 Tracker configId should be based on original IP, not on anonymised IP?
  • Enhancements

  • #8529 Do not merge assets when specific URL parameter &disable_merged_assets=1 is set [by @ThaDafinser, @tsteur, @mattab]
  • #8317 Refactor tracker code for clarity, modularity and so plugins can have more granular control over tracking [by @diosmosis, @mattab]
  • #8628 UsersManager add form inputs use placeholders instead of values [by @mnapoli, @diosmosis]
  • #8693 Prevent content spoofing: display error if the URL is not valid
  • #4615 remove extra line break and indentation in Admin UI [by @sgiehl]
  • #8858 invalidateArchivedReports API can invalidate report data for a particular ‘&segment=’
  • #8773 Mobile Messaging: new SMS provider to help developers debug (available in development mode) [by @sgiehl, @mattab]
  • #8752 In each SQL query, when a segment is used, print the segment string in a SQL comment
  • #8650 New method logAllContenBlocksOnPage to piwik.js that lets you debug which content blocks are on your page [by @diosmosis, @tsteur]
  • #8610 Case-insensitive login [by @mnapoli, @diosmosis]
  • #8607 Add option to set « process_new_segments_from » to « segment_last_edit_time » [by @diosmosis]
  • #8561 Make it possible to donate to plugin creators from within piwik [by @sgiehl, @mattab]
  • #8550 Display total number of actions across all websites [by @mnapoli, @mattab]
  • #8549 in Update settings, let user choose « Use the latest release » or « Use the Long Term Support release » [by @tsteur]
  • #8461 Email reports: print the full URL source / origin of report in the email body
  • #8296 During bulk tracking, return indices of invalid requests [by @diosmosis]
  • #7766 Emoji in titles or URLs cause tracking to fail [by @sgiehl]
  • #5960 Do not use eval function in piwik.js (for CSP)
  • #8899 Does Piwik support IPv6 protocol?
  • #8399 Performance regression: All dimensions are created on each request [by @tsteur, @diosmosis]
  • #7767 New FAQs to document how to use Redis for sessions and cache
  • #8545 Use improved tooltips for all tooltips in the visitor log [by @mnapoli, @tsteur]
  • #8488 Update icons [by @mnapoli, @diosmosis]
  • #7847 Piwik dashboard widgets are not aligned [by @tsteur]
  • #8945 Help text for Content tracking metrics and dimensions [by @mattab]
  • #8857 Improve number formats [by @sgiehl, @mattab]
  • #8856 Improve date & time formats [by @sgiehl, @mattab]
  • #8811 When saving plugin settings, disable the « Save » button to prevent double clicks [by @tsteur]
  • #8788 Set HTML <title> values in all user menu and admin menu pages [by @mattab]
  • #8777 Better logging messages in core:archive output [by @mattab]
  • #8765 Replace all utf8 4-byte characters in tracked urls with � [by @sgiehl, @mattab]
  • #8712 Move website selector to a more prominent position
  • #8709 Show warning if tracker debug or debug on demand is enabled [by @tsteur, @diosmosis]
  • Tasks

  • #8646 Open popup in a new window when setting opt-out cookies [by @diosmosis, @mattab]
  • #8140 visitor log+profile: show campaign details in same depth & format [by @tsteur]
  • #8924 Remove Majestic SEO metrics from SEO widget
  • #8897 Do not fail bulk tracking request if individual request has an incorrect request parameter. [by @diosmosis]
  • #8808 Use current Login auth plugin instead of hard-coded ‘Login’ on the error page [by @Joey3000]
  • #8784 deprecate API method ‘API.getLastDate’ [by @mattab]
  • #8682 Ignore Do Not Track setting for Gnome Epiphany browser.
  • #8662 Always take the minimum number of custom variables from all log tables instead of maximum [by @tsteur, @diosmosis]
  • #8627 Updates Device Detector to 3.4 [by @sgiehl]
  • #8524 New search engines detections [by @sgiehl]
  • #8517 Adds dribble to list of social networks [by @sgiehl, @tsteur]
  • #8202 Visitorlog: show always full url instead of « (url) »
  • #8193 Display permanent notification in admin screen for PHP 5.4 warning about EOL
  • #7903 When the connection to database fails, the API should return a valid response
  • #7902 When Piwik DB needs to be upgraded, the API should return a valid response
  • #8941 Re-add backwards compatibility for URLs using old UserSettings plugin. [by @diosmosis, @mattab]
  • #8738 Additional events in archiving lifecycle [by @andrzejewsky, @tsteur]
  • #8694 Fixing PhpUnit support for windows [by @ThaDafinser, @mattab, @tsteur]
  • #8680 display clear error message in tests if test or fixture has incorrect namespace [by @diosmosis]
  • #8666 Allow plugins to add query parameters to optout form [by @Zeichen32, @tsteur]
  • #8660 In CI plugin tests, print clear error if plugin is not compatible w/ test against Piwik version [by @diosmosis]
  • #8631 New event that allows plugins to archive 3rd party data
  • #8600 When archiving fails with a SQL exception, also output the plugin name in the exception message to help troubleshooting
  • #8598 Use monolog in tracker for logging [by @tsteur, @mnapoli]
  • #7837 Deprecate no longer needed / wanted events [by @tsteur]
  • Bug fixes

  • #8870 Can’t remove first dashboard (idDashboard=1) [by @sgiehl, @mattab]
  • #9045 Allow tracker requests to be manipulated before handled [by @diosmosis, @mattab]
  • #9050 Events > ‘Average event value’ metric is missing from the tooltip
  • #8986 Report metadata API does not sort reports by category correctly
  • #8962 SEO widget: Number of DMOZ entries is zero [by @sgiehl, @mattab]
  • #8919 Do not use less functions in gradient mixins to avoid lessphp failures [by @diosmosis, @mattab]
  • #8871 DB error: 1227 Access denied; you need (at least one of) the PROCESS privilege(s) for this operation [by @mattab]
  • #8866 UserCountryMap: Warning – Invalid argument supplied for foreach [by @sgiehl]
  • #8853 Field ‘location_browser_lang’ doesn’t have a default value In query [by @mattab]
  • #8848 Visitor map: country names with no visits are not translated [by @sgiehl]
  • #8843 Make sure segment value is decoded before sending in HTTP request through angular [by @diosmosis]
  • #8830 Add missing error control operator prefix ‘@’ before ini_set() [by @Joey3000, @tsteur]
  • #8812 Piwik can’t be installed on PHP7 due to the removal of $HTTP_RAW_POST_DATA
  • #8785 Website loading slowly due to Piwik slow reverse DNS query
  • #8740 Title for the widget disappearing after mouse out when Help is open [by @diosmosis]
  • #8735 unclear message when trying to access resource that requires being logged in [by @tsteur, @diosmosis]
  • #8734 Improve filesystem detection for NFS [by @nuxwin, @tsteur]
  • #8730 Web cron should not timeout [by @mattab]
  • #8726 Catch exceptions in ScheduledReports generation so reports will still generate if individual reports fail [by @diosmosis, @mattab]
  • #8722 Tracking outgoing links other than http or https is broken
  • #8707 core:archive infinite loop updating maxmind db [by @sgiehl, @diosmosis]
  • #8630 Campaign tracking via HTTP API does not seem to work [by @diosmosis]
  • #8624 The reporting menu should not use the module= query param in the URL to determine the active menu section [by @diosmosis]
  • #8621 Wrong « Time Elapsed » in core:archive output [by @tsteur]
  • #8597 Ecommerce Tracker may fail with « Integrity constraint violation: 1062 Duplicate entry »
  • #8589 Disable ONLY_FULL_GROUP_BY Mysql mode when creating connection [by @tsteur, @diosmosis]
  • #8580 Notice – Undefined property: Piwik\DataTable\Filter\ExcludeLowPopulation::$columnToFilter [by @mattab]
  • #8572 Custom date ranges are still being archived when –force-periods=day [by @diosmosis]
  • #8559 Improvements and fixes to the archive purging system [by @diosmosis]
  • #8553 curl_exec: Operation timed out after 119908 milliseconds with 4390672 out of 16210130 bytes received. Hostname requested was: builds.piwik.org [by @mattab]
  • #8525 System check diagnostic for « Filesystem » may detect wrong filesystem used [by @mattab]
  • #8509 when using LDAP authentication, tracking api fails to verify token_auth [by @diosmosis]
  • #8484 Segment for page url results in problems with popups with defail-infos
  • #8468 Ajax angular HTTP request are not aborted as expected [by @tsteur]
  • #8413 JS: Uncaught URIError: URI malformed with Chrome/IE11 and ISO 8859-1 Encoding [by @tsteur]
  • #8366 Double escaping in the update error message [by @tsteur]
  • #8323 Custom dashboards and visitor segments: The segment %s is not valid
  • #8216 Single quote/apostrophe in segment value replaced with closing parenthesis on save [by @sgiehl, @diosmosis]
  • #8176 icon missing on expandable rows in report Goals > Goals by Referrers > Campaigns
  • #8099 curl_exec: Operation timed out after 10000 milliseconds [by @mattab]
  • #7983 Row Evolution at Referrer Reports shows 0 visitors on subdatatables [by @tsteur]
  • #7948 Graphs break up in scheduled email reports [by @mattab]
  • #7928 Dashboard fails to load in Firefox with ‘Adblock Plus’ extension
  • #7926 Step « Create tables » of new installation appears untranslated [by @PatchRanger, @tsteur]
  • #7836 Manage Goals shows « Create a new goal » when not having enough permission [by @diosmosis]
  • #7700 SitesManager.getPatternMatchSites returns limited set of sites [by @tsteur, @diosmosis]
  • #7692 Website selector: searching for special strings will show html code [by @tsteur]
  • #7084 Visit Frequency and Visit Overview Widget shows cursor:pointer on hover although nothing happens when clicking [by @sgiehl]
  • #6734 After maximising widget, the widget footer cannot be expanded [by @sgiehl]
  • #8717 Document upgrade/installation procedures for Git checkouts (with composer.phar install –no-dev and git submodule update –init –recursive)
  • Translations and i18n

  • #8957 [automatic translation update] Updated 100 strings in 47 languages (ar, be, bg, bs, ca, cs, da, de, el, es, et, eu, fa, fi, fr, gl, he, hi, hr, hu, id, it, ja, ko, lt, lv, nb, nl, nn, pl, pt-br, pt, ro, ru, sk, sl, sq, sr, sv, ta, th, tl, tr, uk, vi, zh-cn, zh-tw) [by @sgiehl]
  • #8922 [automatic translation update] Updated 131 strings in 37 languages (be, bg, bs, ca, cs, da, de, el, es, fa, fi, fr, hi, hr, hu, id, it, ja, ko, lv, nb, nl, nn, pl, pt-br, pt, ro, ru, sk, sl, sq, sr, sv, th, tl, vi, zh-cn) [by @sgiehl]
  • #8875 [automatic translation update] Updated 349 strings in 5 languages (gl, vi, sq, de, it) [by @sgiehl]
  • #8840 [automatic translation update] Updated 101 strings in 4 languages (cs, es, nl, it) [by @sgiehl]
  • #8803 [automatic translation update] Updated 175 strings in 39 languages (sv, id, it, be, bg, ca, cs, da, de, el, es, et, fa, fi, fr, he, hi, hr, hu, ja, ko, lt, lv, nb, nl, pl, pt, ro, ru, sk, sl, sq, sr, ta, th, tl, tr, uk, vi) [by @sgiehl]
  • #8739 [automatic translation update] Updated 221 strings in 8 languages (lt, cs, sr, de, fr, hi, nl, pt) [by @sgiehl]
  • #8702 [automatic translation update] Updated 242 strings in 17 languages (hi, it, de, el, cs, da, es, fi, fr, ja, nl, ro, ru, sr, sv, ta, nb) [by @sgiehl]
  • #8668 Remove translators email adresses from translation files [by @sgiehl, @mattab]
  • #8602 [automatic translation update] Updated 96 strings in 5 languages (ta, fa, fr, it, pt) [by @sgiehl]
  • #8516 [automatic translation update] Updated 235 strings in 11 languages (pt, cs, hi, nb, sl, it, ja, de, el, fr, lt) [by @sgiehl]
  • #9070 [automatic translation update] Updated 87 strings in 6 languages (ja, nb, de, el, it, pt-br) [by @sgiehl]
  • #9015 [automatic translation update] Updated 236 strings in 43 languages (ar, be, bg, bs, ca, cs, da, el, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, nb, nl, nn, pl, pt-br, pt, ro, ru, sk, sl, sq, sr, sv, ta, th, tl, tr, vi, zh-cn, de) [by @sgiehl]
  • Request For Comments (closed)

  • #8547 Maintaining backwards compatibility for our public APIs in Piwik & our release cycles
  • #8519 New Piwik team page on piwik.org
  • #8278 Announcement: Piwik meetup in Berlin, Germany. You are invited!
  • #7953 How can we merge Pull Requests faster? [by @mattab]
  • piwik/piwik-log-analytics

  • #97 –idsite option seems to be ignored when used with –reply-tracking [by @tsteur, @diosmosis]
  • #96 Replaying piwik.php requests, ignore the invalid requests parameters exceptions (eg. wrong cid) instead of aborting import [by @diosmosis]
  • #95 Add initial .travis.yml for running python tests. [by @diosmosis]
  • #94 Use bulk tracking indices to display the lines of logs that were considered invalid by the Piwik tracker. [by @diosmosis]
  • #93 Add –debug-tracker and –debug-request-limit options to help users and maintainers debug tracking issues [by @diosmosis]
  • #92 Add –log-date-format option for date format in logs [by @diosmosis]
  • #91 Provide better diagnostic tool when Piwik tracker fails when called via log importer [by @diosmosis]
  • #87 Improve documentation for –regex-group-to-visit-cvar –regex-group-to-page-cvar [by @mattab]
  • #83 New option to add download extensions –add-download-extension [by @diosmosis]
  • #72 No filename/lineno on error 400 [by @diosmosis]
  • #67 When cs-host is set, and URL in logs doesn’t have a hostname set, then use cs-host as hostname [by @diosmosis]
  • #48 Execute log analytics tests on Travis [by @diosmosis]
  • piwik/referrer-spam-blacklist

  • #123 Add rankings-analytics.com [by @fvdm, @mattab]
  • #122 Add rednise.com [by @appeltauer, @mnapoli]
  • #121 New referrer: justprofit.xyz [by @mnapoli]
  • #118 Add best-seo-software.xyz [by @ManniGH, @mnapoli]
  • #116 Add seo-platform.com [by @ManniGH, @mattab, @mnapoli]
  • #112 Add qualitymarketzone.com [by @mnapoli]
  • #104 free-floating-buttons.com and hongfanji.com [by @appeltauer, @mnapoli]
  • #101 add video–production.com [by @MaartenPol, @mnapoli]
  • #100 Add sexyali.com [by @kwielo, @mnapoli]
  • #98 Added get-free-social-traffic.com [by @almer-t, @halfdan]
  • #96 Add seoanalyses.com [by @mnapoli]
  • #93 Added chinese-amezon.com [by @daveyjones, @mnapoli]
  • piwik/tracker-proxy

  • #8 If Piwik tracking server is down/unavailable, piwik.php should fail gracefuly, not 505 [by @mattab]
  • piwik/piwik-php-tracker

  • #12 Fixed domainFixup() causing PHP Notice [by @HomerBond005, @mattab]

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