Accueil
Expertises Toutes les expertises Server-side GTM & dataLayer Analytics Conversion API Data Warehouse
Cas clients Tous les cas clients E-commerce SaaS Apps mobiles Lead generation
Ressources Toutes les ressources Google Tag Manager Mobile App Tracking RGPD & Consent Mode Google Analytics (GA4) Server-side tracking
Outils gratuits Tous les outils Diagnostic server-side Générateur de plan de tracking
À propos Prendre RDV
GOOGLE TAG MANAGER

Suivi Matomo avec Google Tag Manager (Client-Side)

Mettre en place le tracking Matomo côté client avec GTM : la balise HTML personnalisée pour le self-hosted, le consentement natif Matomo, l'e-commerce et les dimensions personnalisées.

· 11 min de lecture
Dans ce guide
  1. Le tag officiel Matomo, réservé au Cloud
  2. Pour du Matomo self-hosted : la balise HTML personnalisée
  3. Le consentement natif de Matomo, et son absence de pont avec Google Consent Mode
  4. Suivre l'e-commerce via _paq
  5. Définir une dimension personnalisée
  6. Suivre une SPA avec ce montage

Il existe bien un tag officiel Matomo dans la Community Template Gallery de GTM, mais avec une restriction qui n'est pas toujours vue avant de perdre du temps à l'installer : il ne fonctionne que sur Matomo Cloud.

Le tag officiel Matomo, réservé au Cloud

Le template "Matomo Tracking Tag", maintenu par l'organisation matomo-org, est bien présent dans la Community Template Gallery de GTM. Sa documentation officielle est explicite : "This tag is only compatible with Matomo cloud instances, as URL(s) or URL patterns need to be specified in advance." Si votre instance Matomo est self-hosted (sur votre propre serveur), ce template ne convient pas, quelle que soit la configuration que vous essayez.

Pour du Matomo self-hosted : la balise HTML personnalisée

La méthode documentée par Matomo elle-même pour une instance self-hosted reste la balise HTML personnalisée avec le tracker JS classique, le même que celui utilisé hors GTM :

code
var _paq = window._paq = window._paq || [];
_paq.push(['setCustomUrl', '{{Page URL}}']);
_paq.push(['setDocumentTitle', '{{Page Title}}']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
  var u = "https://votre-instance-matomo.exemple.com/";
  _paq.push(['setTrackerUrl', u + 'matomo.php']);
  _paq.push(['setSiteId', '1']);
  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);
})();

Les variables GTM ({{Page URL}}, {{Page Title}}...) s'injectent directement dans les appels _paq.push, exactement comme pour n'importe quelle balise personnalisée. Il existe aussi des templates communautaires non officiels pour le self-hosted (par exemple sur GitHub), mais ce ne sont pas des templates maintenus par Matomo, à évaluer au cas par cas avant de les déployer en production.

Le tracker JS Matomo expose sa propre API de consentement, documentée avec des fonctions précises :

  • _paq.push(['requireConsent']); bloque tout tracking (requêtes et cookies) tant qu'aucun consentement n'est donné.

  • _paq.push(['requireCookieConsent']); autorise les requêtes mais bloque uniquement la pose de cookies tant que le consentement cookie n'est pas donné, une nuance utile si vous voulez mesurer sans cookie plutôt que ne rien mesurer du tout.

  • _paq.push(['setConsentGiven']); et _paq.push(['setCookieConsentGiven']); signalent un consentement ponctuel, à rappeler sur chaque page si géré par une CMP externe.

  • _paq.push(['rememberConsentGiven']); (avec une durée optionnelle en heures) et _paq.push(['rememberCookieConsentGiven']); mémorisent le consentement via un cookie dédié (mtm_consent ou mtm_cookie_consent), pour ne pas le redemander à chaque page.

  • _paq.push(['forgetConsentGiven']); et _paq.push(['forgetCookieConsentGiven']); retirent un consentement précédemment mémorisé.

Point à ne pas survoler si votre GTM fait cohabiter des tags Google et Matomo dans le même conteneur : la documentation officielle du tracker Matomo ne mentionne aucune intégration native avec le Google Consent Mode, seulement des intégrations documentées avec des CMP tierces (Cookiebot, CookieYes, Osano, Tarte au Citron, Klaro, Complianz). Il n'existe pas de passerelle officielle Matomo qui route automatiquement l'état de consentement vers les deux systèmes. En pratique, il faut le faire soi-même : un déclencheur GTM sur le changement de consentement qui appelle à la fois gtag('consent', 'update', ...) pour les tags Google et _paq.push(['setConsentGiven']) (ou rememberConsentGiven) pour Matomo, plutôt que de supposer une synchronisation automatique qui n'existe pas.

Suivre l'e-commerce via _paq

La syntaxe officielle pour tracker manuellement l'e-commerce, à placer dans les balises appropriées selon l'événement :

code
// Vue produit
_paq.push(['setEcommerceView',
    "0123456789",               // SKU (obligatoire)
    "Ecommerce Analytics Book", // nom produit (optionnel)
    "Books",                    // categorie (optionnel)
    9.99                        // prix (optionnel)
]);

// Ajout panier
_paq.push(['addEcommerceItem',
    "0123456789",
    "Ecommerce Analytics Book",
    ["Books", "Best sellers"],
    9.99,
    1
]);

// Commande finalisee
_paq.push(['trackEcommerceOrder',
    "000123",  // ID commande (obligatoire)
    10.99,     // total (obligatoire)
    9.99,      // sous-total (optionnel)
    1.5,       // taxe (optionnel)
    1,         // frais de port (optionnel)
    false      // remise (optionnel)
]);

Point souvent raté : les montants doivent être transmis en tant que nombres (int ou float), jamais en chaîne formatée comme "9,99€", au risque que Matomo n'enregistre pas la valeur correctement.

Définir une dimension personnalisée

_paq.push(['setCustomDimension', 1, valeur]); doit impérativement être placé avant l'appel trackPageView ou trackEvent correspondant, dans la même balise HTML personnalisée GTM. Si l'ordre est inversé, la dimension n'est tout simplement pas rattachée au hit envoyé, une erreur d'ordre silencieuse qui ne remonte aucune erreur visible dans GTM.

Suivre une SPA avec ce montage

Pour un site en single-page application, la documentation Matomo recommande de déclencher trackPageView sur un déclencheur "History Change" plutôt que sur "Toutes les pages", pour capturer les changements de vue qui ne rechargent pas la page côté navigateur. Sans ça, seule la première vue de la session serait comptabilisée, toute la navigation suivante dans l'application passerait inaperçue.

Une implémentation plus complexe à discuter ?

Discuter de votre tracking
Christophe Dubois
Christophe Dubois

Consultant tracking & data, freelance senior depuis 2012. Architecture de mesure, server-side, attribution.

Remonter en haut

Cet enjeu mérite un accompagnement dédié.

Freelance web analytics
POUR ALLER PLUS LOIN

Articles liés

Server side Tracking

Piwik PRO : Mesure Hybride (First-Party Collector) et Installation avec GTM

Ce que signifie réellement la mesure hybride chez Piwik PRO, son Consent Manager intégré et son intégration Google Consent Mode, sa grille tarifaire réelle, et les templates GTM officiels.

12 Jun. 2026 ·11 min
Google Tag Manager

Comment Tracker une Iframe avec Google Tag Manager

Comment tracker une iframe avec GTM malgré la same-origin policy : la méthode postMessage, les cas Calendly et Typeform, et le choix entre un ou deux conteneurs GTM.

06 Apr. 2026 ·9 min
Server side Tracking

Google Tag Gateway (GTG) : Fonctionnement, Interet et Limites

Google Tag Gateway expliqué : first-party serving via Cloudflare, Akamai ou Fastly, différence réelle avec le server-side GTM, mise en place et le point de vigilance RGPD sur le consentement.

14 Jul. 2026 ·9 min
Google Tag Manager

Comment Installer Google Tag Manager sur Ecwid : Guide Complet

Installer Google Tag Manager sur Ecwid : connexion native, piège de l'iframe, et événements e-commerce réels (achat, panier) avec la JS API storefront.

08 Jun. 2026 ·13 min
RGPD - Consent Mode

Consent Mode v2 sur WooCommerce : CMP, GTM et conversions

Consent Mode v2 sur WooCommerce : CMP, GTM Consent Initialization, tags GA4/Ads, et comment éviter de tuer vos conversions.

16 Sep. 2026 ·9 min
Audit Tracking

Auditer le tracking PrestaShop : conversions, funnels et ROAS faussés

Audit tracking PrestaShop : plugins vs GTM, écarts commandes/GA4/Ads, Consent Mode, funnels et plan de correction ROAS.

16 Sep. 2026 ·10 min
Audit Tracking

Auditer le tracking Shopify : pourquoi vos achats remontent mal

Audit tracking Shopify : écarts achats vs GA4/Ads/Meta, pixels doublons, checkout, Consent Mode et plan de correction actionnable.

16 Sep. 2026 ·10 min
Google Tag Manager

Comment tracker un formulaire Brevo (ex-Sendinblue) avec GTM

Tracker un formulaire Brevo avec GTM : script MutationObserver sur #success-message, dataLayer generate_lead, Element Visibility et pièges iframe.

16 Sep. 2026 ·9 min
Paid Acquisition

TikTok Pixel & Events API : implémentation avec GTM (web + server-side)

Installer TikTok Pixel et Events API via GTM : events ecom/lead, event_id pour dédup, server-side et checklist de debug TikTok.

16 Sep. 2026 ·11 min
Google Tag Manager

Installer Google Tag Manager sur WooCommerce (guide complet)

Installer GTM sur WooCommerce : dataLayer e-commerce, events GA4, Consent Mode, pièges plugins et checklist pour des achats fiables.

16 Sep. 2026 ·12 min
Google Tag Manager

Comment tracker un formulaire avec GTM (méthode universelle)

Méthode universelle pour tracker un formulaire avec GTM : dataLayer, submit vs thank-you, GA4, Ads, Meta, déduplication et checklist de recette.

16 Sep. 2026 ·11 min
Audit Tracking

Audit des conversions dupliquées Google Ads × Meta : comment les détecter et les corriger

Vos conversions Google Ads et Meta sont-elles comptées deux fois ? Méthode d’audit : pixel + CAPI, Conversion Linker, GTM, et corrections concrètes.

16 Sep. 2026 ·9 min
SERVICES ASSOCIÉS

Pour aller plus loin sur votre projet

EXPERTISE ASSOCIÉE

Analytics (GA4, Matomo, Piano)

Analytics (GA4, Matomo, Piano)

Une configuration analytics avancée adaptée à votre e-commerce ou votre produit, pas juste l'installation par défaut.

Voir l'expertise
FAQ

Questions fréquemment posées

Le template Matomo officiel de GTM fonctionne-t-il avec une instance self-hosted ?

Non. Le template 'Matomo Tracking Tag' de la Community Template Gallery est explicitement réservé aux instances Matomo Cloud. Pour du self-hosted, il faut passer par une balise HTML personnalisée avec le tracker JS classique.

Matomo s'intègre-t-il nativement avec le Google Consent Mode ?

Non, aucune intégration native n'est documentée par Matomo. Sa documentation officielle ne couvre que des CMP tierces (Cookiebot, CookieYes, Osano...). Faire cohabiter Matomo et des tags Google avec Consent Mode demande de router soi-même le signal de consentement vers les deux systèmes.

Comment tracker une commande e-commerce avec Matomo dans GTM ?

Via trackEcommerceOrder(orderId, total, ...) en complément de setEcommerceView et addEcommerceItem pour les vues produit et ajouts panier. Les montants doivent être des nombres, jamais des chaînes formatées avec une devise.

Pourquoi ma dimension personnalisée Matomo n'apparaît-elle pas dans les rapports ?

Le plus souvent parce que setCustomDimension a été appelé après trackPageView ou trackEvent au lieu d'avant, dans la même balise. L'ordre des appels _paq.push détermine si la dimension est rattachée au hit ou ignorée silencieusement.

Prendre rendez-vous