Tracking funktioniert nicht

Hallo zusammen,

wir haben eine Wordpress-Seite auf der wir Matomo einsetzen. Die Seite ist mehrsprachig und daher unter zwei Domains zu erreichen (englische Version .com) deutsche Version .de.
Zusätzlich setzen wir WP Rockets und ein Cookie-Plugin ein. Der Code zu Matomo wird wie folgt eingebunden:

<script>jQuery(function(){
		var language = document.documentElement.lang;
		if( CLI_Cookie.read(CLI_ACCEPT_COOKIE_NAME)=='yes' && CLI_Cookie.read('cookielawinfo-checkbox-non-necessary') == 'yes')		{
			if( language === 'de-DE') {
				console.log('de');
				var _paq = window._paq || [];
				/* tracker methods like 'setCustomDimension' should be called before 'trackPageView' */
				_paq.push(['trackPageView']);
				_paq.push(['enableLinkTracking']);
				(function()
				{ var u='https://data.xxxxy.de/'; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '3']); 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); }
				)();
			} else if( language === 'en-US' ) {
				console.log('en');
				
				var _paq = window._paq || [];
				/* tracker methods like 'setCustomDimension' should be called before 'trackPageView' */
				_paq.push(['trackPageView']);
				_paq.push(['enableLinkTracking']);
				(function()
				{ var u='https://data.xxxxy.de/'; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '4']); 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>

Obwohl ich auf der Webseite sehe, dass der Code läuft, kommen keine Daten bei Matomo an. Ich habe nun schon verschiedene Dinge ausprobiert, komme aber nicht dahinter warum es nicht geht. Hat jemand eine Idee? Schon Mal vielen Dank.
Beste Grüße
Heiko

Hallo,

Ein kurzer Blick in die JS Console in den Browser-Entwicklertools liefert sofort die Antwort:

Dort, wo dein Code ausgeführt wird, ist CLI_Cookie nicht definiert, wodurch der Rest der Funktion nicht ausgeführt wird.

Korrektur: Das stimmt nicht, ich hatte noch einen Ad-blocker aktiviert, der das Cookie-Consent blockiert hat.

So, dieses Mal sollte es stimmen:

Ich glaube, das Problem liegt daran, wie Javascript funktioniert und dass du den Tracking code in einer jQuery(function () {}) Funktion aufrufst.

Matomo erfordert, dass _paq eine globale Variable ist und somit window._paq immer auf die Variable zeigt.
Du definierst sie aber mit var _paq = nur innerhalb deiner Funktion. Eine Lösung dafür ist also unterhalb der beiden var _paq = window._paq || []; Zeilen

window._paq = _paq;

einzufügen, wodurch das globale _paq auf die Variable mit der SiteID und co zeigt.

Ich kann das nicht testen, aber ich hoffe, dass das das Problem löst.

Hallo Lukas,

Du bist mein persönlicher Held des Tages. 10000 Dank. Nun funktioniert es. Hätte ich alleine niemals lösen könnne. Vielen Dank.
Beste Grüße
Heiko

1 Like