Est-il possible d'ajouter des paramètres UTM aux clics sortants sur des liens à l'aide de Google Tag Manager?
J'ai trouvé de nombreux tutoriels expliquant comment suivre les clics sortants en tant qu'événements, mais je dois ajouter des paramètres UTM aux URL d'un domaine spécifique.
Aucune suggestion?
En supposant que vous souhaitiez que tous les liens sortants aient les paramètres UTM; Je suggère de créer une balise HTML personnalisée avec le code JavaScript suivant.
<script type="text/javascript">
// Set the domain/URL to your website.
var myDomain = "www.example.com";
// Grab all links (anchor tags)
var links = document.getElementsByTagName('a');
// Loop through all links
Array.prototype.forEach.call(links, function (link) {
// If we find a link that does not go to my domain
if ( link.href.indexOf(myDomain) < 0 ) {
// Take the href and append the UTM parameters
link.href += '?utm_source=CampaignSource&utm_medium=CampaignMedium&utm_term=CampaignTerm&utm_content=CampaignContent&utm_campaign=CampaignName';
}
});
</script>
Il parcourra tous les liens et ajoutera les paramètres UTM si le lien est dirigé vers une destination extérieure à votre domaine. Il est primitif et vérifie seulement si votre domaine est dans l'URL donc http://www.another-example.com/www.example.com serait not ont les paramètres UTM ajoutés.
Voici un exemple dans un codepen .
Si vous avez des questions s'il vous plaît faites le moi savoir.
Suite à la réponse utile d’Adam Huffman ci-dessus, j’ai modifié cette option pour ajouter clientId à l’aide de Tag Manager afin de forcer le suivi interdomaine à une tierce partie (Eventbrite).
</script>
// working for outbound eventbrite links on 11/05/2016
<script type="text/javascript">
// Set the domain/URL to your website.
// var myDomain = "www.example.com";
// Or set domain to detect to Eventbrite
var myDomain = "www.eventbrite.co.uk";
// Grab all links (anchor tags)
var links = document.getElementsByTagName('a');
// Loop through all links
Array.prototype.forEach.call(links, function (link) {
// If we find a link that does not go to my domain
// if ( link.href.indexOf(myDomain) > 0 ) {
// Or
// if we find 1 or more links that go to Eventbrite specifically
if ( link.href.indexOf(myDomain) >= 1 ) {
// Take the href and append the required ?_eboga parameters
// ?_eboga prepend appears to work if only single parameter
// tested using & as some URLs already have page/ticket type parameters being passed
// then adding clientId recorded as a variable in Tag Manager
link.href += '&_eboga=' +{{clientId}};
}
});
</script>
Désolé pour le formatage désordonné, première publication ici et pas un codeur. mais après avoir beaucoup cherché, je sais que beaucoup de personnes ont des difficultés avec le suivi de domaines croisés Eventbrite et j'ai pensé que cela pourrait aider à montrer un exemple de cela avec une utilisation alternative.
Désormais, Eventbrite déploie des analyses universelles. Le suivi interdomaine est possible si vous adaptez la méthode présentée ici pour les paramètres de campagne UTM et inversez-la pour ajouter sa valeur personnalisée + clientId lorsque outbound link = eventbrite.
Bien comprendre que c’est une très vieille réponse, mais dans la solution Nice proposée par Pierre, il aurait été judicieux d’utiliser l’argument link.search
afin de s’assurer d’ajouter le paramètre dans la partie chaîne de requête et non à la fin de celle-ci. URL.
En supposant que l'URL contienne un fragment, l'ajout du paramètre comme suggéré entraînera une URL mal formée car la chaîne de requête sera attachée à la fin.
WRONG
E.g. www://www.test.it/path?query=1#fragment&_eboga={{clientId}}
Il est également possible que le paramètre soit ignoré car les fonctions côté serveur interceptent normalement la partie requête qui supprime le fragment en premier.
Une version de travail modifiée peut donc être:
var myDomain = "https://business.eshoppingadvisor.com/";
var utm_source = "esa";
var utm_medium = "referral";
// Grab all links (anchor tags)
var links = document.getElementsByTagName('a');
// Loop through all links
Array.prototype.forEach.call(links, function (link) {
if ( link.href.indexOf(myDomain) >= 0 ) {
link.search += (link.search.length > 0 ? "&" : "") + 'utm_source=' + utm_source + '&utm_medium=' + utm_medium;
}
});