Si votre site publie des événements métier dans window.dataLayer (parce que vous avez configuré Google Tag Manager pour Google Analytics), ces événements arrivent déjà chez Skomi. Il n'y a rien à réécrire, aucun adaptateur à installer, et aucun second push à ajouter à côté du premier.

Cette page dit ce qui se passe, ce qui ne se passe pas, et les limites à connaître avant de vous y fier.

Rien à faire

Installez l'extrait. Skomi s'accroche à dataLayer et lit ce qu'on y pousse.

Les deux formes fonctionnent :

// la forme objet
dataLayer.push({ event: 'purchase', value: 49.00, currency: 'EUR' });

// gtag, qui pousse ses propres arguments plutôt qu'un objet
gtag('event', 'purchase', { value: 49.00, currency: 'EUR' });

Vous pouvez garder GTM. Vous pouvez laisser Google Analytics tourner à côté de Skomi pendant que vous les comparez ; c'est la façon raisonnable de migrer, et rien ici ne s'y oppose.

Pourquoi cela fonctionne quel que soit le script qui charge en premier

GTM remplace dataLayer.push par sa propre enveloppe quand gtm.js finit de charger, et les deux scripts chargent de façon asynchrone. Celui qui atterrirait en second écraserait purement et simplement l'enveloppe de l'autre et avalerait ses événements en silence.

Skomi installe push comme un accesseur à la place : l'affectation de GTM arrive donc dans le setter et devient la fonction à laquelle Skomi délègue. La nôtre reste devant quelle que soit l'issue de la course. Vous n'avez pas à ordonner vos balises.

Ce qui est capturé

Le nom de l'événement : event sur l'objet, ou le deuxième argument de gtag.

Chaque propriété, aplatie en chemins pointés, parce que les propriétés d'un événement sont stockées sous forme de texte :

dataLayer.push({
  event: 'purchase',
  transaction_id: 'ORD-1234',
  value: 49.00,
  currency: 'EUR',
  ecommerce: { items: [{ item_name: 'Pro plan', price: 49.00 }] }
});

arrive comme transaction_id, value, currency, ecommerce.items.0.item_name, ecommerce.items.0.price.

Le montant, lu depuis value ou depuis ecommerce.value. Les chaînes sont acceptées, parce que les valeurs d'un dataLayer sortent souvent d'un gabarit sous forme de texte.

La devise, depuis currency ou ecommerce.currency de la même façon. Un événement e-commerce GA4 porte déjà { value, currency } ensemble : un site câblé pour Google envoie donc à Skomi un achat entièrement libellé sans le savoir.

Le numéro de commande. Le serveur lit transaction_id dans les propriétés, et une répétition du même numéro est écartée plutôt que comptée, ce qui compte plus qu'il n'y paraît. Une page de confirmation se déclenche à chaque chargement : un rechargement, un bouton retour, la réouverture de l'e-mail une semaine plus tard. Sans numéro de commande, cela fait trois ventes.

Ce qui n'est pas capturé

Les événements de cycle de vie propres à GTM. Tout ce qui est sous l'espace de noms gtm. et les clés avec lesquelles GTM pilote son propre envoi : event, eventCallback, eventTimeout, eventModel, _clear. Ils ne disent rien de votre activité et seraient plusieurs fois plus nombreux que les vrais événements.

Tout ce qui dépasse les limites. Elles sont réelles et il vaut mieux les connaître avant de les découvrir :

Limite Valeur
Propriétés par événement 25
Profondeur d'imbrication 3 niveaux
Nom d'une propriété 64 caractères
Valeur d'une propriété 255 caractères
Numéro de commande 128 caractères

Un grand tableau ecommerce.items ne rentre pas. Chaque article apporte plusieurs propriétés : une commande de dix lignes dépasse donc largement vingt-cinq, et le reste est écarté plutôt que tronqué article par article. Si le détail par ligne vous importe, il a sa place dans les rapports de votre propre boutique ; Skomi retient la commande, sa valeur et sa devise, pas son contenu. Il n'y a de dimension produit nulle part dans le produit.

Les intégrations propres à Google. Signaux du Consent Mode, export d'audience, liaison Google Ads. Cela se passe entre GTM et Google et Skomi n'en fait pas partie.

Où les événements apparaissent

Sous leurs propres noms, à côté de ceux que Skomi capture de lui-même. Chaque événement retient d'où il venait : datalayer pour ceux-ci, api pour un appel skomi.track() écrit à la main, auto pour les liens sortants et les téléchargements que Skomi capture sans qu'on le lui demande, pour que vous puissiez distinguer un événement que vous avez demandé d'un événement que vous avez seulement autorisé.

Transformez n'importe lequel en objectif pour obtenir un taux de conversion contre lui.

Si vous préférez l'appeler directement

skomi.track('purchase', { plan: 'pro' }, 49.00, 'EUR', 'ORD-1234');

Nom, propriétés, valeur, devise, numéro de commande, les trois derniers facultatifs. Utilisez-le pour les événements qui n'ont aucune raison de passer par GTM. Un site qui n'a pas de dataLayer du tout n'en a pas besoin.

Vérifier que cela a fonctionné

Poussez un événement de test depuis la console sur le domaine réel :

dataLayer.push({ event: 'test_event', value: 1, currency: 'EUR' });

Cherchez ensuite test_event dans vos événements. S'il n'y est pas, déroulez que vérifier quand l'extrait ne fonctionne pas, et notez que localhost ne collecte rien, parce que ce n'est pas le domaine que vous avez enregistré.