Les paramètres UTM sont essentiels pour suivre l'origine de vos leads et comprendre quelles campagnes marketing performent le mieux.
Cependant, Calendly ne récupère pas les UTM automatiquement lorsque vous utilisez son widget sur votre site.
Dans ce tutoriel, l'agence Webflow Gemeos vous montre comment :
Ce script doit être ajouté dans le footer de votre site, juste avant </body>
, pour qu’il fonctionne sur toutes les pages.
<script type="text/javascript">
(function() {
const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
function storeUTMParams() {
const params = new URLSearchParams(window.location.search);
let hasUTMInURL = false;
// 1️⃣ Stocker les UTM en sessionStorage si présents dans l'URL
utmKeys.forEach(param => {
if (params.has(param)) {
sessionStorage.setItem(param, params.get(param));
hasUTMInURL = true;
}
});
// 2️⃣ Supprimer les UTM de l’URL pour une URL propre
if (hasUTMInURL) {
const newURL = window.location.origin + window.location.pathname;
window.history.replaceState({}, document.title, newURL);
}
}
function getUTMParams() {
let utmParams = '';
utmKeys.forEach(param => {
const storedValue = sessionStorage.getItem(param);
if (storedValue) {
utmParams += `&${param}=${storedValue}`;
}
});
return utmParams;
}
function updateCalendlyWidget() {
const calendlyDiv = document.querySelector(".calendly-inline-widget");
if (calendlyDiv) { // Vérifier si le widget Calendly est présent sur la page
const baseUrl = calendlyDiv.getAttribute("data-url");
const newUrl = baseUrl + getUTMParams();
// Supprimer l'ancien widget et en recréer un avec la nouvelle URL
const newCalendlyDiv = document.createElement("div");
newCalendlyDiv.className = "calendly-inline-widget";
newCalendlyDiv.setAttribute("data-url", newUrl);
newCalendlyDiv.style = "min-width:320px;height:700px;";
calendlyDiv.replaceWith(newCalendlyDiv);
// Recharger le script Calendly pour prendre en compte la nouvelle URL
setTimeout(() => Calendly.initInlineWidgets(), 500);
}
}
// 3️⃣ Exécuter les fonctions quand la page charge
document.addEventListener("DOMContentLoaded", function () {
storeUTMParams(); // Stocke les UTM au chargement
updateCalendlyWidget(); // Applique les UTM uniquement si le widget est présent
});
})();
</script>
Il récupère les paramètres UTM dans l’URL (utm_source
, utm_medium
, etc.).
Il les stocke dans la session du navigateur (sessionStorage
).
Il supprime immédiatement les UTM de l’URL pour garder une URL propre.
Il vérifie si un widget Calendly est présent sur la page.
Il met à jour l’URL du widget avec les UTM et force Calendly à les enregistrer.
Dans votre page où vous affichez Calendly, utilisez cet embed standardsans modifier l’URL (le script se charge d’ajouter les UTM dynamiquement) :
<!-- Embed Calendly standard -->
<div class="calendly-inline-widget"
data-url="https://calendly.com/YOUR_LINK/30min"
style="min-width:320px;height:700px;">
</div>
<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>
Le script se charge automatiquement d’ajouter les UTM, donc pas besoin de les insérer manuellement. Cela garantit que :
Avant de déployer, faites un test sur un environnement de staging ou en local.
https://ton-site.com/?utm_source=linkedin&utm_campaign=test
F12 > Console
) et tapez : sessionStorage.getItem("utm_source")
"linkedin"
(ou la valeur que vous avez mise).
sessionStorage.getItem("utm_source")
).
🎯 Si tout fonctionne bien en staging, déployez en production !
Une fois en ligne, vous pourrez analyser les performances de vos campagnes en récupérant ces UTM dans :
Vous avez un système propre et efficace pour tracker vos leads avec Calendly.
Les UTM sont conservés même si l’utilisateur change de page.
Calendly récupère bien les données sans afficher d’UTM dans l’URL.
Vous pouvez analyser vos conversions et optimiser vos campagnes marketing.
Si vous souhaitez envoyer ces UTM vers Google Analytics, Facebook Ads ou un CRM, dites-moi, je peux vous aider à automatiser cela ! 🚀🔥