Funktion per Link aufrufen

Mal wieder eine Basic Frage… es gibt zwei Matomo Funktionen die ich per Link aufrufen möchte:

Opt-In: _paq.push([‘rememberConsentGiven’]);
Opt-Out: _paq.push([‘forgetConsentGiven’]);

Beim Opt-Out möchte ich ein Hinweis Feld angezeigt bekommen das der USer sich erfolgreich vom Tracking abgemeldet hat.

Das hier ist mein bisheriger Stand, funktioniert aber nicht :frowning:

<a href="#" onclick="_paq.push(['rememberConsentGiven']); return false;">Opt-In</a>
<a href="#" onclick="_paq.push(['forgetConsentGiven']); return false;">Opt-Out</a>

Hallo Sven, es fehlt noch der Code für das Hinweisfeld. Ganz einfach könnte man das mit einem “alert” machen:

<a href="#" onclick="_paq.push(['forgetConsentGiven']); alert('OptOut geklickt'); return false;">Opt-Out</a>

Danke Peter. Leider wird weder der Cnsen gesett noch der Consent vergessen… Irgendwie funzt da noch irgendetwas nicht. Anscheinend ist der ahref Aufruf schonmal richtig… dann muss ich weiter suchen :frowning:

Das sollte funktionieren, wenn der Trackingcode korrekt eingebunden ist. Dann wird beim Klick auf die Links jeweils ein Cookie gesetzt (Screenshots)

Wenn dann noch der “requireConsent” aufgerufen wird vor dem “trackPageView”, dann wird der Tracking-Request entweder abgeschickt, oder eben nicht: JavaScript Tracking Client: Integrate - Matomo Analytics (formerly Piwik Analytics) - Developer Docs - v3

consent-removed

Ok habe in einer Testinstallation folgendes im Site Header platziert:

<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['requireConsent']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  _paq.push(['rememberConsentGiven']);
  (function() {
    var u="//analytics.sven-esser.de/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '2']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

Das ist der default Code nur um 2 Zeilen ergänzt:

_paq.push(['requireConsent']);
_paq.push(['rememberConsentGiven']);

Daneben habe ich zwei Links auf eine Testseite gesetzt

<a href="#" onclick="_paq.push(['rememberConsentGiven']); return false;">Opt-In</a>
<a href="#" onclick="_paq.push(['forgetConsentGiven']); alert('OptOut geklickt'); return false;">Opt-Out</a>

Wenn ich nun die Seite aufrufe sieht das Ganze so aus:

grafik

Wenn ich nun auf Opt-In klicke sieht es so aus:

grafik

Und wenn ich auf Opt-Out klicke sieht es so aus:

Was mache ich falsch?

Das kann ja nur eine Kleinigkeit sein, vermutlich etwas mit dem angepasstem Trackingcode… oder? Aus irgendeinem Grund wird das Opt-In Ccookie ja nicht gesetzt.

Eine Idee woran das liegen könnte @peterbo?

Auf die Ferne leider nicht so einfach zu sagen. Schick mir gern mal die URL per DM.

@hatschiii

A) if you want to let Matomo remember the consent

Once a user gives their consent, you can let Matomo remember that the user has given consent by simply calling the following method once the user has given her or his consent:

_paq.push(['rememberConsentGiven']);

JavaScript Tracking Client: Integrate - Matomo Analytics (formerly Piwik Analytics) - Developer Docs - v3

Du darfst _paq.push(['rememberConsentGiven']); nicht zum normalen Tracking-Code hinzufügen. Diese Funktion sagt Matomo, dass der Benutzer soeben sein Consent gegeben hat und ab sofort getrackt werden darf.

Ok, so langsam habe ich es Dank Euch beiden verstanden. rememberConsetGiven habe ich nun raus genommen.

Nun nur noch ein Punkt:

Beim Aufruf der Seite (https://test3.dlgo.de) werden direkt die beiden Cookies _pk gesetzt, jedoch nicht das mtm_consent. Erst wenn letzteres gesetzt wird findet das Tracking statt. Problem ist nur, dass vorher schon die beiden _pk Cookies gesetzt wurden. Nach der DSGVO muss der User ja erst zustimmen das Cookies genutzt werden dürfen. Wenn dann vor der Zustimmung Cookies gesetzt werden (auch wenn sie nicht genutzt werden) ist das problematisch.

Wenn _paq.push(['requireConsent']); vor trackPageView aufgerufen wird, werden keine Cookies gesetzt. Die Cookies sind wahrscheinlich von der letzten Aktion noch da gewesen bei der ein Consent erteilt wurde.

Eigentlich nicht, ich lösche in der Testumgebung die Cookies immeer… aber ich cheke dass nochmal schnell

Auf Opt-In & Opt-Out – test3 ist folgender Code im Header:

<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
   _paq.push(['requireConsent']);
	_paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.sven-esser.de/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '2']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

Trotzdem werden vor dem Opt-In die _pk Cookies gesetzt.

Mein Fehler - da scheint es noch ein Problem zu geben:

Hmmmm… seit 2018. Gibtes da noch eine Chance das sich da noch was tut?

Da tut sich sicher noch irgendwas, aber wie es in der Software-Entwicklung immer so ist… Manchmal dauert es ein wenig.

Als workaround könnte man auch “disableCookies” setzen, bis der Consent erteilt wurde.

1 Like

Naja… nach 2 Jahren kann man da schonmal ins Zweifel kommen ob sich da noch was tut.

Wie genau müsste man das machen mit “disableCookie” und werden die Cookies dann gesetzt sobald der Consent gegeben wurde?
Wenn das so einfach mit disableCookie wäre, wäre das ja die Lösung auf die wir seit 2 Jahren warten… oder wo ist der Haken?

Na, mit disableCookies sinngemäß so:

<script type="text/javascript">
  var _paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  if (getCookie("consent")=="") {
	_paq.push(["disableCookies"]);
	console.log ("disableCookies for Matomo");
  }else{
	console.log ("allow Cookies for Matomo");
  }

  _paq.push(['trackPageView']);
..

Wenn Consent erteilt ist, dann setzt du nicht mehr disableCookies.
Beim nächsten Page-Reload-Request, den der Nutzer macht, würden dann die Cookies gesetzt.

Aber: Bloß bekommt er dann eine neue Besucher-ID und wird als neuer Besucher gezählt.
Das Problem habe ich hier schon angefragt:


Und ohne Page-Reload klappt es scheinbar auch nicht wie gewünscht. Siehe hier: