In Matomo die Canonical URL tracken lassen

Dieser Beitrag beschreibt, wie man in Matomo eine Umsetzung ermöglicht, dass Seiten mit identischem Inhalt, die jedoch unterschiedliche URL’s besitzen, unter einer einheitlichen URL getrackt werden. Ziel ist eine erheblich leichtere und schnellere Auswertung von Tracking-Metriken für solche Seiten.

Empfehlung

Hilfe in Ihrem Online-Projekt erwünscht?
Schulung oder Einführung für Matomo benötigt?


Hallo, ich bin Udo Trautmann, freiberuflicher IT-Berater. 

Ich helfe Kunden beim Aufbau Ihrer optimalen Online-Lösung und entlaste sie bei technischen Aufgabenstellungen in der Konzeption und Koordination oder bei der Ausschreibung, so dass die Mitarbeiterinnen und Mitarbeiter des Kunden sich ihrem eigentlichen Business widmen können.

 

Jetzt klicken


Die Canonical URL

Diese einheitliche URL bezeichnet man auch als Canonical URL, die URL unter der ein Inhalt ursprünglich (originär) abrufbar ist. Im SEO-Umfeld sind Canonical URL’s, auch als Canonical Links bezeichnet, sehr bekannt und von hoher Bedeutung, um sogenannte Duplicate Content-Fehler zu vermeiden. Der Canonical Link wird im HTML einer einzelnen Seite hinterlegt. In der Regel erstellen Content-Management-Systeme diesen automatisch.

<link rel="canonical" href="https://example.com/unterseite.html">

Im Folgenden soll es darum gehen, wie sich das Vorhandensein einer Canonical URL in Matomo nutzen lässt, um auch in den Matomo-Berichten nur die úrsprüngliche URL zu verwenden.

Ein Beispiel von Links, die eine Canonical URL erfordern

Zunächst ein Beispiel einer Seite, die unter 5 verschiedenen URL’s erreichbar ist, aber die selben Inhalte ausspielt. Alle 5 URL’s werden in Matomo-Berichten als einzelne Seite ausgegeben:

  1. https://example.com/unterseiten/aktion_november.html
  2. https://example.com/11
  3. https://example.com/11/
  4. https://example.com/index.php?id=2712
  5. https://example.com/?id=2712

Wie kann so etwas entstehen?
Der Inhalt wurde bspw. in einem CMS ursprünglich im Seitenbaum  auf einer Seite „Aktion November“ gepflegt. Das CMS erzeugt die URI „aktion_november“. Ebenfalls wird im CMS eine Short-URI „11“ (für eine Aktion im November) angelegt, die diesen Inhalt zusätzlich auch unter der URI „11“ ausspielt. Mit dieser Short-URI wird bspw. eine Kampagne durchgeführt.
Je nach Webserver-Konfiguration wird manchmal ein Slash oder auch keiner angehangen oder es hängt vom Aufruf des Nutzers ab (Variante 3).
Bei bspw. Typo3 oder auch WordPress können Seiten auch mit ihrer internen ID aufgerufen werden oder bestimmte automatische Verlinkungsmechanismen verlinken nicht die sprechende URL, sondern eine mit der internen ID (Variante 4 und 5).

Möchte man nun in Matomo auswerten, wie oft diese Seite nun Besuche hatte, muss man alle Varianten 1-5 in Matomo einzeln heraussuchen und die Besucher addieren. Bei einer einzelnen Seite mag das noch schnell gemacht sein, jedoch wird es schnell sehr aufwendig, wenn hier potenziell der ganze Webauftritt solche Konstellationen vorhält oder die ID unbekannt ist und man im CMS diese heraussuchen muss. Auch sehr aufwendig wird es, wenn man sich die Interaktionen der Besucher einzeln zusammenstellen und addieren muss.

Es gibt also gute Gründe auch im Tracking die Canonical URL zu verwenden. Dies hilft nicht nur Suchmaschinen, sondern erleichtert auch die Auswertung in Matomo.

Idealerweise ist die Canonical URL im obigen Beispiel die URL aus Variante 1, also die sprechende URL.

Matomo die Canonical URL nutzen lassen

Matomo kann im Backend nicht konfiguriert werden, dass die Canonical URL automatisch ermittelt und diese an Stelle der im Browser aufgerufenen URL getrackt wird.

Der Lösungsansatz erfordert eine Erweiterung des Tracking-Snippets. Das grundlegende Tracking-Snippet stellt Matomo im Backend den Administratoren zur Verfügung, damit dieser Code-Schnippsel in die Webseite eingebettet wird. Sie müssen anschließend in diesen Schnippsel meine nachfolgend beschriebene Anpassung aufnehmen.

Ich greife dabei auf eine Matomo-Funktion zurück, mit der sich die getrackte URL ändern lässt (setCustomURL – siehe Matomo FAQ). Diese Funktion wird mit dem Wert der Canonical URL aufgerufen, die ich mir zuvor mit einer JavaScript-Funktion aus dem HTML ermittle. Gibt es keine Canonical URL im HTML passiert nichts, d.h. Matomo trackt „normal“ die URL, die im Browser aufgerufen wurde.

<!-- Matomo -->
<script type="text/javascript">
var _paq = window._paq = window._paq || [];

/******** Beginn ****/
/* Canonical URL ermitteln und verwenden */
var canonical = "";
var linklist = document.getElementsByTagName("link"); 
for (var i = 0; i < linklist.length; i ++) { 
  if (linklist[i].getAttribute("rel") === "canonical") { // <link rel="canonical"> gefunden
    canonical = linklist[i].getAttribute("href"); // Variable canonical mit Canonical-URL belegen
   _paq.push(['setCustomUrl', canonical]);
   break; 
  }
}
/******** Ende ****/
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://matomo.example.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->

Den angepassten Code habe ich mit Beginn und Ende in Kommentarzeilen gekennzeichnet.

Durch Cookie-Banner-Module oder Plugins für Matomo in bestimmten CMS muss die Integration ggf. diesen Modulen und Plugins angepasst werden. Wichtig ist jedoch, dass die Code-Anpassung einerseits nach der Initialisierung von paq erfolgt und noch vor Aufuf von trackPageView.

Edit 01.08.2021: Obiger Code muss noch angepasst werden, wenn zusätzlich zur Canonical URL die GET-Parameter aus der aktuellen URL an Matomo übergeben werden müssen. Dies ist erforderlich, wenn eine Matomo Kampagne durchgeführt wird oder wenn andere GET-Parameter in Matomo-Berichten ausgewertet werden müssen (z.B. Suchbegriffe).

Hierzu kann man mit einer eigenen JavaScript-Funktion die GET-Parameter der aktuellen URL auslesen und diese an die Canonical URL anhängen und den nun entstandenen String an die Funktion setCustomUrl übergeben.

Empfehlung

Hilfe in Ihrem Online-Projekt erwünscht?
Schulung oder Einführung für Matomo benötigt?


Hallo, ich bin Udo Trautmann, freiberuflicher IT-Berater. 

Ich helfe Kunden beim Aufbau Ihrer optimalen Online-Lösung und entlaste sie bei technischen Aufgabenstellungen in der Konzeption und Koordination oder bei der Ausschreibung, so dass die Mitarbeiterinnen und Mitarbeiter des Kunden sich ihrem eigentlichen Business widmen können.

 

Jetzt klicken


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.