WARDOGZ.
23 août 202611 min de lecture

Automatiser ton reporting ads mensuel : la méthode API (Google, Meta, TikTok)

Reporting de fin de mois = journée perdue ? Connecte les API Google, Meta et TikTok à un serveur MCP et sors le rapport client en un prompt. Méthode complète, étape par étape.

Automatiser ton reporting ads mensuel : la méthode API (Google, Meta, TikTok)

Un reporting mensuel multi-canaux coûte entre 2 et 6 heures par client : exports CSV, collage dans Looker Studio, vérification des dates, email de synthèse. En connectant directement les API Google Ads, Meta et TikTok à un serveur MCP, ce rapport sort en un prompt, avec les vrais chiffres et ton format. Voici la méthode complète : accès API plateforme par plateforme, plan d'intégration, prompt final.

Le vrai coût du reporting de fin de mois

Il est 18h un vendredi de fin de mois. Tu viens de finir le rapport du dernier client. Il t'en reste sept. Tu as passé l'après-midi à exporter des CSV de trois plateformes, recoller des tableaux dans Looker Studio, vérifier que les dates correspondent, et reformuler deux fois la même phrase dans l'email client.

Si tu es freelance ou agence média, cette scène te parle. Et elle se répète chaque mois.

Chiffrons le problème. Un reporting mensuel standard pour un client multi-canaux représente entre 2 et 6 heures de travail : exports, nettoyage, mise en forme, rédaction des commentaires, envoi. À 60€/h, un freelance avec cinq clients brûle facilement 600 à 1800€ de valeur chaque mois en copier-coller. Un jour de facturation perdu, tous les mois, sur une tâche qu'une machine fait mieux et sans erreur de date.

Et je ne parle pas de la qualité : les rapports manuels arrivent souvent avec trois semaines de retard sur la réalité, des KPIs incohérents entre plateformes (attribution différente, fenêtres différentes), et zéro recommandation actionnable parce qu'il reste 15 minutes avant la deadline.

Supermetrics et co : pourquoi ça règle à moitié le problème

La réponse habituelle du marché, c'est un connecteur SaaS : Supermetrics, Funnel.io, Dataslayer. Tu branches tes comptes, ça alimente Looker Studio, c'est joli.

Problème Réalité terrain
Coût Supermetrics démarre autour de 100-300€/mois par connecteur, et grimpe vite quand tu ajoutes Meta + TikTok + plusieurs sièges
Rigidité Limité aux champs exposés par le connecteur ; impossible d'ajouter un calcul métier custom (marge, CPA pondéré, mix canaux)
Dashboards passifs Ton client ouvre Looker Studio une fois et n'y revient plus ; il attend toujours TON email de synthèse
Pas d'analyse L'outil agrège, il ne commente pas. La valeur ajoutée (le « pourquoi », le « donc ») reste manuelle

Ce n'est pas un mauvais produit. C'est juste que pour une agence structurée, tu paies cher un outil qui te laisse encore 70% du travail manuel derrière.

L'architecture cible : APIs + serveur MCP

L'idée simple : chaque régie expose une API qui renvoie exactement les mêmes données que Supermetrics récupère. Si tu appelles ces API toi-même, tu supprimes l'intermédiaire ET tu gardes le contrôle total sur les calculs.

Ensuite, au lieu de coder un dashboard, tu exposes ces connexions sous forme de tools dans un serveur MCP (Model Context Protocol). Concrètement, ton assistant IA (Claude, GPT) devient capable d'appeler :

get_google_ads_report(customer_id, start_date, end_date)
get_meta_insights(ad_account_id, date_preset)
get_tiktok_report(advertiser_id, start_date, end_date)

Ton workflow mensuel devient :

1. Tu ouvres Claude
2. Prompt : "Rapport juillet pour le client Nova — synthèse exécutive,
   dépense par canal vs juin, CPA par campagne, top 3 variations,
   3 recommandations. Format email."
3. Le MCP interroge les 3 régies en parallèle
4. Claude assemble, calcule, compare, rédige
5. Tu relis, tu ajustes une phrase, tu envoies

Temps réel : 10 minutes au lieu de 4 heures.

Accès Google Ads API via un compte MCC

C'est la partie la plus bureaucratique mais la plus stable. Le principe : tu passes par un compte Manager (MCC) qui chapeaute tes comptes clients.

  1. Crée un compte MCC si tu n'en as pas déjà un : ads.google.com → icône de compte → « Gérer les comptes » → « Créer un compte manager ». Si tu gères déjà des clients en tant qu'agence, tu en as probablement un.
  2. Lie les comptes clients au MCC : depuis le MCC, « Comptes » → « + » → demande d'accès au compte client existant. Le client accepte depuis sa propre interface.
  3. Projet Google Cloud : sur console.cloud.google.com, crée un projet dédié (ex: wardogz-reporting).
  4. Active l'API Google Ads : menu « API et services » → « Bibliothèque » → cherche « Google Ads API » → « Activer ».
  5. Crée tes identifiants OAuth : « API et services » → « Identifiants » → « Créer des identifiants » → « ID client OAuth » → type « Application desktop ». Télécharge le JSON.
  6. Demande le token développeur : dans ton MCC → « Outils et paramètres » → « Configuration » → « Centre API ». Demande l'accès « Niveau basique ». Pour un usage interne (tes propres outils, pas un service commercialisé), l'approbation est rapide et gratuite.
  7. Génère un refresh token : passe par OAuth Playground (developers.google.com/oauthplayground) ou un petit script Python avec la lib google-auth. Ce refresh token sert ensuite à obtenir un access token valide automatiquement.

Une fois branché, tu requêtes en GAQL (Google Ads Query Language) :

SELECT
  campaign.name,
  metrics.cost_micros,
  metrics.clicks,
  metrics.impressions,
  metrics.conversions
FROM campaign
WHERE segments.date BETWEEN '2026-07-01' AND '2026-07-31'
ORDER BY metrics.cost_micros DESC

Piège à connaître : cost_micros est en micro-unités. Divise par 1 000 000 pour avoir le coût réel en euros. On a tous affiché « 12 millions de dépense » une fois dans sa vie.

Pour aller plus loin sur Google Ads en Python, j'ai détaillé la stack complète dans Automatiser les rapports Google Ads avec l'API et Python.

Accès à la Meta Marketing API

Chez Meta, l'accès passe par une app Business et un system user (utilisateur système), qui évite les tokens personnels qui expirent.

  1. Business Manager : assure-toi que les comptes pub clients sont bien dans un Business Manager (business.facebook.com). Si tu es agence, c'est déjà le cas via le partage d'actifs.
  2. Crée l'app : developers.facebook.com → « Mes apps » → « Créer une app » → cas d'usage « Autre » → type « Business ».
  3. Ajoute le produit Marketing API : dans le tableau de bord de l'app, section « Ajouter des produits », clique sur « Marketing API ».
  4. System user : retour dans le Business Manager → Paramètres → « Utilisateurs système » → « Ajouter ». Crée un utilisateur système admin. C'est lui qui portera le token permanent.
  5. Génère le token : sélectionne le system user → « Générer un nouveau token » → permissions ads_read et business_management. Choisis « Jamais expirer » (c'est possible uniquement pour les system users).
  6. Attribue les actifs : toujours dans le system user, onglet « Attribuer des actifs » → coche les comptes pub concernés. Sans cette étape, ton token existe mais ne voit aucun compte.
  7. Note les Ad Account IDs : format act_1234567890 (visible dans l'URL du Gestionnaire de publicités).

Requête type pour les insights mensuels :

GET https://graph.facebook.com/v21.0/act_1234567890/insights
  ?level=campaign
  &time_range={"since":"2026-07-01","until":"2026-07-31"}
  &fields=spend,impressions,clicks,cpm,cpc,actions
  &limit=100

Deux pièges Meta :

  • Le champ actions est une liste d'objets ({action_type, value}), pas un nombre. Il faut extraire le bon action_type (ex: purchase, lead) côté code.
  • L'attribution par défaut diffère de Google et TikTok (7 jours après clic / 1 jour après vue chez Meta). Pour un rapport multi-canaux honnête, précise explicitement action_attribution_windows=["7d_click","1d_view"] ou documente l'écart dans ton rapport.

Sur les conversions Meta sans doublon, voir Configurer la Conversions API Meta sans doublon d'événements.

Accès à la TikTok Ads API

TikTok est le plus verbeux des trois côté procédure, mais ça se fait une fois.

  1. Business Center TikTok : assure-toi d'avoir un Business Center (business.tiktok.com) avec les comptes pub clients rattachés.
  2. App développeur : developers.tiktok.com → connexion avec ton compte Business → « Manage Apps » → « Connect an app » → choisis « Ads API ».
  3. Formulaire de review : décris ton cas d'usage (reporting interne, lecture seule). Précise bien que tu demandes uniquement des permissions de lecture — ça accélère l'approbation.
  4. Approbation : généralement 3 à 10 jours ouvrés. TikTok peut demander une vidéo de démonstration du flux OAuth. Sois précis et honnête dans la description.
  5. OAuth flow : une fois l'app validée, tu implémentes le flux Authorization Code : redirection vers TikTok, consentement du client, récupération du authorization_code, échange contre access_token.
  6. Attention aux expirations : l'access_token TikTok expire en 24h, le refresh_token en 30 jours. Contrairement à Meta, prévois impérativement un refresh automatique sinon ton pipeline casse silencieusement.

Requête type (endpoint v3, rapport intégré) :

POST /open_api/v3.0/report/integrated/get/
{
  "advertiser_id": "1738xxxxxxx",
  "report_type": "BASIC",
  "data_level": "AUCTION_CAMPAIGN",
  "dimensions": ["campaign_id", "stat_time_day"],
  "metrics": ["spend", "impressions", "clicks", "ctr", "conversion"],
  "start_date": "2026-07-01",
  "end_date": "2026-07-31",
  "page_size": 200
}

Pour la création de campagnes TikTok en API (le pendant « exécution » du reporting), voir Utiliser l'API TikTok Ads en mode create.

Le plan d'intégration en 5 étapes

Quel que soit le nombre de régies, l'architecture reste la même. Voici le squelette que j'utilise :

1. Couche auth centralisée

Un seul module gère tous les tokens : stockage chiffré (jamais en clair dans le repo), refresh automatique, alerte si un refresh échoue. Chaque plateforme expose une interface commune : fetch_spend(start, end, level) renvoyant un DataFrame normalisé.

2. Normalisation des schémas

Chaque régie nomme différemment les mêmes concepts (spend chez Meta, cost_micros chez Google, spend chez TikTok mais en devise locale du compte). Ta couche de normalisation convertit tout dans un schéma unique : platform | account | campaign | date | spend | impressions | clicks | conversions | currency.

3. Cache et rate limits

Les trois API ont des quotas. Cache les réponses par (compte, période, niveau) pour éviter de re-tirer la même donnée dix fois dans la même session de reporting. Un simple SQLite suffit largement.

4. Exposition MCP

Tu enveloppes chaque fonction dans un tool MCP. En Python avec le SDK officiel :

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("wardogz-reporting")

@mcp.tool()
def get_multi_platform_report(account_ids: dict, start: str, end: str) -> str:
    """Agrège dépense, impressions, clics et conversions
    Google + Meta + TikTok pour la période donnée."""
    g = google.fetch(account_ids["google"], start, end)
    m = meta.fetch(account_ids["meta"], start, end)
    t = tiktok.fetch(account_ids["tiktok"], start, end)
    return normalize_and_merge([g, m, t]).to_json(orient="records")

5. Branchement dans Claude/GPT

Config JSON côté client IA :

{
  "mcpServers": {
    "wardogz-reporting": {
      "command": "python",
      "args": ["/path/to/server.py"]
    }
  }
}

Les credentials restent côté serveur (variables d'environnement), jamais dans le prompt.

Si tu veux comprendre la logique MCP appliquée à un autre cas (tracking GTM), j'en parle dans Intégrer Google Tag Manager en API avec un serveur MCP.

Le prompt final : ton rapport client en une phrase

Une fois le MCP branché, voici le genre de prompt que j'utilise en fin de mois :

Rapport mensuel juillet pour le client Nova.
Utilise get_multi_platform_report sur la période 2026-07-01 → 2026-07-31
et la même chose sur juin pour la comparaison.

Format attendu (email client, français, professionnel mais direct) :
1. TL;DR en 3 lignes (dépense totale, conversions, CPA global, delta vs juin)
2. Tableau par plateforme (dépense, impr., clics, conv., CPA, delta %)
3. Top 3 campagnes / bottom 3 avec hypothèse d'explication
4. 3 recommandations concrètes pour août
Ne mentionne jamais les noms de campagnes internes, utilise les labels publics.

Claude appelle les tools, reçoit les données normalisées, calcule les deltas, repère lui-même les variations significatives, et rédige. Toi tu relis, tu corriges une formulation si besoin, tu envoies.

Le gain n'est pas juste le temps : c'est surtout que tu relis au lieu de produire. Ton cerveau passe du mode copier-coller au mode conseil, ce qui est littéralement ce que ton client paie.

À retenir

  • Le reporting manuel de fin de mois coûte entre 600 et 1800€ de valeur/mois pour une agence avec quelques clients. C'est le premier candidat naturel à l'automatisation.
  • Supermetrics et co sont pratiques mais chers, rigides, et ne font ni l'analyse ni le commentaire client.
  • Les accès API sont gratuits : MCC Google Ads (+ token développeur niveau basique), system user Meta (token permanent ads_read), app TikTok Ads API (review en lecture seule).
  • Le piège principal est la gestion des tokens : Meta expire rarement, TikTok expire tout le temps. Centralise le refresh dès le début.
  • Normalise les schémas avant toute analyse : attribution, devises et noms de champs diffèrent selon les régies.
  • Le serveur MCP transforme ta stack en assistant conversationnel : le rapport client devient un prompt de 10 lignes, pas une journée de travail.
  • Chez Wardogz, c'est exactement ce qu'on opère au quotidien : un serveur MCP branché sur Google, Meta et TikTok pour le pilotage et le reporting de nos clients. Si tu préfères qu'on te le construise plutôt que de le faire seul, parlons-en.
FAQ

Questions fréquentes

Faut-il être développeur pour monter cette stack de reporting ?+

Non, mais il faut être à l'aise avec la ligne de commande et un minimum de Python (ou déléguer la partie technique). Les accès API eux-mêmes sont de la configuration web classique. Le développement se limite à la normalisation des données et à l'exposition MCP, environ 200-300 lignes de code au total.

Combien coûte cette architecture par rapport à Supermetrics ?+

Les API sont gratuites jusqu'à des quotas très élevés, largement suffisants pour du reporting mensuel. Le coût réel est le temps de build initial : comptez 2 à 5 jours pour une première version propre. Au-delà de 2-3 clients, tu es rentabilisé par rapport à un abonnement SaaS, et tu gardes la propriété de ton infrastructure.

Que se passe-t-il si un token expire pendant la génération du rapport ?+

Ton tool MCP doit renvoyer une erreur explicite (« token Meta expiré, refresh échoué ») plutôt qu'un résultat vide. Bien implémenté, le refresh est automatique et transparent ; mal implémenté, tu découvres le problème au moment du prompt. D'où l'importance de tester le refresh avant le jour J.

Peut-on faire pareil avec ChatGPT ou Claude sans MCP ?+

Oui techniquement (function calling natif), mais MCP apporte une couche standardisée : même serveur utilisable par plusieurs assistants IA, gestion propre des credentials côté serveur, découverte automatique des tools. Si tu hésites, commence par le function calling simple puis migre vers MCP quand tu veux industrialiser.

Envie d'un système comme celui-ci ?

On conçoit et développe l'automatisation qui correspond à votre agence.

Discuter de votre projet