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.
- 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.
- 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.
- Projet Google Cloud : sur console.cloud.google.com, crée un projet dédié (ex: wardogz-reporting).
- Active l'API Google Ads : menu « API et services » → « Bibliothèque » → cherche « Google Ads API » → « Activer ».
- Crée tes identifiants OAuth : « API et services » → « Identifiants » → « Créer des identifiants » → « ID client OAuth » → type « Application desktop ». Télécharge le JSON.
- 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.
- 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.
- 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.
- Crée l'app : developers.facebook.com → « Mes apps » → « Créer une app » → cas d'usage « Autre » → type « Business ».
- Ajoute le produit Marketing API : dans le tableau de bord de l'app, section « Ajouter des produits », clique sur « Marketing API ».
- 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.
- Génère le token : sélectionne le system user → « Générer un nouveau token » → permissions
ads_readetbusiness_management. Choisis « Jamais expirer » (c'est possible uniquement pour les system users). - 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.
- 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
actionsest 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.
- Business Center TikTok : assure-toi d'avoir un Business Center (business.tiktok.com) avec les comptes pub clients rattachés.
- App développeur : developers.tiktok.com → connexion avec ton compte Business → « Manage Apps » → « Connect an app » → choisis « Ads API ».
- 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.
- 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.
- 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.
- 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.
