Einzelne Seiten vom Tracking ausschließen, wenn Trackingcode zentral in alle Seiten eingefügt wird

Zunächst: Ich habe diese Beiträge zum Thema

https://metager.de/meta/meta.ger3?eingabe=Matomo%20einzelne%20Seiten%20vom%20Tracking%20ausschließen&mgv=f63190a04f00135f1b1a79b2bfc3c895&ua=1
https://developer.matomo.org/guides/spa-tracking

bereits gelesen, kann aber die darin enthaltenen Lösungsmöglichkeiten nicht umsetzen.

In meinem CMS nutze ich einen Pagebuilder, der mir gestattet, ganz bequem den Trackingcode einzufügen. Dies geschieht automatisch in jeder Webseite.
Glücklicher Weise gestattet der Pagebuilder aber auch, in jeder Webseite individuellen JS oder CSS Code einzufügen.

Was mir also fehlt bzw. was ich suche, ist ein Stück Trackingcode, den ich in einen Artikel einfüge und der dafür sorgt, dass der bereits automatisch eingefügte Trackingcode “überschrieben” wird mit der Anweisung, eben diese Seite doch nicht zu tracken.

Gibt es solch eine Lösung überhaupt? – Oder müsste ich alle Tracking-Ausnahmen an dieser zentralen Stelle einfügen, an der derzeit der Trackingcode für alle Seiten definiert wird?


PS: Ich fand noch dieses hier:
https://developer.matomo.org/guides/tracking-javascript-guide

mit dieser Stelle:

// Don't track Outlinks on all clicks pointing to *.hostname1.com or *.hostname2.com
// Note: the currently tracked website is added to this array automatically
_paq(['setDomains', ["*.hostname1.com", "hostname2.com"]]);
_paq.push(['trackPageView']); 

Demnach müsste ich die auszuschließenden Webseiten im “zentralen Matomo-Trackingcode” unterbringen. Es heißt aber im obigen Beispiel, dass dann die aktuell getrackte Website ebenfalls ausgeschlossen würde.
Ich müsste in meinem Fall ausschließen:
https://example.org/modultest-buchungskalender
alle Seiten, die /quickbooking beinhalten
alle Seiten, die /component/osservicebooking beinhalten

Meine Versuche, einen brauchbaren Code daraus zu formulieren, führten aber leider immer dazu, dass dann auf der gesamten Website kein Tracking mehr erfolgte.

Ich bin einfach kein JS Spezi und völlig berufsfremd.


PS-2:
Ich habe es jetzt mal im "zentralen Matomo Trackingcode " meiner Website wie folgt versucht:

   // Experiment Buchungskalender --------------
if (window.location.pathname.match("/modultest-buchungskalender") === false)
{
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
}
if (window.location.pathname.match("/component/osservicesbooking") === false)
{
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
}
if (window.location.pathname.match("/quickbooking") === false)
{
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
}
// Ende Experiment Buchungskalender -----------

und griff dabei auf eine frühere Diskussion zurück, als Besuche im Backend vom Tracking ausgeschlossen werden sollten.
Leider hat der Code keinen Einfluss und verhindert das unertwünschte Tracking nicht.

1 Like

Mit dem Matomo Tag Manager geht das ohne Programmierung.
Dort kannst du beim Trigger z.B. ausschließen, dass eine Seitensicht gefeuert wird.

Den Tagmanager habe ich noch nie benutzt. Ich habe bisher den TrackingCode so eingefügt, wie in meinem ersten Post beschrieben.
Im Herbst 2023 hatten wir hier per Diskussion ein Stück Script erstellt, mit dem ich das unerwünschte Tracking im Backend verhindern kann. Dieses trat auf, weil ich einen PageBuilder unter Joomla nutze, der mir nach jeder kleinsten Änderung an einer Webseite diese in einem Iframe als WYSIWYG-Vorschau anzeigt. Jedes Mal wenn der Inhalt für diesen Iframe neu geladen wurde, wurde getrackt. Dies hier war der Code, mit dem das dann verhindert wurde:

// Lade die matomo.js nur, wenn die Webpage nicht als Iframe geladen wird.
    if ((window.self === window.top) === true) {     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); }

Wenn ich den TagManager für diese Website aktiviere, müsste ich diesen Code dort hinein bekommen. Ich muss gestehen, nachdem ich die ersten drei Videos für die Anleitung zum TagManager gesehen habe, dass ich das nicht verstehe - zumal das Englisch für meine Ohren zumindest nicht so leicht verstehbar ist und die Bildschirmauflösung des Gezeigten zu schlecht.
Was tun?

du schon wieder! :wink:

leider kann im Backend nur per URL-Querystring gefiltert werden.

probiere mal das:

var matomopathnamefilter = ["einzelne-seiten-vom-tracking-ausschliessen-wenn-trackingcode-zentral-in-alle-seiten-eingefugt-wird"];
// Lade die matomo.js nur, wenn die Webpage nicht als Iframe geladen wird.
// Lade die matomo.js nur, wenn der Pathname nicht im Filter-Array.
    if (((window.self === window.top) === true) || (matomopathnamefilter.findIndex(function (checkpath) {return window.location.pathname.includes(checkpath);}) < 0)) {
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    }

keine Garantie. Auf eigenes Risiko.

Im Array matomopathnamefilter die entsprechenden URL-Pathnamen angeben, die vom Tracking ausgeschlossen werden sollen. Kommagetrennt:

var matomopathnamefilter = ["url-path-001","url-path-002","url-path-003"];

Es müssen dabei nicht die gesamten Pathnamen angeben werden. Es genügen Substrings.

var matomopathnamefilter = ["001","002","003"];

Dabei aber Vorsicht, dass diese nicht zuviele Pages matchen.

Stimmpt, ich schon wieder! :-))
Ich danke dir für deinen Code. Ich habe ihn mit aller Sorgfalt eingesetzt. Leider blieb das Ganze wirkungslos und die betreffenden Seiten wurden weiterhin getrackt, egal ob ich nur Substrings oder ganze URLs eingetragen habe.

Ich habe einen ganzen Tag am Wochenende investiert, aber blicke bei dem Tag-Manager immer noch nicht durch, wie der einzusetzen ist und wie ich die Seiten ausschließen kann. Zudem möchte ich nicht, dass der gelungene Ausschluss der Iframe-Darstellungen wieder verloren geht. In den Erklärungen zum Tag-Manager habe ich nichts gefunden, wie man Iframe-Tracking unterbindet.

Der Tag-Manager wird als “einfach einzusetzen” beschrieben. Aber warum sollte ich mich nun als “zu dumm dafür” sehen?

Wichtig ist, dass entweder der gesamte Path, sowie ohne Domain und ohne Querystring, eingetragen wird, oder nur Teile (Substrings) davon.

Dass es funktioniert kannst du selbst testen, wenn du auf exakt dieser Webpage hier die Browser Konsole öffnest und folgendes eingibts:

var matomopathnamefilter = ["einzelne-seiten-vom-tracking-ausschliessen-wenn-trackingcode-zentral-in-alle-seiten-eingefugt-wird"];
(matomopathnamefilter.findIndex(function (checkpath) {return window.location.pathname.includes(checkpath);}) < 0)

Du musst noch nicht einmal Enter drücken. Es wird ein false ausgegeben. Ein false bedeutet, dass die matomo.js nicht geladen werden soll, womit also die Webpage nicht getrackt werden kann. Natürlich nicht hier im Forum, sondern dann auf deiner Website.

… ansonsten mal checkpath durch matomocheckpath ersetzen, 2x.