Méthode
Les formules sont fixes. Une division par zéro ou une valeur inconnue produit « Non disponible », jamais un zéro de remplacement. Accepter cette recommandation n'envoie aucune modification à Google Ads ni à GA4.
CPC = coût / clics, seulement si les clics sont connus et non nuls.
CPA = coût / conversions, seulement si les conversions sont connues et non nulles.
CTR = clics / impressions, seulement si les impressions sont connues et non nulles.
ROAS = valeur de conversion / coût, seulement si la valeur est connue et le coût non nul.
Une valeur Google Ads à 0 n'est « connue » que si une action de conversion active a une valeur par défaut ou si une valeur positive a été observée. Sinon le ROAS reste non disponible.
Un revenu GA4 à 0 n'est pas distingué d'un suivi monétaire absent : il reste non disponible.
Les devises ne sont jamais converties. Un mélange rend les totaux monétaires non disponibles.
Dépense sans conversion : coût ≥ 100 et clics ≥ 40 et conversions = 0. Estimation = coût observé.
CPA au-dessus de la médiane : au moins 3 campagnes de la même devise avec 3 conversions, et la campagne a au moins 8 conversions avec un CPA ≥ médiane × 1.75. Estimation = (CPA − médiane) × conversions.
CTR faible : CTR < 0.008, impressions ≥ 8000, coût ≥ 80. Aucun montant, faute de part évitable identifiable.
Valeur sous le coût : ROAS < 1, coût ≥ 100, conversions ≥ 5, valeur connue. Estimation = coût − valeur. Ce n'est pas une économie.
GA4, sessions sans événement clé : sessions ≥ 500 et événements clés = 0. Aucun montant : le coût Ads n'est pas repris.
Les tests automatiques couvrent les formules, les fenêtres de dates, les devises, les valeurs manquantes, les règles, le refus des mutations, le chiffrement, l'isolation des espaces et les libellés de démonstration.
Aucun appel réel à Google n'est effectué dans cet environnement : les identifiants ne sont pas fournis et ne doivent pas l'être dans le dépôt. L'état « Lecture vérifiée » n'est donc pas démontré en conditions réelles.
Le scope OAuth Google Ads (https://www.googleapis.com/auth/adwords) n'a pas de variante lecture seule : le jeton émis par Google peut techniquement autoriser des écritures. L'application refuse, avant tout appel réseau, toute méthode autre que listAccessibleCustomers, googleAds:search et googleAds:searchStream. Ce garde-fou est applicatif. Il ne réduit pas le scope accordé chez Google.
Le scope demandé pour GA4 est https://www.googleapis.com/auth/analytics.readonly. Le scope d'édition analytics.edit n'est pas demandé.
Le jeton développeur Google Ads n'est plus exigé depuis le 9 septembre 2026 : l'API l'ignore s'il est encore envoyé. L'accès dépend du projet Google Cloud propriétaire du client OAuth (accès Test limité aux comptes de test, Explorer ou supérieur pour les comptes de production). Son absence n'est pas présentée comme une connexion.
Les jetons restent côté serveur, chiffrés avec TOKEN_ENCRYPTION_KEY. Ils ne sont pas mis dans le navigateur ni dans le journal d'audit.