We are extremely proud to announce Piwik 3.0.0!

What’s new?

Piwik 3.0.0 brings many improvements to Piwik, including a full redesign of the application, security improvements and several major improvements in the core analytics platform and core plugins APIs.

Piwik 3.0.0 is a major step towards making Piwik the most usable and versatile open analytics platform. We have big plans for Piwik for the future and we hope you will continue to support us in our mission, by using Piwik, spreading the word to everyone, maybe donating towards the project, and later by purchasing our services and products (stay tuned for upcoming announcements!).

Also, just to keep you all posted. We, the Piwik creators and core engineers, are no longer related or working with Piwik PRO, and we have founded a new company: InnoCraft which supports Piwik and our mission going forward.

This release could only be possible thanks to our dedication and love for our mission at Piwik, which is “To create, as a community, the leading international open source digital analytics platform, that gives every user full control of their data”.

To learn more about Piwik 3 read our recent posts: Piwik 3: New UI design, API changes, and Piwik 3: Important notes and breaking changes.

287 tickets have been closed by 27 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!

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,

We can help you make the most of Piwik with our various services. Contact the professional Piwik team via Contact Support and we will get back to you.

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.

Need help upgrading Piwik?

Updating Piwik is usually a relatively straightforward process but not always. You will need to schedule the upgrade and notify your users, upgrade the database to the latest schema, ensure all plugins are compatible with the newest version, verify everything is functioning as expected, ensure that no data being tracked was lost while the migration was running, and more. This Piwik 3 upgrade is especially large and complex and can take hours to complete if you have a large database. But don’t fear: if you have issues or need professional expert help, we are here to help.

Contact the Piwik experts to get started and upgrade your Piwik safely.

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 3.0.0 release there are many improvements to the core platform: Breaking API changes, New features, New APIs, New commmands, API deprecations, and a new developer guide.

Read more in Platform Changelog for Developers to see all changes to the platform and APIs.

Note: the Marketplace showcases more than 20 plugins already compatible with Piwik 3, but we think this is just the beginning. Piwik is your universal digital analytics platform!

New guides

Read more about migrating a plugin from Piwik 2.X to Piwik 3 in our Migration guide.

Your Plugins and Piwik 3

Many plugins have been updated to be compatible with Piwik 3 over the last few months. Plugins maintained by Piwik and plugins by InnoCraft are compatible for sure with the latest Piwik version. For all other 3rd party plugins we recommend to go to the Piwik Marketplace, click on a Plugin and then check in the bottom part where it says “Requirements” whether this plugin is compatible with Piwik 3.

Learn more in the FAQ: How do I know whether the plugins I use are compatible with the latest Piwik version?

New Premium plugins for Piwik 3

Some amazing new features are now available on the Marketplace as premium plugins:

And stay tuned as more free and premium plugins will be released in the coming months by InnoCraft and other companies.

List of 287 tickets closed in Piwik 3.0.0

piwik/piwik #10397 Better UI for Piwik 3, more responsive, faster, lots of other fixes [by @tsteur]

#3288 Integer overflow: how to track more than 2 billion actions with PiwiK? [by @mattab]

#7480 API should not prettify labels when requesting period=week with many periods [by @tsteur, @mattab]

#7822 Provide an API for plugins to display (multiple) reports in a page [by @tsteur]

#10380 Piwik 3 requires PHP 5.5.9 [by @tsteur]

#5728 Passwords: use better algorithm than md5 hash, use salts and maintain BC [by @mneudert, @tsteur]

#8224 JS Tracker: Enable by default Downloads and Outlinks tracking of right and middle mouse clicks [by @tsteur]

#6953 Schema changes will take place in Piwik 3.0.0 (for tables log_visit, log_link_visit_action, log_action)

#8449 Support for secondary column support and faster datatable sort [by @tsteur]

#10548 On very high traffic Piwik servers, prevent integer overflow by making auto_increment fields BIGINT UNSIGNED [by @mattab]

#4620 Drop IE8 support in the user interface[by @tsteur]

#10404 Extract the first IP from HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP and HTTP_CF_CONNECTING_IP and HTTP_X_FORWARDED_HOST when there is more than one IP [by @mattab]

#10353 New widget “System summary” [by @tsteur]

#10354 New widget “System check” [by @tsteur]

#10355 New widget “new plugins” / Marketplace [by @tsteur]

#10446 Change font to System Default for better performance and consistency [by @tsteur]

#10589 Updated Piwik 3 icons [by @tsteur, @mattab]

#6421 websites management page shouldn’t reload entire page when site added [by @tsteur]

#2137 PDF/HTML Reports: Expand Actions reports (and some others) by default [by @cbuchli]

#10028 Improved plugins update API and how plugins define and reuse schema migrations [by @tsteur]

#10447 Make it easier to analyze overlay reports by making overlay bubbles’ sizes proportional to the metric value [by @phoob, @mattab]

#8458 Apply default filter_limit to all API calls [by @tsteur]

#6834 Numeric value out of range: 1264 Out of range value for column ‘visit_total_actions’ at row 1 In query

#6741 Add a command to generate a UI test for plugins [by @tsteur]

#10846 Websites manager: Add possibility to exclude URL parameters matching a regular expressions [by @pafgoncalves, @mattab]

#9777 Goal reports: for each Device type, Device name, Device model we now process Goal conversions, conversion rate and revenue [by @sgiehl, @mattab]

#10900 JavaScript Tracker: new option “Track users with JavaScript disabled” and the <noscript> tag is not included by default anymore [by @tsteur]

#10890 Tracking API: when overriding the request datetime with an invalid token_auth, don’t track the request [by @tsteur, @mattab]

#10938 Super User should not be able to see token_auth of other users

#10740 Updates password/token_auth hashing [by @mneudert, @tsteur]

#10931 Prevent directory listing on apache servers [by @mattab]

#10720 During upgrade, copy & pasting SQL queries manually does complete the upgrade -> clarify wording [by @mattab]

#9431 menubar cleanup @ 320px ~ 360px screens [by @tsteur]

#8156 Drop support for PHP 5.4, require PHP 5.5 [by @mattab]

#9100 Half of the dashboard manager dropdown is cut off now due to it’s placement in top controls [by @tsteur]

#4570 Add support for “issues” link to plugin.json and display in Marketplace / Core

#9231 Make all log_* tables fields NULLable to prevent errors “Field ‘X’ doesn’t have a default value” [by @tsteur, @mattab]

#10057 Adds possibility to define a goal description [by @sgiehl, @mattab]

#10098 Improve plugins settings structure [by @tsteur]

#10356 Introduce a new “admin” home page [by @tsteur]

#10385 Add icon for pinned tabs in Safari [by @vekunz, @tsteur]

#10499 Track a unique id for each pageview [by @tsteur, @mattab]

#10523 Let Plugins on the Marketplace offer new geo location providers to complement existing GeoIP provider [by @sgiehl, @mattab]

#10542 Activating a plugin should fail when the plugin has missing dependencies [by @mattab]

#7834 Work always on one idSite in API.getReportMetadata

#7861 Change Widgets API for plugins [by @tsteur]

#8446 A Row implementation that is based on ArrayObject which is faster [by @tsteur, @mattab]

#10567 Improve performance of Visitor Log by tweaking the MySQL query [by @tsteur, @mattab]

#8039 Create a page that lists all available tracker SDKs for “universal” properties

#10179 JS Tracker: Configtrackerpause should not be set to 0 if a callback is used. [by @er314, @tsteur]

#10641 On mobile, in website selector, display the arrow to the right [by @mattab]

#9354 New menu structure for Personal => Manage menu items [by @tsteur]

#7401 when sorting results, make the default secondary column sort ‘nb_visits’ [by @tsteur]

#8180 Remove the core:plugin console command [by @tsteur]

#7880 Make WidgetsList methods non static

#8012 Remove magic quote hacks before 3.0 is released [by @tsteur]

#8143 Use Phantomjs 2.0 for UI screenshot tests [by @tsteur]

#8422 Controller.Module.Action Event is case-sensitive [by @Zeichen32, @sgiehl]

#8460 Improve date & time formats [by @sgiehl]

#8503 Remove deprecated events [by @tsteur]

#8587 Update to PHP-DI 5.0 stable [by @mnapoli, @halfdan]

#8590 Use AngularJS 1.4 instead of AngularJS 1.2 [by @tsteur]

#8819 Make controller actions case-sensitive [by @Zeichen32, @tsteur]

#4923 Latitude and Longitude should use DECIMAL datatype instead of FLOAT [by @mattab]

#8319 Can’t load the same page again anymore [by @tsteur]

#8462 Hash in Piwik frontend URLs should include ? instead of just / [by @tsteur]

#8855 Summary in Visitor Profile does not show details of non-pageviews actions [by @sgiehl]

#9053 visitor log can show visits from the week before before [by @tsteur, @mattab]

#9564 DB field piwik_log_visit.location_provider too small [by @tsteur]

#9565 DB field piwik_log_visit.visit_total_actions too small [by @tsteur]

#9913 DB field name Screen resolution is too small: width and height should not be limited to 9999 pixels [by @tsteur]

#10173 Less compiler changes css value of calc [by @tsteur]

#10289 Tracked resolution of Mac Retina displays is wrong

#10308 alignment broken in movers and shakers widget [by @tsteur]

#10434 Custom Variable values does not allow Page Size change

#10456 Make the updates generated by generate:update command work [by @tsteur]

#10532 Ensure git commands are run in the appropriate directory to prevent “fatal: Not a git repository (or any parent up to mount point /srv)” [by @bkbeckman, @mattab]

#10579 Delete third party UID cookie only when it was found in the cookie jar [by @mattab]

#11012 Piwik should not reload page when applying a segment

#10773 In docs and FAQs, update all mention of “User” menu as there is no user menu anymore in Piwik 3

#10968 Tracking API: accept tracking requests for up to 1 day in the past instead of only 4 hours

#10939 In Personal settings page and API page, only show the full token_auth value on the screen after the user clicked [by @sgiehl]

#10961 Update Bundle of CA Root Certificates for SSL connections [by @mattab]

#4902 Kafka for Piwik

#11023 Make JSON usage in piwik.js a bit more stable and reduce conflict with other libraries [by @tsteur, @mattab]

#11024 Better piwik.js json compatibility [by @tsteur, @mattab]

#11025 Expose JSON property for Piwik custom trackers [by @tsteur, @mattab]

#10991 Fix website measurable type was defining settings and properties for all types [by @tsteur, @mattab]

#10615 when clicking on the Awesome Search form, do not show “No results” until user has typed something and there is no result

#11007 different hints where to put tracking code on website [by @tsteur, @mattab]

#10990 Make sure to trigger Sites.getSites event when a new Site instance is created [by @tsteur]

#10992 Allow custom form types for user, system and measurable settings [by @tsteur]

#10993 Expose some more methods for the Settings API [by @tsteur]

#11001 Make sure to always trigger site event when creating a new site instance [by @tsteur, @mattab]

#11005 Add possibility to set (overwrite) the widgets in a container [by @tsteur]

#10917 always unescape escaped % symbols in translations [by @sgiehl]

#10947 Fix a bug where Piwik returns wrong rows by label [by @tsteur]

#10979 Fix propagateNewPage might not actually load the page [by @tsteur]

#10980 fix visit total time only recorded smallint [by @tsteur]

#10984 http_build_query seems to sometimes use & instead of & [by @tsteur]

#10988 Fix block quotes are not shown correctly in plugin details [by @tsteur]

#10997 Fix idsite html attribute is not set in SitesManager [by @tsteur, @mattab]

#11015 Prevent JS error “Cannot apply style to null” on the Visitor Map when there was no geo data [by @mattab]

#10836 HowTo Disable Heartbeat on Single Page App with multiple siteIds [by @tsteur]

#10870 Scheduled reports: Flatten all the reports [by @mattab]

#10829 Add maxlength attributes to various input boxes [by @sgiehl, @mattab]

#9345 Exit page url is not correct when last action of a visit is a download or outlink

#10735 Visits Over Time widget bug when clicking on current day twice

#10821 Disable Languages Manager in config.ini.php doesn’t disable it [by @sgiehl]

#10850 Pie chart for Length of Visits has caption “30 min” instead of “30+ min” [by @mattab]

#10352 World Map update (Lesotho, Palestine) [by @polyfloyd, @sgiehl, @mattab]

#10371 Show version of piwik at install [by @mattab]

#10547 Allow to install Piwik in database name containing a hyphen “-” [by @wronan, @mattab]

#10668 Add Bandwidth plugin as a submodule [by @mattab]

#10799 Update Marketplace to work with new API [by @tsteur, @mattab]

#10807 Ensure component updated event is triggered even if there is no update file [by @sgiehl]

#10823 Show more ways of how users can donate [by @tsteur, @mattab]

#10824 Better async tracker initialization to not having to use _paq.push [by @tsteur, @mattab]

#10825 Fix a posix function was called that may not exist on the server [by @tsteur, @mattab]

#10828 Move method for setting location provider from controller to api [by @sgiehl]

#10831 Document in changelog all widget URLs API changes [by @sgiehl, @mattab]

#10833 when using a custom logo still display “Piwik” at the end of the page title [by @mattab]

#10845 New PHP API method that lets us know if we segment will be archived [by @tsteur, @mattab]

#10847 Remove deprecated PIWIK_AUTOMATION encrypted token [by @mattab]

#10868 Document new possibility to specify a unix socket for Redis cache [by @tsteur, @mattab]

#8211 PhpStorm code style: switch to PSR-2 [by @mattab]

#7972 Detect monitor.us as a bot

#9105 On the Marketplace show the newest plugins first

#9434 Exclude unneeded files/folders from git packages [by @sgiehl, @mattab]

#10148 Source code: fix some typos [by @stweil, @sgiehl]

#10235 Do not limit max password length [by @blueelvis]

#10295 Deprecated getMock() methods used in tests [by @tsteur, @mattab]

#10455 Remove deprecated events [by @tsteur]

#10468 Introduce new events Updater.componentUpdated, PluginManager.pluginInstalled, PluginManager.pluginUninstalled [by @sgiehl]

#10528 Renamed plugin ExampleRssWidget -> RssWidget [by @mattab]

#10342 Wrong IP extracted from HTTP_X_FORWARDED_FOR when there is more than one [by @mattab]

#10669 Diagnostics: disable warning about File integrity when Piwik is in development mode [by @mattab]

#8565 rename`getListHooksRegistered` to `registerEvents` (keep BC) [by @tsteur]

#10693 Safe mode is not displayed when there is a crash/error in some cases [by @tsteur]

#10703 Updating from 2.16 to 3.0.0b1 fails: piwik_site_setting doesn’t exist [by @tsteur]

#10725 fix min and max event value is summed [by @tsteur]

#10745 When clicking on a related report, the report title in a reporting page should be updated [by @tsteur]

#10683 Our process when we start to work on the next major release of Piwik

#10393 Update SEO Metrics: make all metrics work and remove pagerank which was deprecated [by @pebosi, @tsteur]

#10580 Tweak Overlay bubbles for better readability [by @mattab, @tsteur]

#10696 Make sure safemode is shown in case of fatal error while rendering <head> [by @tsteur, @mattab]

#10697 Mark the 3.0.0 upgrade as a major DB upgrade [by @mattab]

#10710 Improve look of glossary [by @tsteur]

#10713 Fixed GitHub case [by @lipis, @tsteur]

#10731 Warning message in dashboard: Sparklines.php(62) – Piwik 3.0.0-b1 [by @mattab]

#10751 Make sure to create a dropdown menu when there are more than 5 entries in a sub-menu [by @tsteur]

#10764 Named parameters in generic proxy API events [by @tsteur]

#10774 LanguagesManagerTest::testGetTranslationsForLanguages test sometimes fail with ” Exception: unable to save empty or invalid translations” [by @sgiehl]

#10944 Deploy Piwik 3 on the official demo @ demo.matomo.org

#10877 I can’t translate some fields [by @sgiehl]

#10313 segment editor: not enough line height for p,y,… [by @tsteur, @mattab]

#10632 Consolidate “Mid term” and “Long term” milestone into a new “Backlog / Help needed” milestone

#10678 Git workflow for Piwik 3.X and beyond

#10929 Ensure Piwik Mobile still works with Piwik 3

#10960 Trigger JS tracker update when checking for updates [by @mattab]

#10967 Add new marketplace widget and fixed some urls [by @tsteur, @mattab]

#10977 Show support tab in marketplace plugins directly on the right with the other metadata [by @tsteur, @mattab]

#10978 Show Marketplace changelog as link instead of tab [by @tsteur, @mattab]

#10981 Display tooltip introducing Funnels in the goal editor [by @mattab]

#11004 Fix comment for API.getReportMetadata.end event [by @tsteur]

#11011 Fix different hints where to put tracking code on website [by @tsteur, @mattab]

#10911 New visit dimension “total interactions” and new action dimension “Interaction position” and corresponding segments [by @tsteur, @mattab]

#8619 Remove deprecated Piwik\Archive::getDataTableFromArchive() [by @mnapoli, @sgiehl]

#10923 Renamed Content Interaction(s) in Contents plugin [by @mattab]

#10942 Fix a bug in query builder where tables are sorted randomly [by @tsteur, @mattab]

#10863 Delete scheduled report after it was sent as scheduled [by @mattab]

#10922 Updates intl data from cldr [by @sgiehl]

#9096 Make Piwik 3.0 branch master

#10903 Minor tweaks and events in Goals UI [by @tsteur]

#10908 Fix a visualization of a title might not be shown in the dashboard [by @tsteur, @mattab]

#10910 Typo in config setting name “enable_auto_update” [by @mattab, @tsteur]

#8453 Enable auto update of travis.yml once Piwik 3.0 is merged to master [by @sgiehl]

#10940 Make sure to ignore free plugins when checking for license [by @tsteur, @mattab]

#10913 Note: old Piwik 2.x bookmarks no longer working

#9735 List our Goals for Piwik 3.0.0 in the Roadmap and in a blog post

#10599 Remove the “Segment editor was crowdfunded” link on hover, to keep things simpler [by @mattab]

#9806 Summary of how to manage Piwik 2 and 3 + Plugins for Piwik 2 and 3

#10274 deprecate ci-status project and ci-status.com website

#10341 For each Pull request in 3.0.0 milestone, decide whether to work on them/merge or not

#10454 Piwik 3 Blog post about some important changes [by @tsteur]

#10196 Review / merge or close pull requests against the 3.0 branch

#10655 Clarify that we are in enforced LTS mode and will only merge code in 3.x [by @mattab, @tsteur]

#8836 Release 3.0.0-b1

#10810 Release 3.0.0-b2 [by @mattab]

#10871 Release 3.0.0-b3 [by @mattab]

#10945 Release 3.0.0-b4 [by @mattab]

#10965 Release 3.0.0-b5 [by @mattab]

#10974 Release 3.0.0-rc1 [by @mattab]

#10994 Release 3.0.0-rc2 [by @mattab]

#11000 Release 3.0.0-rc3 [by @mattab]

#11019 Release 3.0.0-rc4 [by @mattab]

#10718 [automatic translation update] Updated 520 strings in 9 languages (tr, ar, da, de, es, ko, sq, nl, it) [by @sgiehl]

#10742 [automatic translation update] Updated 395 strings in 32 languages (ko, ar, de, fr, pt-br, sq, bg, ca, cs, da, el, es, et, fa, fi, hi, id, it, ja, nb, nl, ro, ru, sk, sr, sv, ta, tl, tr, uk, vi, zh-cn) [by @sgiehl]

#10809 [automatic translation update] Updated 407 strings in 8 languages (ru, sr, uk, zh-cn, de, es, it, ko) [by @sgiehl]

#10958 [automatic translation update] Updated 103 strings in 45 languages (de, el, fr, it, sq, uk, ar, bg, cs, da, es, et, fi, gl, hi, ja, ko, nb, nl, pl, pt-br, pt, ro, ru, sl, sr, sv, ta, tl, tr, vi, zh-cn, be, ca, fa, he, hu, id, ka, lt, nn, sk, th, zh-tw, lv) [by @sgiehl]

#10915 [automatic translation update] Updated 2210 strings in 52 languages (am, ar, be, bg, bn, bs, ca, cs, da, el, es, et, eu, fa, fi, fr, gl, he, hi, hr, hu, id, is, it, ja, ka, ko, lt, lv, nb, nl, nn, pl, pt-br, pt, ro, ru, sk, sl, sq, sr, sv, ta, te, th, tl, tr, uk, vi, zh-cn, zh-tw, de) [by @sgiehl]

#10690 [automatic translation update] Updated 1111 strings in 50 languages (it, sq, tr, ar, bg, ca, cs, da, de, el, es, et, fi, fr, hi, ja, nb, nl, pl, pt-br, ru, sk, sl, sr, sv, ta, uk, vi, zh-cn, bs, fa, he, hu, id, ko, pt, ro, th, tl, zh-tw, lt, be, is, ka, am, eu, gl, nn, lv, te) [by @sgiehl]

#10853 [automatic translation update] Updated 214 strings in 33 languages (uk, pt, id, ar, bg, cs, da, de, el, es, fi, fr, hi, it, ja, ko, nb, nl, pl, pt-br, ro, ru, sk, sq, sr, sv, tl, tr, vi, zh-cn, et, ta, ca) [by @sgiehl]

piwik/component-cache #13 Use our own, faster arrayCache, compat for Piwik 3 [by @tsteur]

#14 Allow to use unix socket for redis backend [by @deees, @tsteur]

piwik/device-detector #5553 Improve device detection [by @DaimonPl, @sgiehl]

#5557 Remove extra filler in README description [by @719media, @sgiehl]

#5559 Fixed typo for Backlink-Check.de robot [by @King2500, @sgiehl]

#5543 Devices are not recognized as tablets [by @sgiehl]

#5545 LenovoG780 laptop is recognized as smarthpone and desktop and mobile [by @sgiehl]

#5547 Some UAs are wrongly recognized as tablets [by @sgiehl]

#5556 add dorodo browser device nokia [by @sanchezzzhak, @sgiehl]

#5558 Add detection for podcast clients/libraries [by @eteubert, @sgiehl]

#5560 Dell smartphone false-positives [by @sgiehl]

#5561 Fixed inconsistent key name for vendor fragments. [by @TheOnlyAl, @sgiehl]

piwik/piwik-php-tracker #21 Generate a unique pageview whenever a new pageview is tracked [by @tsteur, @mattab]

piwik/searchengine-and-social-list #24 Github > GitHub [by @lipis, @mattab]

#25 dribbble > Dribbble [by @lipis, @mattab]

#26 reddit > Reddit [by @lipis, @mattab]

piwik/referrer-spam-blacklist #535 Add 3-letter-domains.net [by @mouse-reeve, @spmedia]

#537 Add alfabot.xyz [by @juukie, @spmedia]

#539 Add abcdefh.xyz [by @juukie, @spmedia]

#540 Add advokateg.xyz [by @juukie, @spmedia]

#541 Add arendovalka.xyz [by @juukie, @spmedia]

#543 Add biteg.xyz [by @juukie, @spmedia]

#546 Add top10-way.com [by @sgrayme, @spmedia]

piwik/piwik-log-analytics #156 Add pingdom to EXCLUDED_USER_AGENTS list [by @goetzk, @mattab]

We are together creating the best open analytics platform in the world. You can help make Piwik even more awesome by getting involved in Piwik!