With these changes, the visitor ID no longer gets overwritten by the user ID.
This completely logically separates the user ID and the visitor ID feature.
It also solves problems when using the 3rd party cookie (global visitor id across sites) and user ID at the same time.
These are basically the same changes as in https://github.com/matomo-org/matomo/pull/13620 but without the option to turn the new behavior off, as requested by Matthieu.
He wrote to me in November:
Interesting... we discussed it a while ago and I think the conclusion was that we should unlink these two in core by default. But there were maybe some problems with this which I can't remember (but would be likely noted somewhere on Github). So maybe you could open the PR to do this in core rather than a setting, and we could start to review
Looks good to me and makes sense. Not sure if anything else needs updated @mattab .
For sure we should also change the behaviour in https://github.com/matomo-org/matomo-php-tracker/blob/1.4.1/PiwikTracker.php#L1241-L1245
Looks good to me also, thank you for the PR @MichaelHeerklotz :+1:
I think this comment can then also be removed from the queued tracking plugin settings "Number of queue workers" description:
DO NOT USE more than 1 worker if you make use the UserId feature when tracking see https://github.com/piwik/piwik/issues/7691
HI @MichaelHeerklotz - thanks again for the PR. Would you be able to update the php matomo tracker in https://github.com/matomo-org/matomo-php-tracker/blob/1.4.1/PiwikTracker.php#L1241-L1245 to include the tracker changes in this PR so we can see the overall build results (our tests use the php matomo tracker to track the test data)?
Hello @mattab , I have created PRs for matomo-php-tracker and piwik-dotnet-tracker. I also checked all the other trackers (matomo-sdk-ios, matomo-sdk-android, piwik-java-tracker, etc) and they do not seem to need any changes.
looking forward to this improvement. Currently I "abuse" custom dimension to record the user ID, to keep tracking the visit under same Visitor ID and then will have to access raw SQL data to get what I need.