We are proud to announce Matomo 4.0.0-beta2: a new major beta release of Matomo Analytics!

What’s new?

Matomo 4.0.0 has been in the making since January 2020 and we’re proud to finally release this first public Beta. (it is called beta2 because we have skipped the beta1 release).

There are many changes, including security and privacy improvements and other breaking changes, most notably:

  • Matomo 4.0.0 requires PHP 7.2.5 (better security and performance)
  • Log importer now requires Python 3.x (Log analytics)
  • Auth tokens used to authenticate API calls now need to be generated, and can be revoked. Any existing token_auth in Matomo 3.x will be migrated so any token_auth you already use will still work
  • Page generation time metrics are now deprecated and replaced by new Page Performance reports
  • Database tables will now use UTF8 encoding (utf8mb4) which means for example that emojis will now be correctly tracked in URLs. Existing Matomo 3.x databases will need to be converted to utf8 manually.
  • Older browsers like IE6 or IE7 are not tracked anymore by the JS Tracker (browsers that don’t support JSON API)
  • IE 10 browser is not longer supported in the Matomo App user interface (IE 10 is still supported and tracked in JS Tracking)
  • Support for Offline tracking in JS Tracker (beta)
  • LoginHttpAuth plugin is no longer supported (we welcome someone to fork & maintain the plugin in the future)
  • Page titles, event names, event category, page URL, etc. are now truncated after 4096 characters (more info)
  • Security: More secure storage of tokens: the `token_auth` and session ID are no longer stored in plain text in the database.
  • Security: When embedding reports (widgets) into a different site, it is no longer possible to use authentication tokens of users with at least write access (more info)
  • Segments: “Not contains” and “Not equals” segment comparison now behave differently (more info)
  • PHP tracker client: exceptions are now thrown on errors (more info)
  • If you use the JavaScript API, or the Reporting API, or if you build plugins for Matomo, please check the developer changelog for a full list of changes in the platform that may affect you.

We are grateful for all community members who reported feedback and suggestions, our awesome team of translators for their work, and our Premium features customers and Matomo Cloud hosting customers for their amazing support.

276 tickets have been closed by more than 23 contributors!

To upgrade to this beta version, you can configure the beta release channel in a few clicks and easily upgrade.

After You Update

  • Please help us spread the word! Maybe you can write about the project on your blog, website, twitter, talk at conferences or let your friends and colleagues know what is Matomo. Already 1,000,000+ websites are keeping full control of their web analytics with Matomo!
  • Use the forums if you have any question or feedback (free support),
    or purchase a Support Plan to get professional support and guidance.
  • To improve Matomo in your language consider contributing to translations.
  • You can also support our efforts by purchasing valuable Premium Features for Matomo or try our Matomo Cloud solution.

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 Matomo guide for high traffic instances.

Downgrading to Matomo 3

After an upgrade to Matomo 4, it may be possible to downgrade again to Matomo 3 if needed by following instructions in this FAQ.

Platform Changes

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

In this 4.0.0 release there are many changes to the API. There are Breaking changes in Matomo JS tracker, Deprecations in Matomo JS tracker, Recommendations for Matomo JS tracker, Breaking changes in HTTP API, New PHP events, Breaking changes in PHP events, Removed methods and constants in PHP Plugin API, New APIs, Other Breaking changes.

Read more about all changes to the platform and APIs including breaking changes in Platform Changelog for Developers.

Note: the Marketplace showcases more than 64 plugins already compatible with Matomo 4 and this is just the beginning. All plugin authors are encouraged to make their plugins compatible with Matomo 4.0.0.

New and updated SDKs (Tracking API Clients)

The Matomo team offers official SDKs (Tracking API Clients) for measuring your mobile apps and any other kind of apps.

Need help upgrading Matomo?

Read the Updating Matomo user guide or for more help contact the Matomo experts.

List of 276 tickets closed in Matomo 4.0.0-beta2

    matomo-org/matomo
  • #6559 Add support for app specific passwords (create and revoke token_auth) [by @tsteur]
  • #12811 Activate DB-Ip support by default for all users [by @sgiehl]
  • #8790 Tracking API: track Emoji correctly in page URLs and others [by @sgiehl]
  • #11974 Allow plugins to generate their reports using historical data (eg. Custom Reports) [by @diosmosis]
  • #12653 Provide more insights into page performance metrics [by @sgiehl]
  • #13202 Show “browser” report in goal by dimension report, view conversion rates by browser [by @tsteur]
  • #13153 Add “Movers and shakers” widget to the default dashboard [by @tsteur]
  • #13681 JS Tracker: enable alwaysUseSendBeacon by default [by @tsteur]
  • #13462 Offer possibility to sync JavaScript tracker with any CDN (new community plugin TrackerJsCdnSync)
  • #14535 log_visit.referer_url and log_action.name as TEXT instead of VARCHAR cause a lot of tmp table on disk [by @tsteur]
  • #16192 Add new dimension and segment whether cookies were used or not: “Profilable” [by @tsteur]
  • #8100 Reporting API: remove the PHP serialization response format [by @sgiehl]
  • #8566 Reporting API: Make json2 format the default json format (potential BC break) [by @diosmosis]
  • #11524 Disable Custom Variables feature by default [by @sgiehl]
  • #13613 Drop support for IE 10
  • #15237 When DB user doesn’t have the ‘CREATE TEMPORARY TABLE’ grant, display a clear error message [by @katebutler, @sgiehl]
  • #15889 allow invalidating plugin archives only and archiving past data for plugins [by @diosmosis]
  • #4171 Minimise token_auth exposure, hide token_auth from html responses
  • #12961 update frontend libraries like jquery [by @diosmosis]
  • #14954 Translate the “Asking for consent” page [by @maxpereira, @sgiehl]
  • #6265 Content-tracking: I want to be able to disable piwik.php redirect and instead use the link tracking 500ms solution. [by @tsteur]
  • #16362 Custom opt out screen should not imply tracking consent given
  • #15681 Check that all Matomo cookies are set with the secure flag [by @tsteur]
  • #13582 Referrer name should allow more than 70 characters (up to 255 characters) [by @sgiehl]
  • #13611 Drop support for PHP 5.x, Require PHP 7.2
  • #15396 Remove LoginHttpAuth submodule [by @tsteur, @sgiehl]
  • #15736 New page performance reports [by @sgiehl]
  • #15774 Track seconds instead of days for “days since” dimensions [by @diosmosis]
  • #16095 New log importer (log analytics) now only supports python3 [by @diosmosis]
  • #16265 Custom Dimensions available and activated by default
  • #15440 in Visitors>User IDs, opening a Profile for a given User ID shouldn’t show other visits from User IDs who shared the same computer
  • #15619 Prevent server gone away error in CronArchive [by @tsteur, @sgiehl]
  • #13754 When looking at Yesterday’s data, and there is data for today, notify users to try to look at Today [by @tsteur]
  • #12767 When a user opts-out, do not send any tracking requests to the Tracking API
  • #13042 Set higher expiry time for the “Ignore tracking” cookie [by @tsteur]
  • #13056 JS Tracker: Add possibility to turn cookies back on, enableCookies [by @tsteur]
  • #15182 When signing up for the Matomo newsletter, clarify In the privacy notice that emails are processed by Madmimi [by @sgiehl]
  • #16017 Do not generate crossdomain link when cookies are disabled [by @tsteur]
  • #9785 Make Matomo database use utf8mb4 collation by default [by @sgiehl]
  • #13357 Use random_bytes() instead of uniqid/md5 in Common::generateUniqId() for improved security [by @katebutler]
  • #15313 JS Tracker: set secure flag for _pk_testcookies
  • #15390 Store session ID hashed in the DB [by @tsteur]
  • #16169 Improve host validation: now using the SERVER_NAME and no longer the HOST header [by @tsteur, @diosmosis]
  • #16263 Only allow widgetize and token usage for view users [by @tsteur]
  • #16264 When embedding reports (widgets) into a site, it is no longer possible to use authentication tokens of users with at least write access [by @tsteur, @diosmosis]
  • #16389 Make sure the same 2FA token cannot be used twice [by @tsteur, @diosmosis]
  • #11115 Reporting API: apply `hideColumns` recursively to nested values by setting `hideColumnsRecursively=1` [by @mattab, @tsteur]
  • #12575 SQL type FLOAT should not be used for economical data [by @tsteur]
  • #16429 “Back to content” link overlaps with the logo, fix skip-to-content offset [by @Findus23, @tsteur]
  • #13256 Mobile: Icons not fully shown and shown not correctly
  • #14579 JS Tracker: add rtf to list of downloads
  • #15744 Adds INI setting to disable referrer spam blocklist [by @john357smith, @sgiehl]
  • #15845 Tracking of visitors without JavaScript (image beacon) does not work with strict referrer-policy [by @tsteur]
  • #15931 Add more information to system check and be able to copy/paste for debugging purposes [by @tsteur]
  • #15999 Track ecommerce views as new dimensions instead of custom variables [by @sgiehl]
  • #16197 Make it possible to detect other clients than Browsers [by @sgiehl]
  • #16288 prevent vacation messages in response to Email reports [by @Findus23]
  • #16302 New feature to exclude tracking requests via config file: INI setting exclude_requests [by @tsteur]
  • #16386 System check: Add Matomo Version History and download feature [by @tsteur, @diosmosis]
  • #16446 Do not index the opt out iframe in search engines [by @tsteur]
  • #8505 Visitor map shows info icon but no tooltip when there is no data [by @sgiehl]
  • #15247 Don’t lock log_visit table to check if privilege is granted [by @tsteur]
  • #15492 New INI setting delete_logs_unused_actions_max_rows_per_query useful for speeding up deletion process for very large sites [by @toredash, @tsteur]
  • #15875 Row Evolution PopUp opens after Visitors Log Popup Closed [by @sgiehl]
  • #15887 Improve performance/memory of archive selection [by @tsteur, @diosmosis]
  • #15986 Tracker API speed: avoid DB query when recording historical data or other authenticated tracking requests [by @tsteur]
  • #16092 Allow configuration of a shorter lock wait time in tracker mode (new INI setting innodb_lock_wait_timeout) [by @tsteur, @diosmosis]
  • #16473 Manage Dimensions: Sorting by ID is not numeric [by @nina-py, @tsteur]
  • #5341 Move Provider plugin to the Marketplace [by @tsteur]
  • #15601 Fix VisitorFrequency.get API for idsites=all [by @sgiehl]
  • #15974 update php-di to latest version 6.x [by @sgiehl]
  • #15980 JS Tracker: require category and action in trackEvent [by @Findus23, @tsteur]
  • #16031 Get all our plugins and premium plugins to pass w/ updated frontend libs [by @diosmosis, @tsteur, @sgiehl]
  • #16087 wrong escaping of cookie path [by @MichaelHeerklotz, @diosmosis, @tsteur]
  • #15979 no cut-off icons in DataTables [by @Findus23, @sgiehl]
  • #16238 Segmented Visitor profile: Layout breaks when zooming out
  • #16354 properly align pre code [by @Findus23, @sgiehl]
  • #16428 split disabled PHP functions to not break table layout [by @Findus23, @tsteur]
  • #11572 Document adding Custom JS to tracker via tracker.js / tracker.min.js on https://developer.matomo.org/guides/enrich-js-tracker [by @tsteur]
  • #16148 Sort Custom dimensions in reporting page alphabetically [by @sgiehl]
  • #12739 doTrackGoal() in the PHP API should return success or failure response, not tracking GIF [by @tsteur]
  • #15269 Make segment title clickable and add segment definition to tooltip. [by @diosmosis, @tsteur]
  • #15444 When closing a popover, leave opened any previously opened popover [by @sgiehl, @tsteur]
  • #15556 Empty auto complete results in segment editor when changing the segment [by @tsteur, @sgiehl]
  • #15571 Match white label preview background with customised colour
  • #15607 Update Intl translations to CLDR 36 [by @sgiehl]
  • #15828 add a more helpful info to the default matomo.php output [by @Findus23, @tsteur]
  • #16119 “Password changed” e-mail notification wording doesn’t make sense
  • #15857 Update codebase doc blocks with new name Matomo [by @sgiehl]
  • #16030 Update individual libraries through npm [by @diosmosis]
  • #16032 replace other libraries in libs/ and in plugin directories w/ npm packages
  • #16165 Matomo 4 first beta release
  • #11086 Make interaction_position and visit_total_interactions MEDIUMINT to prevent Numeric value out of range: 1264 Out of range value for column interaction_position / visit_total_interactions [by @mattab, @tsteur]
  • #12067 Replace Bower (and libs/) with npm [by @diosmosis]
  • #12072 Site Search tracking should not use Custom Variables [by @katebutler, @sgiehl]
  • #12114 JS Tracker: Prevent possible infinite loop when page is unloading [by @yossicohn, @tsteur]
  • #12124 Rename `log_link_visit_action.interaction_position` to eg `pageview_position` [by @sgiehl]
  • #12832 UI_CONTROL_MULTI_SELECT does not work as expected
  • #13604 Rename CustomPiwikJs plugin to CustomMatomoJs (or CustomTrackerJs) [by @sgiehl]
  • #14094 Change “days since last …” dimensions to save second duration instead of days and compute in PHP [by @diosmosis]
  • #14841 use a modern PHP library for sending emails and SMTP [by @diosmosis, @sgiehl]
  • #15117 Refactor cron archiving for simplicity [by @diosmosis]
  • #15709 year is incorrectly counted in GDPR Overview [by @tsteur]
  • #15125 Add support for up to 4 fields to multipairfield [by @MichaelHeerklotz, @sgiehl]
  • #15248 Make BulkTracking plugin always activated [by @katebutler, @tsteur]
  • #15370 Save concatenated less file on compiling error so we can better debug issues. [by @diosmosis, @tsteur]
  • #15472 Use safemode when running CLI commands [by @diosmosis, @tsteur]
  • #15503 Removes deprecated console param –piwik-domain [by @sgiehl, @tsteur]
  • #15508 Fix archiving with console on SELinux: use `ps x` instead of `ps ex` [by @leftmostlane, @tsteur]
  • #15836 Refactors the way segments are configured in dimensions [by @sgiehl]
  • #15847 Document how to use Dependency Injection
  • #15866 Removes deprecated event Live.getAllVisitorDetails [by @sgiehl, @diosmosis]
  • #15957 Allow using matomo prefixed parameters for campaigns such as matomo_campaig/mtm_campaign [by @sgiehl, @diosmosis]
  • #15998 Date factory test when date object is passed [by @tsteur]
  • #16001 Remove code tagged with `@deprecated` [by @tsteur, @sgiehl]
  • #16261 Document new archiving process [by @diosmosis]
  • #16337 Let plugin developers modify the password confirmation view: new Template.confirmPasswordContent event [by @dominik-th, @tsteur]
  • #10733 Transition plugin can’t handle named characters in URL [by @sgiehl]
  • #11068 Make sure users with an older PHP can’t upgrade to Matomo 4 [by @tsteur]
  • #12035 Ecommerce Product average price may be incorrect, review implementation without using Custom Variables [by @katebutler, @sgiehl]
  • #12227 Content tracking doesn’t track interaction correctly when using multiple trackers but track as outlink
  • #13417 multi_server_environment INI setting should disable update via GUI module but it doesn’t [by @tsteur]
  • #13785 Segments using “Event category is not X” or “Page URL does not contain” etc. will list visits with these actions in the Visits log [by @sgiehl]
  • #14308 Visitor Profile with more than 100 visits shows negative visits
  • #14362 csv export for VisitsSummary.getVisits with idSite=all and non-superuser not working [by @sgiehl]
  • #14485 A fatal error occurred – The string to escape is not a valid UTF-8 string [by @sgiehl]
  • #14934 JS Tracker: trackEvent bug, event value is truncated [by @tsteur]
  • #14978 JS tracker: visitor cookie is set before configuration [by @tsteur]
  • #15193 Compare to: previous year (day) goes back two years [by @sgiehl]
  • #15194 Compare to: previous year always returning a range [by @sgiehl]
  • #15264 Check site permission should check if site actually exists [by @tsteur]
  • #15307 Visits log fails without any error [by @tsteur]
  • #15385 String not loaded in javascript while Feedback plugin is disabled
  • #15458 Update davaxi/sparkline composer dependency [by @sgiehl]
  • #15506 Ensure to only show enabled reports in “Goals By” view [by @sgiehl, @tsteur]
  • #15518 fix: change description for segments visitEndServer* [by @toredash, @tsteur]
  • #15529 Content interaction tracking fails if banner is enclosed by A element with external link
  • #15534 Missing crossorigin attribute in manifest link [by @tsteur]
  • #15647 Reporting API – API.get calls may return zeroed data instead of empty [by @sgiehl]
  • #15775 Fix error in InvalidateReportData command on PHP 7.4 [by @sgiehl]
  • #15781 “Last Successful Archiving Completion” is missing command “console”
  • #15805 Fix comparing segments doesn’t work with condition startsWith [by @john357smith, @sgiehl]
  • #16072 The display problem of piwik-siteselector in asia language environment [by @sgiehl]
  • #16172 Fix behaviour for segments using “not equals” or “not contains” on an action dimension [by @sgiehl, @tsteur]
  • #16249 SQL error: Data too long for column ‘user_id’
  • #16270 Bug: Copying a dashboard to another user – special characters are being urlencoded [by @sgiehl]
  • #16281 Make sure confirmPassword uses the currently active login plugin, not always “Login”. [by @diosmosis, @tsteur]
  • #16294 Warning in sparklines: Argument 1 passed to Piwik\\Plugins\\CoreVisualizations\\Visualizations\\Sparkline::ensureValuesEvenIfEmpty() must be of the type array, boolean given [by @sgiehl]
  • #16341 Use relative URLs for svgBasePath so proxy url doesn’t need to be configured to make real time map work [by @tsteur, @sgiehl]
  • #16358 Marketplace search broken in Reports
  • #16466 Do not cache core updater oneClickUpdate page in browser [by @tsteur]
  • #16475 Replaced ‘Piwik’ with ‘Matomo’ in console output when creating extra Custom Dimensions [by @nina-py, @tsteur]
  • #8415 Update our Develop guides for Matomo 4.0.0 [by @tsteur]
  • #12073 Document how plugins can extend Visitor Log and Visitor Profile [by @sgiehl]
  • #15574 Make all GDPR pages translatable [by @sgiehl]
  • #15973 add missing link to consent help page [by @Findus23, @tsteur]
  • #13471 Tracking API: fail with an error when wrong authentication provided when sending custom ip address (instead of using the sender’s ip address) [by @tsteur, @sgiehl]
  • #9253 UI tests on Travis do not execute UI tests of submodules [by @diosmosis, @sgiehl]
  • #13301 IgnoreCookie: added support for cookie_domain and ignore cookie signature [by @MichaelHeerklotz, @tsteur]
  • #13547 Remove user alias from database [by @tsteur]
  • #13957 Remove GeoIP Legacy Implementation and switch users to Db-ip [by @sgiehl]
  • #14342 Restrict open-ended require to the major Matomo version it defined [by @sgiehl]
  • #14553 mark BulkTracking plugin as required, not deactivable [by @katebutler]
  • #15115 LoadDataInfile Diagnostics Check is done even in config this setting is disabled [by @sgiehl]
  • #15139 Adds additional system check for CREATE TEMPORARY TABLES permission [by @sgiehl]
  • #15253 Use rebranded composer components [by @sgiehl, @tsteur]
  • #15275 Force using DB sessions once Matomo is installed [by @tsteur]
  • #15286 Refactor search category/count to not use custom variables [by @katebutler, @sgiehl, @diosmosis]
  • #15413 JS Tracker: remove JSON2 [by @Findus23, @tsteur]
  • #15465 Use latest davaxi/sparkline release [by @sgiehl]
  • #15473 Exclude docker files in .gitignore and exclude error_log from the integrity check [by @limitstudios, @tsteur]
  • #15531 Add support for up to 4 fields to multipairfield [by @sgiehl, @tsteur]
  • #15541 Adds translation updates action [by @sgiehl, @tsteur]
  • #15542 Adds action for building tracker js files [by @sgiehl]
  • #15544 Ensure the number of fraction digits is correct [by @sgiehl]
  • #15555 Trigger SafeMode if a plugin update is broken [by @sgiehl, @diosmosis]
  • #15573 Twig 3 upgrade [by @Findus23, @sgiehl]
  • #15581 Update to PHPUnit 8.5 [by @sgiehl]
  • #15586 Removes deprecated class Piwik\Translate [by @sgiehl]
  • #15611 New INI setting to set the absolute path to a PHP binary file in case Matomo cannot detect your PHP binary [by @tsteur, @diosmosis]
  • #15612 Update documentation how heart beat timer works
  • #15615 Make sure “Event Category” is translated in Visits log API outputs [by @mattab, @sgiehl]
  • #15617 Make it possible to run tests against PHP 7.4 [by @sgiehl]
  • #15632 Remove jquery placeholder [by @pebosi, @sgiehl]
  • #15636 Replace jscrollpane with native [by @pebosi, @tsteur]
  • #15649 By default a segment should be visible to all users [by @tsteur, @diosmosis]
  • #15662 Fix void return used and “improve” isLeap in Date [by @tolbon, @sgiehl]
  • #15720 Run tests on bionic distribution & run AllTests with PHP 7.4 [by @sgiehl]
  • #15795 Make sure upgrading from a 3.X or pre- version to 4.X via oneclickupdate works [by @diosmosis]
  • #15813 Fix fatal error when trying to install Matomo when PHP version is too low [by @tsteur, @sgiehl]
  • #15814 Make sure to set cookie name before loading any cookie [by @tsteur, @sgiehl]
  • #15815 Add test to ensure there are no plugin updates for core plugins [by @tsteur]
  • #15818 Prevent possible notice and hiding actual error in debug trace [by @tsteur, @sgiehl]
  • #15919 Bind param values manually since PDOStatement::execute() will assume … [by @diosmosis]
  • #15891 Replace Zend Mail with PHPMailer [by @sgiehl]
  • #15907 Removes Zend_Validate [by @sgiehl]
  • #15956 Remove gears detection [by @sgiehl]
  • #15962 Removes AWS test runner [by @sgiehl]
  • #15989 Removes director detection [by @sgiehl]
  • #16052 Rename Piwik -> Matomo in JS tracker where possible [by @tsteur]
  • #16053 Rename Piwik -> Matomo in cookies [by @tsteur, @diosmosis]
  • #16054 Rename PHP Events that contain Piwik to Matomo [by @tsteur, @diosmosis]
  • #16079 run npm update and include node_modules [by @diosmosis]
  • #16086 Include CustomDimensions plugin in core [by @sgiehl, @tsteur]
  • #16090 Removes CustomVariables plugin from core [by @sgiehl]
  • #16091 Delete segments when a site is deleted [by @tsteur, @diosmosis]
  • #16105 Rename referrer spam list [by @tsteur, @diosmosis]
  • #16162 GeoLite2-ASN Geolocation not working [by @sgiehl]
  • #16163 Make geolocation provider work with isp database only [by @sgiehl, @tsteur]
  • #16181 don’t use create_function() anywhere [by @Findus23, @diosmosis]
  • #16205 Rename composer package to matomo/matomo [by @sgiehl]
  • #16212 Fix language selector in mobile menu is not visible [by @tsteur, @diosmosis]
  • #16216 Delete remembered archived only for one specific site when a site is deleted [by @tsteur, @diosmosis]
  • #16232 Fix escaping in site selection for anonymous user configuration [by @sgiehl, @diosmosis]
  • #16235 Avoid API error if invalid idSubtable is given [by @sgiehl, @tsteur]
  • #16242 Use category display name for segment metadata [by @sgiehl, @tsteur]
  • #16282 JS Tracker: Fix default value of heart beat timer [by @sgiehl, @tsteur]
  • #16291 Link to PHP SDK in Reporting Clients developer doc
  • #16301 url decode value in requestcommand [by @diosmosis]
  • #16313 don’t log silenced errors in php8 [by @Findus23, @tsteur]
  • #16333 show correct transitions info in “Did you know?” section [by @Findus23, @tsteur]
  • #16344 Disable some core updater actions if auto update is not enabled [by @tsteur]
  • #16387 Add more debug information for some specific archiving errors [by @tsteur]
  • #16392 Update/Add documentation about App specific tokens
  • #16401 Documentation generator: remove duplicate assignment [by @l2dy, @tsteur]
  • #16411 Better describe the brute force IP list behaviour [by @tsteur, @diosmosis]
  • #16420 add documentation to the GetLanguage and GetLanguageCode reports [by @Findus23, @tsteur]
  • #16463 Help user configure correct GeoIP DB url by checking for protocol [by @tsteur]
  • #16467 We are hiring a senior PHP and JavaScript software developer (HIRING.md) [by @mattab, @tsteur]
  • #16468 Prevent upgrade error should a plugin get disabled during the Matomo 4 upgrade [by @tsteur]
  • #16478 Remove unused URL parameter from newsletter sign up [by @tsteur]
  • matomo-org/matomo-log-analytics
  • #254 Compatibility with app specific tokens [by @tsteur, @sgiehl]
  • #260 Use new performance metric for server generation time [by @sgiehl]
  • #262 Remove Gears detection [by @sgiehl]
  • #265 Removes director detection [by @sgiehl]
  • #266 add Zabbix and GoogleStackdriverMonitoring agents [by @Neo2SHYAlien, @sgiehl]
  • #267 Python 3 support [by @sgiehl, @diosmosis]
  • #274 always disable queued tracking when sending requests from log import [by @sgiehl, @tsteur]
  • matomo-org/matomo-php-tracker
  • #26 Add methods for custom dimensions [by @sgiehl]
  • #43 POST when using PiwikTracker instead of GET to prevent token_auth showing in access_log
  • #64 Adds method to set page performance metrics [by @sgiehl]
  • #65 cURL error should throw an exception to ease debug [by @sgiehl, @tsteur]
  • #66 Remove Gears detection [by @sgiehl]
  • #67 Removes director detection [by @sgiehl]
  • #68 Track ecommerce views not as custom variables [by @sgiehl]
  • #72 Allow switching between request methods and post token by default [by @tsteur]
  • #79 handle new cookie values now that tracking cookies changed in Matomo 4 [by @diosmosis]
  • matomo-org/tag-manager
  • #210 When publishing a new version, and the version name is auto generated, make sure the update button is active [by @tsteur, @diosmosis]
  • #257 TagManager _mtm dataLayer is an object not an array -> use Array for dataLayer
  • #185 Tag Manager Preview UI tries to encode circular structure as JSON
  • #214 Report Forms variable typo [by @tsteur]
  • #218 Umlauts in Event (category|action|name), probably other fields, too, destroy variable strings in the same field [by @tsteur]
  • #221 Unable to attach event listener to element if theres already an event listener that stops bubbling
  • #230 Tag names are not encoded
  • #248 Matomo Configuration: Using variable in Matomo URL results in validation error
  • #277 JS error in Tag Manager preview mode [by @tsteur]
  • #224 Removes deprecated class Piwik\Translate [by @sgiehl]
  • #235 Fix possible error on PHP 7.4 [by @sgiehl, @tsteur]
  • #238 etracker Configuration update – cookieless tracking by default [by @ben-dw, @tsteur]
  • #240 etracker wrapper function added for single page applications compatibility [by @ben-dw, @tsteur]
  • #243 implements event to define plugins database tables [by @sgiehl]
  • #244 better CSS Selector help [by @Findus23, @tsteur]
  • #251 Ensure a date and period is set even if $_POST might be empty [by @tsteur, @diosmosis]
  • #255 Fail if writing to file fails [by @tsteur]
  • #261 Set idSite on tracker already when creating the tracker [by @tsteur, @diosmosis]
  • #264 Document scroll reach only triggered once [by @tsteur]
  • #274 Fix issue in EtrackerTag.web.js [by @ben-dw, @tsteur]
  • matomo-org/matomo-icons
  • #23 Missing icon for wearable devices
  • matomo-org/device-detector
  • #6341 New devices that are not in Matomo
  • #6361 Add Vercel bot
  • #6364 Detect bots: Vercelbot, Grammarly, Robozilla, Domains Project, Petal Bot, Serendeputy Bot, ADmantX Service Fetcher, Semantic Scholar Bot, Velen Public Web Crawler [by @sanchezzzhak, @sgiehl]
  • #6365 Detect new brands: TurboKids, SQOOL, Jinga, Nomu. Twoe, iTruck, Torex, Doffler and Detect devices for existing brands: Alcatel, Oysters, Kyocera, Telego, ArmPhone, Karbonn, Majestic, E2, Digma, Megafon, Highscreen, Kivi,Turbo-X, 4Good, Jiay, NUU Mobile, Oukitel, Navon, Essentielb, Huawei, Turbo, Vestel, Ergo, MLS, HTC [by @sanchezzzhak, @sgiehl]
  • #6370 feat(device) detect Samsung GALAXY Note 20 5G [by @pongee, @sgiehl]
  • #6371 Added a few Android devices [by @GregOriol, @sanchezzzhak]
  • #6372 Roblox Android App with unusual User Agent Format
  • #6373 Added Roblox and GOG Galaxy App detection [by @nickperkins, @sgiehl]

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