Mettre en pause automatiquement les campagnes Google Ads sous-performantes avec n8n et l’IA
Publié le 12 août 2026 · 5 min de lecture
Une campagne Google Ads qui dérape un vendredi soir continue de dépenser jusqu’au lundi matin, quand quelqu’un rouvre enfin le tableau de bord. Notre article sur le reporting Google Ads et Meta Ads réglait la partie lecture : consolider les métriques, repérer les dérives, envoyer une synthèse. Il s’arrêtait volontairement avant l’étape suivante — agir. Ce guide construit cette seconde moitié : un workflow n8n qui surveille des campagnes en continu, laisse un LLM juger si l’une d’elles décroche vraiment, et coupe son budget lui-même via l’API Google Ads, sans attendre qu’un humain ouvre son écran.
Pourquoi le node Google Ads natif ne suffit pas
Premier réflexe en ouvrant n8n : chercher une opération « Pause » ou « Update » directement dans le node Google Ads. Elle n’existe pas. La ressource Campaign du node natif n’expose que deux opérations, toutes deux en lecture :
| Opération | Rôle |
|---|---|
| Get | Récupère une campagne précise via son campaignId |
| Get Many | Liste les campagnes d’un compte, avec filtres par période (dernières 7 jours, dernier mois…) et par statut (ENABLED, PAUSED, REMOVED) |
Ces deux opérations remontent budget (exprimé en micros — à diviser par 1 000 000 pour obtenir la valeur réelle), statut, score d’optimisation, type de canal et métriques (impressions, interactions, conversions, CTR). Largement suffisant pour du reporting, comme documenté dans notre article dédié. Mais pour écrire — changer un statut, ajuster un budget — le node natif n’a tout simplement pas la brique nécessaire. Il faut passer par le node HTTP Request et parler directement à l’API Google Ads.
Prérequis avant de commencer
Trois éléments à avoir en main, distincts de ce qu’exige le node natif :
- Un jeton développeur Google Ads (developer token), obtenu depuis le Centre API de votre compte Google Ads — un niveau d’accès « Standard » suffit pour ce cas d’usage.
- Un credential OAuth2 Google Ads dans n8n (client ID, client secret, refresh token) — le même que celui utilisé pour le node natif, réutilisable en authentification prédéfinie sur le node HTTP Request.
- L’identifiant du compte manager (
login-customer-id) si vos campagnes sont gérées sous un MCC — sans ce header, l’API refuse la requête avec une erreur d’autorisation même si le token est valide.
Testez systématiquement ce pipeline sur un compte Google Ads de test ou sur une campagne à très faible budget avant de le brancher sur un compte de production : une erreur de logique ici ne casse pas un workflow, elle coupe une campagne qui tournait bien.
Étape 1 — Collecter les métriques avec le node Google Ads
Un Schedule Trigger toutes les heures ou toutes les deux heures déclenche un node Google Ads → Campaign → Get Many, filtré sur le statut ENABLED et la période « Last 7 Days » pour avoir une tendance plutôt qu’un instantané trompeur. La sortie contient, par campagne, le coût cumulé, le nombre de conversions et le CTR sur la fenêtre choisie — de quoi calculer un coût par conversion réel, pas une estimation.
Étape 2 — Laisser un LLM juger, pas juste un seuil fixe
Un simple IF cost_per_conversion > X fonctionne, mais il ignore le contexte : une campagne de notoriété n’a pas le même profil qu’une campagne de conversion directe, et un pic de coût sur 48 h n’est pas la même dérive qu’une tendance qui se dégrade depuis cinq jours consécutifs. C’est là qu’un node AI Agent apporte quelque chose qu’un seuil ne peut pas : il reçoit l’historique des métriques de la campagne, l’objectif déclaré (CPA cible, budget mensuel) et produit un jugement contextualisé plutôt qu’une comparaison brute.
Pour que ce jugement reste exploitable par la suite du workflow, forcez une sortie structurée avec le Structured Output Parser : un JSON { "pause": true, "campaignId": "...", "reason": "...", "confidence": 0.82 }. Le champ reason n’est pas cosmétique — c’est lui qui alimente la journalisation et l’alerte envoyée à l’équipe, et qui permet de comprendre après coup pourquoi une décision a été prise.
Étape 3 — Exécuter la pause via l’API Google Ads mutate
Le node HTTP Request appelle l’endpoint POST https://googleads.googleapis.com/v18/customers/{clientCustomerId}/campaigns:mutate, avec l’authentification prédéfinie sur le credential Google Ads OAuth2 existant. Deux headers restent à ajouter manuellement — comme pour le node de reporting, n8n n’injecte pas ces valeurs automatiquement même avec le credential prédéfini sélectionné :
developer-token: votre jeton développeurlogin-customer-id: l’identifiant du compte manager, sans tirets
Le corps de la requête suit le format standard des opérations mutate de Google, avec un updateMask qui précise explicitement quel champ change :
{
"operations": [
{
"updateMask": "status",
"update": {
"resourceName": "customers/{clientCustomerId}/campaigns/{campaignId}",
"status": "PAUSED"
}
}
]
}
Ne branchez ce node qu’en sortie de la condition pause: true du jugement IA — jamais en exécution systématique sur toutes les campagnes récupérées à l’étape 1.
Le garde-fou qui manque à la plupart des tentatives
Automatiser une lecture est sans conséquence si le workflow plante : au pire, pas de rapport ce jour-là. Automatiser une écriture qui coupe un budget publicitaire change la donne — une erreur de jugement du LLM ou un bug de mapping de champ a un impact financier immédiat et visible. Une étude de Kupfer, Prassl, Fleiß, Malin, Thalmann et Kubicek publiée dans Frontiers in Psychology en 2023 (voir sur Google Scholar), consacrée au biais d’automatisation dans les décisions assistées par IA, montre qu’un humain confronté à une recommandation algorithmique a tendance à la valider sans la vérifier réellement dès que le système paraît globalement fiable — précisément le piège d’un workflow qui « marche bien » depuis des semaines et qu’on cesse de superviser.
Deux garde-fous concrets, faciles à câbler dans n8n :
- Plafonner l’automatisation par budget. N’autorisez la pause automatique inconditionnelle que sous un seuil de dépense quotidienne (un node IF sur le budget de la campagne). Au-delà, routez vers un circuit d’approbation humaine avec le node Wait et des boutons Slack : la pause attend une validation avant de s’exécuter.
- Journaliser chaque décision, y compris celles qui n’aboutissent pas. Consignez campagne, motif du LLM, score de confiance et action réellement exécutée dans une table Supabase, sur le même principe que notre guide de piste d’audit RGPD. En cas de désaccord a posteriori sur une décision, vous avez la trace complète du raisonnement, pas seulement le résultat.
Pour aller plus loin
Ce workflow ferme la boucle ouverte par le reporting automatisé : lire les métriques, laisser l’IA juger avec un motif explicite, agir via l’API en écriture, et garder une trace de tout — le même socle que celui du Pack Conformité & Audit (149 €), dont la journalisation Supabase s’adapte directement à ce cas d’usage marketing. Si votre priorité immédiate reste plutôt la boîte mail qui déborde, le Pack Inbox IA (79 €) applique la même logique de tri et d’alerte à vos emails ; et le Bundle FlowKit Complet (269 € au lieu de 347 €) réunit les trois packs sur une base commune si vous comptez enchaîner plusieurs automatisations de ce type.
FAQ
Questions fréquentes
Le node Google Ads natif de n8n peut-il mettre en pause une campagne ?
Non. À ce jour, le node ne propose que deux opérations sur la ressource Campaign : « Get » et « Get Many », toutes deux en lecture seule. Il n’existe aucune opération « Update » ou « Pause » native. Pour modifier le statut d’une campagne, il faut passer par un node HTTP Request qui appelle directement l’endpoint mutate de l’API Google Ads.
Faut-il un compte Google Ads Manager (MCC) pour ce workflow ?
Pas obligatoirement, mais c’est la configuration la plus courante en agence ou en interne dès qu’on gère plusieurs comptes clients : le managerCustomerId identifie le compte qui porte l’accès API, et le clientCustomerId celui de la campagne à surveiller. Sur un compte Google Ads autonome, les deux valeurs sont identiques.
Quel est le risque concret à automatiser la pause de campagnes ?
Le principal risque n’est pas technique mais décisionnel : un critère mal calibré peut couper une campagne qui traverse un creux normal (week-end, saisonnalité) plutôt qu’une vraie dérive. C’est pour cette raison que le workflow décrit ici journalise systématiquement la décision et son motif, et qu’il vaut mieux réserver la pause automatique inconditionnelle aux petits budgets, avec validation humaine au-delà d’un seuil.
Peut-on aussi réactiver automatiquement une campagne qui redevient performante ?
Oui, avec la même mécanique : le node HTTP Request accepte exactement le même appel mutate avec status défini sur ENABLED. Il suffit d’ajouter une branche de décision symétrique dans le node IA, en s’appuyant sur l’historique des campagnes déjà mises en pause par le workflow plutôt que sur celles jamais activées.
Bundle FlowKit Complet
269 €