FlowKit

Automatiser le reporting LinkedIn Ads avec n8n et l'IA

Par Clément Lacaille (Tech-Bharat) · Publié le 3 septembre 2026 · 6 min de lecture · notre méthode

Bundle FlowKit Complet — 269 €

12 workflows n8n prêts à importer, guide en français, garantie 14 jours

Voir le bundle

Contrairement à Google Ads ou Meta Ads, LinkedIn Ads ne bénéficie d'aucun node natif de reporting dans n8n — et pourtant, pour une bonne partie des équipes B2B, c'est la plateforme publicitaire qui génère le coût par lead le plus élevé et donc celle qui mérite le suivi le plus rigoureux. Ce guide détaille comment obtenir l'accès à l'API Marketing de LinkedIn, interroger l'endpoint adAnalytics depuis n8n via HTTP Request, et livrer une synthèse IA du coût par lead directement en Slack ou par email.

Pourquoi n8n n'a pas de node natif pour les rapports LinkedIn Ads

Le node LinkedIn intégré à n8n couvre la publication organique — créer un post sur un profil ou une page entreprise (voir notre guide pour publier automatiquement sur LinkedIn avec l'IA) — ainsi que la synchronisation des réponses aux formulaires de leads via webhook. Il ne couvre pas la partie publicitaire : campagnes, budgets et métriques de performance relèvent d'une API distincte, l'API Marketing (Advertising API), qui n'a pas de node dédié dans n8n. La seule voie disponible est donc le node HTTP Request, configuré pour interroger directement les endpoints REST de LinkedIn.

Obtenir l'accès à l'API LinkedIn Ads

Première différence structurante avec Google Ads ou Meta, dont l'accès en lecture aux rapports est ouvert à tout développeur : LinkedIn soumet l'accès aux scopes r_ads et r_ads_reporting à une revue. Dans le Developer Portal LinkedIn, il faut créer une application, lui associer le produit Advertising API (sous Marketing Developer Platform), puis compléter un formulaire de demande d'accès. Le délai annoncé est de 3 à 10 jours ouvrés, avec une approbation quasi automatique pour un usage marketing ou agence légitime — mais ce délai doit être anticipé dès la planification du projet, pas découvert au moment de connecter n8n.

Une fois l'accès accordé, l'authentification suit un flux OAuth2 classique (Authorization Code) : créer un credential OAuth2 API générique dans n8n avec le Client ID et le Client Secret de l'application LinkedIn, l'URL d'autorisation https://www.linkedin.com/oauth/v2/authorization et l'URL de token https://www.linkedin.com/oauth/v2/accessToken, en demandant les scopes r_ads et r_ads_reporting.

Interroger l'API adAnalytics depuis n8n

L'endpoint central est GET https://api.linkedin.com/rest/adAnalytics. Deux headers sont obligatoires sur chaque appel, en plus du token OAuth2 :

  • LinkedIn-Version: 202508 (ou la version mensuelle en cours) — LinkedIn publie une nouvelle version chaque mois au format YYYYMM, chacune supportée au moins un an ; l'omettre expose à un comportement par défaut non garanti.
  • X-Restli-Protocol-Version: 2.0.0 — requis par le protocole Rest.li sur lequel repose l'API.

La requête utilise un paramètre q (finder) qui détermine la structure du résultat : q=analytics pour un regroupement par un seul élément (par exemple par campagne), q=statistics pour croiser jusqu'à trois dimensions. Le paramètre pivot=CAMPAIGN isole les métriques par campagne, et campaigns[0]=urn:li:sponsoredCampaign:123456789 filtre sur les campagnes voulues via leur URN — pas leur simple ID numérique, un piège fréquent pour qui vient de Google Ads ou Meta où l'ID brut suffit. La plage de dates suit une syntaxe imbriquée propre à Rest.li plutôt qu'un simple start_date/end_date :

dateRange=(start:(day:1,month:8,year:2026),end:(day:31,month:8,year:2026))

Piège à connaître : le protocole Rest.li attend que les parenthèses, deux-points et virgules de cette syntaxe restent tels quels dans l'URL, sans encodage pourcentage. Si vous construisez cette requête via l'onglet Query Parameters du node HTTP Request, n8n encode automatiquement ces caractères et LinkedIn rejette l'appel. La solution fiable consiste à construire l'URL complète, requête incluse, dans une expression du champ URL lui-même (sans passer par l'onglet Query Parameters), pour que la chaîne parte sans ré-encodage supplémentaire.

Adapter les métriques au reporting B2B

Le champ fields détermine les métriques renvoyées : impressions, clicks, costInLocalCurrency, mais aussi deux champs spécifiques à LinkedIn qui comptent souvent plus que le clic brut en B2B — oneClickLeads (leads captés via les formulaires natifs Lead Gen Forms, sans quitter LinkedIn) et externalWebsiteConversions (conversions trackées sur le site, à rapprocher de notre guide sur la Conversions API LinkedIn si vous envoyez déjà ces événements côté serveur). Un node Code calcule ensuite le coût par lead — la métrique qui compte réellement en B2B, davantage que le CPA générique utilisé sur du e-commerce :

return items.map(item => {
  const spend = Number(item.json.costInLocalCurrency);
  const leads = Number(item.json.oneClickLeads ?? 0) + Number(item.json.externalWebsiteConversions ?? 0);
  return {
    json: {
      platform: "linkedin_ads",
      campaignUrn: item.json.pivotValues?.[0],
      spend,
      clicks: Number(item.json.clicks),
      leads,
      costPerLead: leads > 0 ? spend / leads : null,
    }
  };
});

Comparer LinkedIn Ads à Google Ads et Meta Ads

Si vous suivez déjà Google Ads et Meta dans un rapport consolidé (voir notre guide sur le reporting automatique Google Ads et Meta Ads), le même principe de normalisation s'applique ici : un schéma commun avec platform, spend, clicks, conversions permet de trier toutes les plateformes ensemble par coût par acquisition croissant. La nuance à garder : le coût par lead LinkedIn est structurellement plus élevé que sur Google ou Meta pour la plupart des secteurs B2B — comparer les trois plateformes sur un CPA brut sans tenir compte de la qualité des leads capturés (souvent supérieure côté LinkedIn, ciblage professionnel oblige) fausse la lecture. Une étude publiée dans Economics of Development par Oklander, Karandin, Ptashchenko et Dybach (2025), consacrée à l'usage de LinkedIn comme outil de ciblage publicitaire en marketing B2B industriel, confirme que le retour sur investissement de la plateforme dépend fortement de la qualité de son ciblage professionnel plutôt que du seul volume de clics — un argument de plus pour suivre le coût par lead qualifié plutôt que le clic brut.

Qualifier les leads captés avant de les compter

Un lead issu d'un Lead Gen Form LinkedIn n'a pas la même valeur qu'un visiteur qualifié par un formulaire de contact classique — le champ oneClickLeads compte toute soumission, sans jugement sur sa pertinence. Brancher la sortie de ces formulaires sur un scoring automatique, comme décrit dans notre guide sur la qualification des leads entrants par IA, permet de pondérer le coût par lead réel par un taux de qualification plutôt que de le prendre au chiffre brut — une correction qui change souvent radicalement le classement des campagnes dans le rapport final.

Générer la synthèse IA et la distribuer

Comme pour un rapport Google Ads / Meta Ads, un node IA (voir notre guide pour connecter Claude ou GPT à n8n) transforme le tableau consolidé en une synthèse courte : campagnes au meilleur coût par lead, celles à mettre en pause, et une recommandation de réallocation de budget — en gardant le prompt strictement contraint aux chiffres fournis, sans extrapolation sur des causes non vérifiables. Le rapport part ensuite en Slack sur un cron hebdomadaire, avec les données brutes archivées à part pour reconstituer un historique de plusieurs mois — la même logique d'archivage que celle détaillée dans notre article sur la piste d'audit Supabase, appliquée ici à des métriques publicitaires plutôt qu'à des événements de conformité.

Pièges fréquents

  • Découvrir le délai de revue Marketing Developer Platform trop tard : 3 à 10 jours ouvrés avant d'avoir un token fonctionnel, à intégrer dans le planning du projet, pas dans son exécution.
  • Filtrer les campagnes par ID numérique au lieu de leur URN complet (urn:li:sponsoredCampaign:...) — l'API adAnalytics rejette silencieusement ou ignore un filtre mal formé.
  • Laisser n8n encoder automatiquement la syntaxe Rest.li (dateRange=(start:(...)...)) via l'onglet Query Parameters du node HTTP Request, au lieu de construire l'URL complète directement dans le champ URL.
  • Omettre le header LinkedIn-Version : l'appel fonctionne quand même, mais s'appuie alors sur un comportement par défaut non garanti dans le temps.
  • Comparer le coût par lead brut entre plateformes sans pondérer par le taux de qualification réel des leads — un lead LinkedIn plus cher n'est pas nécessairement un lead moins rentable.

Pour aller plus loin

Le principe de ce workflow — appel API authentifié, normalisation dans un node Code, synthèse contrainte par IA, archivage et distribution planifiée — est celui qui structure les workflows de reporting du Pack Conformité & Audit (149 €). Si vous multipliez ce type de synthèse IA sur plusieurs comptes publicitaires ou plusieurs rapports par semaine, notre guide sur le suivi du coût des appels IA dans n8n aide à garder ce poste de dépense sous contrôle.

FAQ

Questions fréquentes

n8n propose-t-il un node natif pour les rapports LinkedIn Ads ?

Non. Le node natif LinkedIn de n8n couvre uniquement la publication de posts organiques (profil ou page entreprise) et la synchronisation de formulaires de leads via webhook. Pour récupérer des métriques de performance publicitaire (impressions, clics, coût, leads), il faut passer par le node HTTP Request et interroger directement l'API adAnalytics de LinkedIn.

Faut-il une autorisation spéciale pour accéder à l'API de reporting LinkedIn Ads ?

Oui. Contrairement à Google Ads ou Meta, l'accès en production aux scopes r_ads et r_ads_reporting nécessite d'ajouter le produit « Advertising API » à votre application dans le Developer Portal LinkedIn et de passer une revue. Le délai est généralement de 3 à 10 jours ouvrés, avec une approbation quasi automatique pour un usage marketing ou agence légitime — mais ce délai doit être anticipé avant de bâtir le workflow.

Quels scopes OAuth2 sont nécessaires pour ce workflow ?

Au minimum r_ads (accès aux comptes et campagnes publicitaires) et r_ads_reporting (accès aux métriques de performance via adAnalytics). Ces deux scopes ont remplacé l'ancien r_ad_campaigns, désormais migré automatiquement chez les applications existantes.

Pourquoi le header LinkedIn-Version est-il obligatoire sur chaque appel ?

LinkedIn publie une nouvelle version de son API Marketing chaque mois, au format YYYYMM (par exemple 202508), chacune supportée au moins un an. Sans le header LinkedIn-Version explicite dans la requête, LinkedIn applique un comportement par défaut non garanti et potentiellement déprécié : le fixer explicitement évite qu'un changement de comportement silencieux casse le workflow dans plusieurs mois.

Bundle FlowKit Complet

269 €