La plupart des rapports Performance Max vous indiquent le chiffre d'affaires et le ROAS. Peu vous donnent le profit brut, car Google ne peut le calculer que si chaque produit de votre flux comporte un coût. Google précise que ce coût peut être approximatif : son propre guide de configuration suggère d'estimer les COGS à 80 % du prix du produit lorsque vous n'avez pas de chiffres exacts. Ce guide s'adresse aux responsables de flux et aux responsables paid media qui disposent quelque part d'une colonne de coût (export d'ERP, liste de prix fournisseur) et veulent l'intégrer au flux Merchant Center. À la fin, vous disposerez d'un attribut cost_of_goods_sold correctement formaté, d'une balise de conversion cohérente avec lui et d'un premier rapport de marge que vous pourrez transformer en paliers de custom labels.
Ce que cost_of_goods_sold fait et ne fait pas
cost_of_goods_sold est un attribut Merchant Center qui alimente le reporting du profit brut. Google définit le profit brut comme le chiffre d'affaires moins les COGS. L'attribut ne modifie ni les produits approuvés, ni leur classement, ni vos enchères. Il fournit uniquement à Google Ads un coût à soustraire du chiffre d'affaires déjà enregistré pour chaque article vendu.
Il est facultatif pour la plupart des marchands. Google ne le déclare obligatoire que pour les remises automatiques et les promotions dynamiques. Pour tous les autres, il s'agit d'une amélioration du reporting, et celui-ci ne fonctionne que si la balise de conversion envoie également les données de panier au niveau de chaque article.
Cet attribut n'est pas un paramètre d'enchères, et Feedance ne gère pas les enchères. Ce que ces données vous apportent, c'est une vision fiable des produits et des campagnes qui rapportent de l'argent, afin que vos décisions de structure et de budget reposent sur le profit plutôt que sur le chiffre d'affaires.
Étape 1 : décider d'où viendra le coût de chaque produit
Google accepte les valeurs exactes, les moyennes et les estimations ; la première décision consiste donc à choisir la source en laquelle vous avez assez confiance pour la maintenir. Nous classons ci-dessous les options selon la fréquence à laquelle elles restent exactes après le premier mois.
| Source du coût | Précision | Charge de maintenance | À utiliser quand |
|---|---|---|---|
| Export de l'ERP ou du système de stock, par SKU | Élevée | Faible une fois automatisé | Les coûts sont déjà stockés par variante |
| Liste de prix fournisseur croisée sur le SKU | Moyenne à élevée | Moyenne ; les listes changent à chaque saison | Pas d'ERP, mais un fichier fournisseur propre |
| Moyenne par catégorie (par exemple 0,62 x prix pour une catégorie) | Moyenne | Faible | Les marges sont homogènes au sein d'une catégorie |
| Pourcentage fixe du prix (exemple de Google : 80 %) | Faible | Aucune | Vous avez besoin d'un premier rapport cette semaine et affinerez plus tard |
Un pourcentage fixe produit un profit brut qui évolue exactement comme le chiffre d'affaires ; il ne vous dira donc jamais qu'un produit rapporte plus par vente qu'un autre. Utilisez-le pour activer le reporting, pas pour prendre des décisions de marge.
Étape 2 : formater l'attribut avec exactitude
La spécification de Google pour cost_of_goods_sold est un nombre suivi d'un code devise ISO 4217, non répété, avec un point comme séparateur décimal. Le non-respect de l'une de ces règles peut rendre des produits inéligibles au reporting, ce qui produit des données incomplètes.
Dans un flux délimité par des tabulations, la valeur se présente ainsi :
412.50 TRY
En XML :
<g:cost_of_goods_sold>412.50 TRY</g:cost_of_goods_sold>
Utilisez pour les COGS la même devise que le prix remonté par votre balise de conversion. Google le recommande pour éviter les incohérences liées aux taux de change. Les marchands qui vendent en livres turques avec un fournisseur facturant en euros doivent convertir le coût en livres turques dans le flux avant l'export, avec un taux actualisé à intervalles réguliers.
Voici les erreurs de formatage que nous rencontrons le plus souvent dans les colonnes de coût, et l'effet de chacune :
| Valeur source | Problème | Valeur corrigée |
|---|---|---|
412,50 TRY | Virgule comme séparateur décimal, fréquente dans les exports en locale turque | 412.50 TRY |
412.50 | Pas de code devise | 412.50 TRY |
TL 412.50 | Code non conforme à la norme ISO 4217, ordre incorrect | 412.50 TRY |
1,412.50 TRY | Séparateur de milliers à l'intérieur du nombre | 1412.50 TRY |
0.00 TRY | Coût vide exporté comme zéro, ce qui se lit comme 100 % de marge | Omettre l'attribut pour ce produit |
La dernière ligne relève du jugement et non d'une règle de Google. Un coût nul est un nombre valide : Google l'acceptera, et il gonflera le profit brut de cet article. Nous omettons l'attribut lorsque le coût est inconnu.
Étape 3 : transmettre la valeur à Merchant Center
Google recense trois moyens de fournir les données de COGS : votre flux produits, la Content API (et son successeur, la Merchant API) ou un flux supplémentaire. La voie du flux supplémentaire est généralement la plus sûre lorsque les données de coût proviennent d'un autre système que le catalogue produits, car vous pouvez envoyer un fichier à deux colonnes (id et cost_of_goods_sold) sans toucher au flux principal.
Si vous gérez vos flux avec une plateforme, l'équivalent est une couche qui ajoute un attribut sans réécrire la source. Dans Feedance, c'est le rôle des flux supplémentaires, et les Feed Rules peuvent calculer un coût moyen par catégorie à partir du prix lorsque vous utilisez une estimation. Nous n'avons pas publié d'exemple client pour cet usage précis ; considérez donc le fonctionnement comme celui décrit sur ces pages de fonctionnalités.
Étape 4 : vérifier que les données de panier correspondent aux ID de votre flux
Le coût n'est utilisé que si Google peut faire correspondre un article vendu à un article du flux. L'aide de Google indique que les ID d'article du tableau d'articles de la balise de conversion doivent correspondre exactement à l'attribut id de votre flux Merchant Center, et que seuls les articles d'un compte Merchant Center associé au compte Google Ads sont traités. Les conversions éligibles doivent être des conversions d'achat sur lesquelles on peut enchérir, utilisant la balise Google ou Google Tag Manager.
Parcourez cette liste de contrôle avant d'attendre les données :
- Le compte Merchant Center est associé au compte Google Ads qui possède la conversion d'achat.
- La balise d'achat envoie un tableau d'articles avec un ID, un prix et une quantité pour chaque ligne.
- L'ID de la balise est exactement la même chaîne que l'
iddu flux, y compris la casse et tout suffixe de variante. Si votre balise envoie le SKU parent et que votre flux utilise des ID de variantes, rien ne correspond. - Le prix de la balise utilise la même devise que les valeurs de COGS.
- Les diagnostics de l'action de conversion n'affichent aucun avertissement d'ID non correspondant. Google renvoie à cette section de diagnostics pour repérer les écarts.
Les écarts d'ID d'article sont la cause la plus fréquente d'un déploiement de COGS qui affiche des tirets au lieu de chiffres. Google indique qu'en l'absence de l'attribut de COGS, les valeurs de COGS et de profit brut apparaissent vides ou sous forme de tiret dans les rapports.
Étape 5 : lire le premier rapport et le confronter aux chiffres de la finance
Google Ads expose les résultats sous forme de profit brut, de marge brute, de coût des marchandises vendues, de chiffre d'affaires et d'unités vendues. Pour Performance Max, l'API Google Ads documente ces métriques sous les noms metrics.gross_profit_micros, metrics.gross_profit_margin et metrics.cost_of_goods_sold_micros, disponibles dans asset_group_product_group_view, campaign, customer et shopping_performance_view.
Deux réserves issues de la documentation de l'API influencent la lecture des premiers chiffres. Les métriques de données de panier ne sont pas disponibles tant que toutes les conversions n'ont pas été enregistrées pour les produits associés ; les premiers jours paraîtront donc incomplets. Par ailleurs, à partir du 15 juin 2026, shopping_performance_view inclut les données de tous les réseaux Performance Max, et non plus seulement du Réseau Display ; les métriques peuvent donc augmenter une fois l'ajout de ces données effectué. Si vous comparez un avant et un après, n'attribuez pas ce palier ponctuel à la modification de votre flux.
Validez par un contrôle de cohérence : choisissez une semaine, prenez le chiffre d'affaires que Google Ads attribue aux données de panier, soustrayez le coût de votre équipe finance pour les mêmes produits, puis comparez. Attendez-vous à un écart si vos COGS sont une moyenne. Ne vous attendez pas à ce qu'il soit nul.
Étape 6 : transformer le profit brut en paliers de marge
Une fois la marge brute visible par produit, regroupez les produits en quelques paliers et écrivez le palier dans un custom label. Google autorise custom_label_0 à custom_label_4, chacun jusqu'à 100 caractères, avec une valeur par produit et par attribut, et jusqu'à 1 000 valeurs uniques par label. Trois à cinq paliers suffisent.
Un schéma à titre d'illustration (les chiffres sont des exemples, pas des références) :
| Marge brute sur le prix du flux | Valeur de custom_label_1 | Usage typique |
|---|---|---|
| Moins de 20 % | margin_low | Groupe de fiches distinct ; à juger sur le profit par clic, pas sur le ROAS |
| 20 % à 40 % | margin_mid | Groupe par défaut |
| Plus de 40 % | margin_high | Candidat à un budget supplémentaire |
| Pas de COGS | margin_unknown | Liste à examiner ; corriger les données |
Le palier est un calcul côté flux à partir de price et de cost_of_goods_sold ; une règle de flux peut donc l'écrire automatiquement à chaque reconstruction du flux. Notre article précédent sur les custom labels, le type de produit et l'ID d'article pour les groupes de fiches Performance Max explique combien de dimensions de labels une arborescence de groupes de fiches peut supporter avant de se fragmenter. Si vous voulez vérifier que la modification a été bénéfique, notre méthode de mesure d'une modification de flux sur le ROAS s'applique telle quelle.
Étape 7 : maintenir la colonne de coût à jour
Le coût devient obsolète plus vite que le prix. Désignez un responsable et fixez une cadence d'actualisation. Réexportez après chaque changement de prix fournisseur, chaque variation de devise qui pèse sur votre marge et chaque saison. Un produit dont le coût dépasse le prix devrait afficher une marge négative dans votre propre contrôle bien avant d'arriver dans un rapport.
Les limites de la méthode
Le reporting des COGS mesure le profit brut sur les articles vendus. Il n'inclut ni les subventions de livraison, ni les retours, ni les frais de paiement, ni les dépenses publicitaires : un produit peut donc afficher une bonne marge brute et pourtant faire perdre de l'argent. La documentation SA360 de Google donne elle-même l'exemple du coût de gros avant taxes, frais de livraison et coûts publicitaires, ce qui confirme ce périmètre.
Elle dépend aussi d'une implémentation correcte des données de panier, et exige que l'achat soit une conversion que Google peut attribuer. Seuls les achats remontés comme conversions avec données de panier peuvent apparaître dans ces métriques.
Les moyennes masquent la variance. Si une même catégorie mélange un accessoire à 15 % de marge et un produit principal à 55 %, une moyenne par catégorie faussera les deux.
Des concurrents traitent aussi ce sujet. DataFeedWatch publie un guide sur l'ajout du coût des marchandises vendues à un flux pour le reporting du profit brut, et des plateformes axées sur la rentabilité des produits, comme ROI Hunter, peuvent mieux vous convenir si la logique de profit est votre besoin principal (voir notre comparatif). Feedance prépare les données ; il ne fixe pas d'enchères ni de budgets à partir de celles-ci.
FAQ
cost_of_goods_sold est-il obligatoire pour Google Shopping ?
Non. Google le considère comme facultatif, sauf pour les remises automatiques et les promotions dynamiques, où il est obligatoire. Sans lui, vos annonces diffusent normalement, mais les métriques de COGS et de profit brut s'affichent comme vides.
Le coût doit-il être exact ?
Non. Google indique que ces données servent au reporting et n'ont pas besoin d'être exactes. Si le coût varie selon les produits, fournissez une moyenne ou une estimation approximative, comme 80 % du prix.
Les clients peuvent-ils voir le coût ?
Google décrit l'attribut comme une donnée d'entrée du reporting, utilisée lorsque les conversions sont remontées avec des données de panier. Sa documentation ne le présente pas comme un contenu publicitaire, mais nous n'avons pas testé toutes les surfaces ; vérifiez donc dans votre propre compte.
Pourquoi mes rapports affichent-ils un tiret pour le profit brut ?
En général, soit l'attribut est absent, soit les ID de la balise de conversion ne correspondent pas à l'id du flux. Vérifiez d'abord les diagnostics de l'action de conversion pour repérer les ID non correspondants.
Quelle devise dois-je utiliser ?
La devise du prix remonté par votre balise de conversion. Google recommande de les faire correspondre pour éviter les incohérences de taux de change.
Cela fonctionne-t-il avec Performance Max ?
Oui. L'API Google Ads documente les métriques de données de panier, dont le profit brut et la marge brute, pour les campagnes Performance Max où les conversions avec données de panier sont implémentées.
Où l'ajouter si je ne veux pas modifier le flux principal ?
Utilisez un flux supplémentaire ou la Content API ou la Merchant API. Google les recense, avec le flux principal, parmi les méthodes de transmission acceptées.
En quoi est-ce différent des custom labels ?
L'attribut de coût alimente le reporting de profit de Google. Un custom label est un segment que vous définissez pour structurer vos campagnes. Vous utilisez le premier pour calculer la marge et le second pour agir en conséquence.
Vérifiez votre flux avant d'ajouter la colonne de coût
Une colonne de coût n'est utile que si le reste du flux est sain. Passez votre flux dans l'outil gratuit d'audit de flux produits pour repérer les attributs manquants ou mal formés avant de construire des paliers de marge par-dessus.
Sources
- Google Merchant Center Help: Cost of goods (COGS) [cost_of_goods_sold]
- Google Ads Help: About conversions with cart data
- Google Ads Help: Set up and test reporting with conversions with cart data
- Search Ads 360 Help: Enable reporting on profit margins for Conversions with Cart Data
- Google Ads API: Performance Max retail reporting
- Google Merchant Center Help: Custom label [custom_label_0 to custom_label_4]
- DataFeedWatch: Get reporting on gross profit by adding cost of goods sold to your feed

Cofondateur de Feedance, il s'appuie sur son double parcours d'ingénieur informatique et de marketeur pour produire des analyses approfondies. Résolument attaché à transformer les données en stratégies concrètes, il s'engage à aider les marques à réaliser une croissance significative dans l'univers numérique.
LinkedIn



















