The Piwik development team announces the immediate availability of Piwik 2.0.

This new major release is the result of 7 months of work by the team and community.

What’s new in Piwik 2.0?

  • Our vision is to liberate web analytics by building an open platform which will create innovation in the analytics world.
  • New beautiful theme for Piwik: Morpheus is a flat design theme designed to let you focus on your analytics.
  • Launch of the Piwik Marketplace for Plugins and Themes!
  • Browse and install plugins and themes from within your Piwik, in one click. Maybe you would like to try the new TreemapVisualization plugin?
  • We hope there will be many ‘third party plugins’ available on the Marketplace in 2014 – let us know your ideas or feedback about this.
  • New: Visitor Profile helps you to understand your visitors’ individual behavior by summarizing and listing your visitors’ visits.

The Piwik core developers along with the developers community will continue to release new versions and improve the platform next year.

Updates from Piwik 1.x

Updates from previous versions should work seamlessly, but it may take a while to run the Database schema upgrades.

On large Piwik setups (if your Piwik database is 100Mb size or more), make sure to run the Update Script from the Shell!

After You Update

  • Please use the forums for free support.
  • After the update, if you get a white page or the CSS is not working (Piwik appears black and white), see this FAQ.
  • Contact Piwik Professional Services for Piwik for any enquiry, custom development or to learn more about professional Piwik hosting
  • Help us spread the word about Piwik on your blog, website, twitter, at conferences, and to your friends and colleagues.
    Already 1,000,000 websites have liberated their web analytics but we hope this is just the beginning. Thank you for your support!
  • To improve Piwik in your language consider contributing to translations.

Credits go to the Piwik team for their achievement, as well as our Wonderful sponsors and our Friends.

 

List of all 171 tickets fixed in Piwik 2.0

Major New Features

  • #3942 Theming: Let Artists change the Look and Feel of Piwik!
  • #4127 New Default Theme design for Piwik 2: Morpheus
  • #1816 Add a new column in all reports for % percentage of visits
  • #3089 New « Visitor Profile » report showing all info about a specific Visitor
  • #3710 Anonymize IP should anonymize IPv6 addresses
  • #3124 Make « All Websites Dashboard » usable with 20,000+ websites
  • #4273 Option to use raw IP for more accurate Geo location instead of the anonymized IP
  • #2781 Full support of segmentation for Ecommerce including Goals.getItems* APIs
  • #4300 Make sure Piwik works on IE8+

Marketplace Release

  • #4119 Plugins Marketplace project, available at plugins.matomo.org
  • #4053 Piwik Plugins Marketplace in Core: list, install and manage new Third Party Plugins
  • #4367 Make Plugins and Themes listings clear and beautiful
  • #4342 Create Github webhook for Piwik Plugins to release new versions
  • #4120 Move some core plugins to the Marketplace
  • #4077 New Treemap Visualization plugin
  • #4081 New LeftMenu plugin which move the horizontal menu to a vertical one

Core Platform Upgrades

  • #3741 Upgrade Piwik 2.0 codebase to PHP 5.3
  • #4059 Convert Piwik classes (core + plugins) to use PHP Namespaces
  • #4019 Migrate our templating engine from Smarty to Twig
  • #4052 Migrate CSS to LESS for easier Theming (eg. Color customization refactored)
  • #4134 Review list of Event names, Piwik 2 plugin hooks
  • #4086 Convert Translations files of core and plugin to use simple json format
  • #3960 Update jQuery / jQueryUI & jqPlot
  • #4131 Check Piwik 2.0 runs well on WAMP
  • #4202 Remove all files called functions.php and use static helpers instead
  • #4208 Use Singleton parent class app-wide
  • #4265 Increase minimum PHP version required to 5.3.2
  • #4278 refactor ArchiveProcessor & Plugins Archiver mechanism
  • #4288 Update TCPDF to latest version
  • #4310 Make it easier to profile via XHProf
  • #4188 Remove Zend_Registry from Core/Plugins
  • #4113 Remove compat code for PHP older than 5.3

Tests & QA

  • #4087 New Screenshot tests for Continuous User Interface Testing
  • #4225 Run Piwik.js javascript tests on continuous integration
  • #4233 Enable Continuous Integration on MYSQLI

Start of Developer Guides Project

  • #4266 New site developer.matomo.org for listing Piwik Platform Developer docs
  • #4279 Migrate dev docs from piwik.org to developer.matomo.org
  • #4122 Provide useful Plugin Developer Documentation
  • #4200 Create Framework Documentation for developers (php source code doc)
  • #4199 Document Hook Events for plugin developers
  • #4194 Automatically generate PHP Source code documentation for developers (classes, methods)
  • #3994 Update ExampleUI plugin with latest widget APIs

Plugins Framework

  • #4223 Separate Active plugins from Inactive plugins in the Plugins page
  • #4128 Plugin metadata in piwik.json file
  • #4121 Piwik Plugin files generator to easily create your first plugin!
  • #4041 Allow plugins to define new Visualizations and custom ViewDataTable
  • #1673 Allow plugins to bundle unit tests files
  • #3317 Plugins API: let plugins customize datatable footer icons
  • #4126 Let Plugin developers easily store Settings and customize them via UI
  • #4179 New Notification service: Let Plugin developers easily output info, notice, warning, error messages on screen
  • #4151 Plugins define translations they need as a hook: Remove _js hack!
  • #4204 Let Plugins define Schema changes
  • #4241 Let Plugins add new Console Tasks
  • #607 Add link to install a plugin by uploading the .zip file
  • #546 Add link to uninstall a plugin
  • #4226 Publish plugin « TreemapVisualization » on the plugin marketplace
  • #4222 Publish plugin « SecurityInfo » on the plugin marketplace
  • #4227 Publish plugin « VisitorGenerator » on the plugin marketplace
  • #4285 Move PleineLune to Marketplace

Bugs fixes & improvements

  • #4040 Allow ViewDataTables to be rendered via metadata alone
  • #4123 Fix all Phpstorm php warnings in Inspection tool
  • #4261 Detect clicks from Adwords as Referrer = Campaign and set the keyword to the host website that sent the visitor
  • #4125 NON BREAKING API CHANGE: Plugin Referers now called Referrers
  • #4219 NON BREAKING API CHANGE: Plugin PDFReports now called ScheduledReports
  • #2270 Faster Date Ranges: should use Year archives when period contains a full year
  • #4229 New config setting: disable Marketplace feature
  • #4254 [Marketplace] Add API to return developer information
  • #4338 Enable Plugins Marketplace menu in Piwik
  • #3974 DevicesDetection breaks Seamonkey browser recognition
  • #3989 Fix segmentation using ‘deviceType’ segment
  • #3991 Missing Device Brand icons
  • #4132 desktop vs mobile report user gets notice « No data for this graph »
  • #4149 Bug: When adding urls to a site the german umlauts are not handled correctly
  • #4187 Evolution of date range fails to export data
  • #4209 remove outdated code from Example* plugins
  • #4220 OPcache breaks update
  • #4054 Move Plugin getInformation() function call to piwik.plugin.json file
  • #4195 Zambian kwacha ISO code was changed
  • #3786 MultiSites.getAll: Add option to not remove sites that have no visits
  • #3405 when archive.php is run multiple times, each concurrent run should archive different websites
  • #3452 Error: Class ‘Piwik_UserCountry_LocationProvider’ not found
  • #4143 Disable all third party plugins after update to 2.0
  • #2621 UserAgentParser.php: use actual IE version instead IE7 when in compatibility mode
  • #4072 Set User-Agent for import_logs.py
  • #4094 show city instead of GPS (lat/long) in visitor log
  • #4242 Plugin documentation generator – add support for inline tag link
  • #4244 Hook documentation generator – add links to classes and methods in the developer guides and auto generated docs
  • #4247 Customize the javascript tracking tag via getJavascriptTag API call parameters
  • #4248 Improve accuracy of visit count attribute and segment
  • #4256 Replace existing feedback messages with Notifications
  • #4292 developer.matomo.org improvements
  • #4309 archive.php new parameter –force-idsites=1,2,n to process archiving only on the specified idsites
  • #4316 archive.php new parameter –skip-idsites=1,2,n to skip archiving for specified idsites
  • #4325 New hook to let plugins change the attributes for a website
  • #4326 Add new ‘type’ column to piwik_site table, defaults to ‘website’
  • #4341 Console command to generate unit tests or integration tests for a Plugin
  • #4343 Make Visitor log look good when viewed a s widget in the dashboard
  • #4349 New segment filter type: custom events name, category, action
  • #4368 Support transparent background custom logos
  • #2335 Metadata filter_truncate slightly buggy: « Others » shows as « Othersh » in the VisitTime output
  • #2885 New search engines
  • #3074 Date Range is not correctly recognized in Metadata API
  • #3549 « & » characters are transformed to « & » in pagetitles of tracked goals when editing them
  • #3781 getUserPreference bug: « defaultReport » preference is « false » by default
  • #3884 Report Visits Summary, Weekly report shows last Day’s summary
  • #3943 Evolution graph fails to load and returns stack trace for Actions.getPageUrls
  • #3964 Piwik detects Opera 15 as Chrome 28
  • #3967 false province name on the austria map
  • #3970 API method API.getBulkRequest converts whitespace to HTML entities
  • #3973 Wrong message text when deleting a widget (sometimes)
  • #3975 Incorrect define() signature
  • #3988 iPod Touch – DeviceType
  • #3995 check website name is url decoded
  • #4000 FAQ: Bad default value for proxy_host_headers[]
  • #4005 archive.php outputs messages when pre-processing segments
  • #4007 Dashboard Suggestions
  • #4009 Make PDF Reports Truncation limit configurable in config file
  • #4011 Creating a segment using the visitor IP « visitIp » should work for users with ‘view’ access
  • #4028 no data with selected « date range » and flat table
  • #4035 Bug when exporting report
  • #4044 Problem with API method Live.getLastVisitDetails and filter_offset
  • #4045 import_logs.py autodetection hangs
  • #4047 Remove the /.git test in the System Check file integrity
  • #4049 Do not report visits from Google PageSpeed-Insights
  • #4076 Segment editor visitor IP range as filter
  • #4079 Wrong argument substitution in spanish translation
  • #4082 Tracking code has double slashes
  • #4097 Add Vimeo and YouTube to SocialNetworks
  • #4098 Add video.search.yahoo.co.jp to Search Engines
  • #4099 missing info popup at visitor log
  • #4107 Installation is broken when trying to re-use tables
  • #4135 Properly handle bulk tracking
  • #4217 PiwikTracker should load the visitor ID from the first party cookie if available
  • #4260 Make campaign name and campaign keyword lowercase when tracking
  • #4239 Set first party client cookies from PiwikTracker.php to improve dual JS-PHP tracking and data accuracy
  • #4140 Notice on bulk import when authenticateSuperUserOrAdmin is called
  • #4141 Bulk import API
  • #4148 Actions > Downloads exports only combined statistics per site, it should be possible to export statistics per file
  • #4150 Actions > Downloads flattening or aggregating reports with lots of date results in: There is no data for this report.
  • #4156 MySQL Warning: Statement may not be safe to log in statement form
  • #4163 error when creating an email-report with a Custom Segment as a normal user (works for admin)
  • #4186 Archive.php triggered multiple times simultaneously can result in mysql deadlock situation
  • #4191 UpgradePHP json_decode doesn’t work for assoc = TRUE
  • #4203 fields config_os_version and config_device_type are not large enough
  • #4206 GD with JIS-mapped Japanese Font Support
  • #4235 Detect windows 8.1
  • #4237 Segment attribute not kept during live widget updates
  • #4250 Visit summary graph is cached in mail client
  • #4263 geoip DB automatic update doesn’t respect update period
  • #4264 When embedding the custom dashboard and using &token_auth the sparklines should also work
  • #4267 import_logs.py: ValueError: invalid literal for int() with base 10: ‘-‘
  • #4272 Problem in archive script
  • #4274 visitor-Profile: « location » bug + enhancement
  • #4276 Campaign Reports don’t work with IE8
  • #4296 User profile slowness in getAdjacentVisitorId()
  • #4332 archive.php should only process websites which exist
  • #4334 « wait » meesage sometimes partically hide
  • #4340 Integrity constraint violation: 1062 Duplicate entry ‘XYZ’ for key unique_idsite_idorder In query: UPDATE piwik_log_conversion
  • #4352 import_logs.py crashes on invalid requests
  • #4317 visitor log: not enough room, icons overlap when ecommerce conversions
  • #4063 « Notice: Array to string conversion » when downloading CSV or TSV files from Visitor Log in 1.12
  • #4366 Message for THEME activation talks about PLUGIN
  • #2608 Allow bar graph as well as line graph
  • #3917 API request Referers.getUrlsForSocial fails with idSubtable
  • #3965 Visits over time Graph fails to load with 3 metrics
  • #4006 SecurityInfo Plugin: Cannot get rid of warning
  • #4014 Generating scheduled reports fail for date ranges
  • #4022 Opt-out/in iframe code is not following HTML standard
  • #4313 API Bulk Requests: invalid output when multiple dates and format is xml
  • #4012 Segment Editor should work to list segments in IE8

ps: we thank Edward Snowden for his honesty and courage in blowing the whistle about the surveillance state (read more).