SEO
Rédigé le 17/9/2026
Modifié le 17/9/2026
3min

KPI SEO : les 20 testés un par un, 12 font décider, 8 non

Thibaut Legrand
Thibaut Legrand
Co-fondateur - Vydera
KPI SEO mesurables reporting Vydera
Sommaire

Un reporting dont chaque chiffre a une source ?

Vydera mesure, documente l'endpoint, et publie ce qui n'a pas répondu.

Parler à un expert

Points clés de l'article

  • On a appelé les 20 KPI d'un reporting SEO un par un sur leur endpoint, le 27 août 2026, en journalisant le code de retour. 12 répondent et font décider quelque chose, 8 non
  • La Search Console ne montre que 30,0 % des clics de vydera.com dès qu'on demande la dimension requête : 410 sur 1 366. Médiane de 42,3 % sur les 16 propriétés du compte, de 4,9 % à 80,2 %
  • La courbe de CTR par position qu'on voulait publier n'existe pas : 50 clics hors marque sur les positions 1 à 20 en douze mois, dont 0 sur les 10 693 impressions cumulées des positions 2, 3 et 4
  • Le même code passé sur un site témoin décroît proprement, de 3,02 % à 0,20 % de CTR agrégé entre la position 1 et la position 10. Le script n'est pas en cause, l'effectif l'est
  • Trois KPI n'ont pas répondu : PageSpeed Insights en 429, l'API CrUX en 403 sans clé. C'est un accès manquant sur ce poste, pas un KPI absent, et on le publie tel quel

Le slide arrive toujours avec la même question : qu'est-ce qu'on met dedans ? La réponse habituelle est une liste de KPI recopiée d'un blog. On a fait l'inverse. On a pris les 20 indicateurs qui composent un reporting SEO normal, et on a appelé chacun d'eux sur son endpoint le 27 août 2026, en journalisant le code de retour.

Le résultat tient en une phrase : 12 répondent et font décider quelque chose, 8 non. Et le chiffre qui a le plus changé notre façon de lire un rapport n'était dans aucune liste : la Search Console ne montre que 30,0 % des clics de vydera.com dès qu'on demande la dimension requête. 410 clics sur 1 366.

30 % : ce que votre rapport par requête ne voit pas

Deux appels, le même site, le même intervalle de douze mois. Sans aucune dimension : 1 366 clics, 109 389 impressions. Avec la dimension requête : 410 clics, 43 249 impressions. Soit 30,0 % des clics et 39,5 % des impressions. Recoupé à la main sur six découpages du même intervalle, le total du site ne bouge pas.

Ce n'est pas un travers de petit site. On a repassé le même contrôle sur les 16 propriétés Search Console du compte : la médiane des parts de clics encore visibles au niveau requête vaut 42,3 %, avec un minimum à 4,9 % et un maximum à 80,2 %. Sur la moitié des propriétés, plus de la moitié des clics disparaît dès qu'on demande sur quoi ils ont été faits.

Une précision qui compte et qu'on ne peut pas contourner : on mesure que les clics disparaissent, et de combien, pas la règle que Google applique pour les retirer. Cette règle n'est pas publiée, et rien dans ces appels ne permet de la reconstituer.

Ce n'est pas non plus réservé à la requête. Sur vydera.com, croiser la dimension page avec l'appareil ou le pays fait basculer le total sur la même table plus pauvre : 1 366 clics sans dimension, 1 366 par date, 1 375 par page, puis 419 dès qu'on ajoute l'appareil. Au passage, 1 375 contre 1 366 : la dimension page rend 9 clics et 5 045 impressions de plus que le total du site. Les totaux de Google ne se réconcilient pas entre eux, et ça se voit sur douze mois d'un site de 1 366 clics.

Les 20, un par un, avec leur code de retour

Voici la grille. Chaque ligne porte l'endpoint réellement appelé, le code qu'il a renvoyé, ce que le KPI fait décider, et son piège. La règle de tri est explicite : un KPI entre dans les 12 s'il répond et s'il fait décider quelque chose. Les deux conditions, pas une seule.

Les 12 se répartissent en trois familles de sources : sept viennent de searchAnalytics, trois de l'API URL Inspection, deux de l'API GA4 Data. Aucun ne demande d'outil payant.

Les 8, et pourquoi ce n'est pas huit fois la même chose

C'est là que la plupart des listes trichent, en jetant tout dans le même sac. Les 8 se répartissent en trois familles qui n'ont rien à voir entre elles.

Trois n'ont pas répondu ici

LCP, INP et CLS terrain. PageSpeed Insights a renvoyé 429 : quota journalier dépassé, partagé entre tous les appelants anonymes. L'API CrUX appelée en direct a renvoyé 403, avec le message « Method doesn't allow unregistered callers ». Aucune clé API n'est renseignée sur ce poste, et l'API refuse un jeton OAuth.

Ce n'est pas une donnée absente, c'est un accès manquant. La distinction n'est pas cosmétique : un site qui renvoie 403 n'est pas un site qui bloque, c'est un site qu'on n'a pas mesuré. Ce qui débloquerait ces trois lignes est connu et tient en une action, une clé API CrUX activée sur le projet. Elles restent dans le tableau, marquées non mesurées, plutôt que discrètement retirées.

Trois répondent et ne font rien décider

Ceux-là sont les seuls qui trompent vraiment, précisément parce qu'ils s'affichent proprement.

  • Position moyenne du site : 6,89. C'est une moyenne pondérée sur des requêtes sans rapport entre elles. Elle bouge quand le site gagne des impressions loin dans la SERP, donc elle se dégrade quand la visibilité progresse. Aucune décision ne peut s'y adosser.
  • CTR global du site : 1,25 %. Il mélange marque et hors marque. Sur vydera.com, la requête de marque affiche 16,15 % de CTR en position 1, le hors marque 0,16 % à la même position : la moyenne des deux ne décrit ni l'un ni l'autre.
  • Impressions totales : 109 389. Une impression en position 40 y pèse autant qu'une impression en position 2. Le chiffre monte quand un contenu prend de la longue traîne, ce qui ne dit rien de plus que ça.

Deux se louent

Les domaines référents et les citations dans les réponses IA. Les premiers se relèvent chez un fournisseur de backlinks : sur vydera.com, 33 domaines référents, 114 backlinks, un rang propriétaire de 164, première détection le 19 novembre 2025, pour 0,024036 $ mesurés au solde avant et après l'appel. Le nombre de domaines se vérifie un par un ; l'indice de rang, lui, est propriétaire et invérifiable.

Les secondes n'ont aucune API publique. Le KPI existe, il se loue. Sur vydera.com, il n'est mesuré nulle part : deux projets actifs sur le compte, aucun sur ce domaine. La mesure vaut zéro projet, pas zéro citation.

La courbe de CTR par position qu'on voulait publier, et qui n'existe pas

Le plan de cet article promettait une courbe de CTR par position calculée sur nos propres données, pour remplacer les tableaux recopiés depuis dix ans. On l'a calculée. Elle n'existe pas.

Hors marque, sur les positions 1 à 20 et sur douze mois, la Search Console rend 50 clics pour 24 383 impressions sur vydera.com. En appliquant un plancher de 10 impressions par couple requête-position, la position 1 pèse 78 couples, 3 703 impressions et 6 clics, soit 0,16 % de CTR agrégé, avec deux requêtes seulement à avoir reçu au moins un clic. Et les positions 2, 3 et 4 cumulent 0 clic sur 10 693 impressions.

La phrase honnête n'est donc pas « la courbe est plate ». C'est « l'effectif est trop faible pour tracer une courbe ». Pour le vérifier, on a passé un site témoin dans exactement le même code, un site d'hôtel dont nous détenons la propriété Search Console, 253 273 lignes brutes. Sa courbe décroît proprement, de 3,02 % de CTR agrégé en position 1 à 0,20 % en position 10. Le script n'est pas en cause, l'effectif l'est.

Trois choses à lire dans ce composant, et la troisième est la plus utile.

  1. Le CTR médian par requête vaut 0 % à chacune des 20 positions, sur les deux sites, position 1 comprise. Ce n'est pas un bug : sur le témoin en position 1, 21 requêtes sur 47 ont reçu un clic, donc la médiane est bien 0. Une courbe de CTR médian est illisible par construction.
  2. La statistique qui porte la forme, c'est la part des requêtes cliquées, pas la médiane. Sur le témoin : 44,7 % en position 1, 27,3 % en position 3, 5,8 % en position 10. C'est ce chiffre qu'il faut suivre dans un rapport.
  3. Au delà de la position 11, vydera.com repose sur moins de 10 requêtes, et quatre positions sont vides. Les cellules sont publiées vides et marquées insuffisantes. On n'interpole pas.

Un détail explique une partie du plat. Les impressions de position 1 hors marque de vydera.com sont portées par des questions conversationnelles sur un outil concurrent : « meteoria aeo tool », 389 impressions et 0 clic ; une question en espagnol de 168 caractères, 314 impressions et 0 clic ; « meteoria vs other aeo tools », 283 impressions et 0 clic. Ce sont des impressions de query fan-out, arrivées sur notre comparatif d'outils GEO. Elles ne se jugent pas au clic, et elles écrasent la position 1 de la courbe.

Deux réserves sur le témoin, à publier avec le reste : c'est un hôtel, écrasé par sa marque, 4 338 clics de marque sur 4 647. Il valide la méthode, il ne représente pas un site B2B.

Et une réserve sur nous, plus gênante. Sur vydera.com, la part « marque » du calcul, c'est une seule requête : 1 721 impressions en position 1, 278 clics, 16,15 % de CTR. Ces 278 clics font 278 des 284 clics de position 1 du site entier. Toute « courbe de CTR de notre site » publiée sans séparer la marque est une requête de marque déguisée en courbe.

Pourquoi aucune courbe de CTR issue de la Search Console n'est juste

Même avec du volume, deux déflations se cumulent, et aucune des deux n'est corrigeable depuis l'API.

La première, c'est la dimension requête, celle des 30 %. On a mesuré son effet sur le CTR lui-même, propriété par propriété : le CTR lisible au niveau requête divisé par le CTR réel du site donne un facteur de 0,71 en médiane sur 16 propriétés, de 0,15 à 1,34, et douze propriétés sur seize sont sous 1.

À ne pas surinterpréter : quatre sont au dessus, jusqu'à 1,34. Le sens de la déformation dépend du site. On ne peut donc pas écrire « la Search Console sous-estime toujours le CTR ». On peut écrire qu'elle le déforme, et que la déformation se mesure en deux appels sur votre propre propriété.

La seconde, c'est le filtre de pureté de position. Une ligne d'API porte une position moyenne, pas une position entière : 6,4 mélange des impressions en 6 et des impressions en 7. Pour calculer une courbe, il faut écarter ces lignes. Sur vydera.com, ce filtre retire 16,7 % des clics restants, 419 vers 349 ; sur le témoin, 22,6 %, 6 021 vers 4 661. Et il ne les retire pas au hasard : une ligne mélange deux positions quand elle porte beaucoup d'impressions, donc ce filtre coupe en priorité les jours chargés.

Dernier arbitrage, assumé : le plancher de 10 impressions par couple. Ce n'est pas une vérité, c'est un choix. On a recalculé la courbe à 1, 5, 10 et 30 impressions minimum. À 30, il ne reste plus rien au delà de la position 10, et les positions 5 à 10 tombent à quatre requêtes ou moins. Le plancher fabrique la courbe autant que la donnée.

Ce qu'on ne publie pas, et pourquoi

Le plan de cet article promettait aussi un seuil d'alerte par KPI. On ne le publie pas. Aucune de ces mesures ne permet de fixer un seuil, et un seuil inventé dans un article est pire qu'un article sans seuil : il finit dans un rapport. Un seuil utile se dérive de l'historique de douze mois du site concerné, pas d'une moyenne de secteur. La colonne « ce que ça fait décider » du tableau remplace la promesse, et elle, elle est mesurée.

Trois autres chiffres qu'on nous demande souvent et qu'on ne peut pas produire :

  • La part des impressions servies dans un aperçu IA. La dimension searchAppearance renvoie 0 ligne sur vydera.com et 5 sur une grosse propriété de contrôle : JOB_DETAILS, JOB_LISTING, VIDEO, TRANSLATED_RESULT, PRODUCT_SNIPPETS. La dimension fonctionne, et aucune de ses valeurs ne distingue une impression d'aperçu IA d'une impression de lien bleu.
  • Les visites des crawlers IA. Le site est hébergé sur Webflow, qui n'expose aucun journal d'accès ni aucun endpoint de journalisation dans son API v2. Hors de portée sur cet hébergement, point.
  • Le trafic organique estimé d'un concurrent. Aucune API ne le mesure. Les outils qui l'affichent le modélisent depuis un panel et une courbe de CTR moyenne, donc depuis exactement le chiffre que cette mesure montre indisponible.

Une dernière ligne, gênante, sur notre propre site : les conversions organiques répondent 200 et renvoient zéro. Le contrôle sans filtre de canal donne 0 événement clé sur 5 418 sessions tous canaux. Ce n'est pas un SEO qui ne convertit pas, c'est une propriété GA4 sur laquelle aucun événement clé n'est configuré. Le KPI le plus important du lot est inaccessible tant que ce paramétrage n'existe pas, et le paramétrage manquant est chez nous.

Le slide, alors

Six lignes, dans cet ordre.

  1. Clics hors marque, jamais les clics totaux.
  2. Requêtes distinctes rapportant au moins un clic, pour voir si la surface de captation s'élargit.
  3. Clics par page, pour savoir quoi mettre à jour le mois suivant.
  4. Taux d'indexation, parce qu'une page absente de l'index ne figurera jamais dans les trois premières lignes. Le diagnostic complet est dans notre arbre de décision en 7 causes.
  5. Sessions et conversions organiques côté GA4, après avoir vérifié qu'un événement clé existe vraiment.
  6. La part des clics visibles au niveau requête, une fois, en note de bas de slide. Elle dit quelle confiance accorder aux cinq lignes précédentes.

Ce qui n'y figure pas : la position moyenne, le CTR global, les impressions totales, l'autorité de domaine. Et pas de courbe de CTR par position tant que le site n'a pas l'effectif pour en tracer une.

Refaire la mesure chez vous

Le contrôle le plus rentable prend deux appels d'API et deux minutes. Interroger searchAnalytics sur douze mois sans aucune dimension, puis le même intervalle avec la dimension query, et diviser. Le rapport obtenu est votre part de clics visibles au niveau requête. Sous 50 %, tout rapport par requête décrit moins de la moitié de votre site, et mieux vaut l'écrire dans le slide que le découvrir en réunion.

Le reste suit la même logique. L'API URL Inspection accepte 2 000 inspections par jour et par propriété, l'API GA4 Data répond en quelques centaines de millisecondes, et un contrôle de cohérence coûte un appel de plus : marque plus hors marque doit redonner exactement l'ensemble, au clic et à l'impression près. Sur les deux propriétés testées ici, c'est le cas, et c'est ce qui permet de croire au reste du fichier.

Pour les liens qui alimentent l'indexation, voir notre méthode de maillage interne. Et si vous voulez que ce reporting existe sans avoir à l'assembler vous-même, c'est le rôle de notre suivi de performance.

  • Quels KPI SEO présenter à sa direction ?

    Six suffisent : clics hors marque, requêtes distinctes rapportant au moins un clic, clics par page, taux d'indexation, sessions et conversions organiques, plus la part des clics visibles au niveau requête en note de bas de page. Les quatre à retirer du slide : position moyenne, CTR global, impressions totales, autorité de domaine.

  • Pourquoi la position moyenne de la Search Console ne veut rien dire ?

    C'est une moyenne pondérée calculée sur des requêtes sans rapport entre elles. Elle bouge dès que le site gagne des impressions loin dans la SERP, donc elle se dégrade quand la visibilité progresse. Sur vydera.com, elle vaut 6,89 sur douze mois, et aucune décision ne peut s'y adosser.

  • Pourquoi le CTR de ma Search Console ne correspond pas au CTR réel ?

    Parce que la dimension requête ne montre qu'une partie des clics. Sur vydera.com, 30,0 % des clics seulement restent visibles quand on demande cette dimension. Sur 16 propriétés, le CTR lisible au niveau requête vaut 0,71 fois le CTR réel du site en médiane, de 0,15 à 1,34. Le sens de la déformation dépend du site : quatre propriétés sur seize sont au dessus de 1.

  • Peut-on calculer sa propre courbe de CTR par position ?

    Techniquement oui, l'API répond 200. Mais il faut assez de clics. Sur vydera.com, 50 clics hors marque répartis sur 20 positions en douze mois ne permettent pas de tracer quoi que ce soit : les positions 2, 3 et 4 cumulent 0 clic sur 10 693 impressions. Un site témoin passé dans le même code décroît proprement, de 3,02 % à 0,20 % entre la position 1 et la position 10.

  • Comment mesurer la part des clics que la Search Console ne montre pas ?

    Deux appels à searchAnalytics sur le même intervalle : un sans aucune dimension, un avec la dimension query. Le rapport des deux totaux de clics est votre part visible au niveau requête. Sur les 16 propriétés testées, la médiane est de 42,3 %, avec un minimum à 4,9 % et un maximum à 80,2 %.

  • Peut-on mesurer les citations dans les réponses IA ?

    Pas avec une API publique : aucune ne les expose. Le KPI existe et se loue chez un fournisseur spécialisé. Sur vydera.com, il n'est mesuré nulle part au 27 août 2026 : deux projets actifs sur le compte, aucun sur ce domaine. Ça se lit zéro projet, pas zéro citation.


Thibaut Legrand
Thibaut Legrand
Co-fondateur - Vydera