Le problème de la fragmentation
Les Bains de Saillon faisaient de la publicité sur Google Ads, Meta Ads et TikTok Ads en même temps. Chaque plateforme avait son propre tableau de bord. Chacune reportait ses propres conversions.
Ces chiffres ne s'additionnaient pas. Chaque plateforme compte une conversion à sa façon, avec sa propre fenêtre d'attribution, et chacune a tendance à s'en attribuer le mérite. Additionnez les trois et vous obtenez plus de réservations que le complexe n'en a jamais reçu.
La direction devait décider où placer le prochain franc de budget. Elle n'avait aucun chiffre neutre pour fonder cette décision. Elle pilotait à l'aveugle la vraie performance multicanal.
L'architecture de données et la stratégie UTM
La réconciliation des données commence avant le clic. Si le lien de l'annonce n'est pas balisé de façon propre et cohérente, aucun dashboard ne peut le corriger après coup.
La première étape a donc été une taxonomie UTM stricte et standardisée. Elle est adaptée aux unités métier du complexe : spa, hôtel et restaurants. Chaque nom de campagne indique l'unité, l'objectif, l'audience et le mois. Les sources et les mediums viennent d'une courte liste fixe. Pas de texte libre, et pas de variantes « Facebook », « facebook » et « fb ».
Le point clé est l'alignement avec le regroupement de canaux par défaut de GA4. Les liens Meta et TikTok utilisent le medium paid_social. GA4 les regroupe alors dans « Paid Social », à côté de « Paid Search » pour Google. Aucune règle de canal personnalisée n'est nécessaire.
# Modèle
utm_source = plateforme, minuscules, sans espace (google | facebook | instagram | tiktok)
utm_medium = modèle de coût, liste fixe (cpc | paid_social)
utm_campaign = unite_objectif_audience_aaaamm (tout en minuscules, "_" comme séparateur)
utm_content = nom de la créa ou du groupe d'annonces (facultatif)
# Google Ads (l'auto-tagging reste actif, les UTM servent de filet de sécurité)
?utm_source=google&utm_medium=cpc&utm_campaign=spa_booking_brand_202611
# Meta Ads (Facebook + Instagram)
?utm_source=facebook&utm_medium=paid_social&utm_campaign=hotel_booking_lookalike_202611&utm_content=carousel_a
# TikTok Ads
?utm_source=tiktok&utm_medium=paid_social&utm_campaign=restaurant_booking_interest_202611&utm_content=video_15s
# Unités métier : spa | hotel | restaurant
# Résultat dans GA4 : Google -> "Paid Search", Meta et TikTok -> "Paid Social"Extrait simplifié, à titre d'illustration. Les noms de campagne et les valeurs sont des exemples.
Réconcilier les dépenses publicitaires avec les données web
Avec des balises propres, l'étape suivante est un pipeline unique. Les coûts publicitaires de Google, Meta et TikTok et le comportement web issu de GA4 sont réunis. La clé de jointure est celle définie dans la taxonomie UTM : source, medium et campagne.
- Côté coûts : dépenses, clics et impressions de chaque plateforme, par jour et par campagne.
- Côté web : sessions, événements clés et réservations mesurés dans GA4 sur le site du complexe.
- Une seule clé : comme chaque nom de campagne suit le même modèle, les coûts et les résultats s'alignent ligne par ligne.
- Actualisation automatique : les données se mettent à jour seules. Personne n'exporte de tableur à la main.
Cela change la source de vérité. Avant, le chiffre venait de la plateforme publicitaire : des données déclarées par la plateforme. Désormais, il vient de ce qui s'est passé sur le site du complexe : une mesure first-party objective. Les plateformes continuent de reporter leurs chiffres, et servent à optimiser les campagnes. Elles ne servent plus à les juger.
Le dashboard Looker Studio pour la direction
Le pipeline propre alimente un dashboard Looker Studio conçu pour des dirigeants, pas pour des data scientists. Il répond à quelques questions business sur un seul écran, sans filtre à apprendre et sans jargon.
- ROAS global : le revenu total des réservations divisé par la dépense publicitaire totale, tous canaux confondus.
- CAC par canal : ce que coûte une réservation sur Google, Meta et TikTok, côte à côte.
- Parcours utilisateur : le chemin du clic sur l'annonce jusqu'à la réservation, par unité métier : spa, hôtel et restaurants.
La logique de mélange reste simple et lisible. Quelques champs calculés regroupent les sources en trois canaux et calculent les deux ratios.
-- Champs calculés Looker Studio (source de données mélangée : coûts + sessions/réservations GA4)
ROAS global = SUM(Revenu des réservations) / SUM(Coût publicitaire)
CAC par canal = SUM(Coût publicitaire) / SUM(Réservations)
Canal = CASE
WHEN REGEXP_MATCH(Source, "google") THEN "Google Ads"
WHEN REGEXP_MATCH(Source, "facebook|instagram") THEN "Meta Ads"
WHEN REGEXP_MATCH(Source, "tiktok") THEN "TikTok Ads"
ELSE "Autre"
ENDExtrait simplifié, à titre d'illustration. Les noms de champs dépendent de la source de données.
Impact business
Le code et l'architecture servent un seul but : mettre la direction aux commandes. Elle ne devine plus où répartir le budget marketing.
- Une clarté immédiate : le dashboard montre quelles campagnes génèrent réellement des réservations et du revenu, sous une forme visuelle qui se lit en une minute.
- Des décisions budgétaires assumées : l'argent peut quitter les canaux qui paraissent bons dans leur propre plateforme pour aller vers ceux qui apportent des réservations.
- Un chiffre commun : le marketing et la direction regardent les mêmes données. Les réunions portent sur des décisions, pas sur la question de savoir quel rapport a raison.
- Une base durable : la taxonomie UTM et le pipeline s'appliquent à chaque nouvelle campagne, dans chaque unité métier.