Google Indexing API pour Magento 2
Cela nécessite des modifications dans le modèle
Non
Petites modifications
Changements importants
Nécessite des connaissances en programmation
Non
Notions de base
Avancé
Difficulté de configuration
Impact sur les performances
Conformité aux normes Magento
Informer Google plus rapidement des changements dans la boutique
Le module Kowal Google Indexing API pour Magento 2 permet de soumettre plus efficacement à Google les URL qui ont été ajoutées, modifiées ou qui doivent être supprimées de l’index. Au lieu d’attendre uniquement une nouvelle visite standard de la page par le robot Google, l’administrateur peut transmettre les URL sélectionnées à une file d’attente gérée par Google Indexing API.
La solution est particulièrement utile pour les boutiques où les contenus, l’offre, la disponibilité des produits, les pages CMS, les landing pages ou les articles de blog changent fréquemment. Le module organise l’ensemble du processus : il collecte les adresses depuis différents emplacements de Magento, les vérifie, supprime les doublons, contrôle les limites et enregistre l’historique des communications avec Google.
Google Indexing API est officiellement destinée principalement aux pages avec des données structurées
JobPostingetBroadcastEvent. La soumission d’une URL via l’API ne garantit ni l’indexation, ni la position dans les résultats, ni l’acceptation de chaque adresse par Google. Le module est un outil qui facilite la soumission technique des URL, et non un substitut à un SEO technique correct, au sitemap XML, aux balises canonical, au fichier robots, au hreflang et au maillage interne.
Principaux avantages
Meilleur contrôle de la soumission des adresses
Le module offre à l’administrateur un point central pour gérer les URL en attente d’envoi à Google. Les produits, catégories, pages CMS, l’import manuel d’URL et les futures sources peuvent utiliser la même file d’attente. Il n’est donc pas nécessaire de créer des intégrations séparées pour chaque type de contenu.
Moins de travail manuel après les changements dans la boutique
Les adresses peuvent être ajoutées à la file d’attente directement depuis le panneau d’administration Magento. Le module propose des actions de masse ainsi que des boutons sur les écrans d’édition de certaines entités, ce qui permet à l’administrateur de lancer rapidement l’indexation d’une seule page ou d’un groupe plus large d’adresses.
Utilisation plus sûre des limites de l’API
Google Indexing API fonctionne avec des limites. Le module prend en compte les limites quotidiennes et par minute, la taille du lot traité par cron ainsi que le délai d’envoi. Ainsi, les adresses ne sont pas envoyées de manière chaotique et il est plus facile de réduire le risque d’une consommation inutile de la limite disponible.
Moins de doublons et de soumissions répétées
Avant d’enregistrer une adresse, le module normalise l’URL, la valide et vérifie si la même adresse n’attend pas déjà dans la file active. Si une soumission similaire existe déjà, le système peut la mettre à jour ou la marquer comme dédupliquée. Cela réduit le désordre dans la file et diminue le nombre de requêtes inutiles vers Google.
Une meilleure visibilité pour l’équipe
Chaque soumission possède un statut, une source, une action, une priorité, un nombre de tentatives, une date d’envoi planifiée ainsi que des informations sur la réponse de Google. L’administrateur voit quelles adresses sont en attente, lesquelles ont été envoyées correctement, lesquelles nécessitent une nouvelle tentative et lesquelles se sont terminées par une erreur permanente.
Diagnostic plus simple des problèmes
Le module enregistre les logs de communication avec Google API, notamment le type de requête, l’adresse de l’endpoint, le payload, le statut HTTP, le contenu de la réponse et la durée. Cela facilite l’analyse des erreurs liées à la configuration, aux autorisations, aux limites ou aux URL soumises elles-mêmes.
Prêt pour l’évolution de la boutique
L’architecture du module repose sur un scheduler commun et une file d’attente. Les nouvelles sources d’URL n’ont pas besoin de communiquer directement avec Google. Il suffit qu’elles transmettent les adresses à la file, et le processeur existant se charge de la validation, de la planification, des limites, des nouvelles tentatives et de la journalisation.
Comment fonctionne le module en pratique
Le module agit comme une couche intermédiaire entre Magento et Google Indexing API.
- L’administrateur ou l’intégration sélectionne les URL à soumettre.
- Le module normalise et valide les URL, notamment au niveau du schéma, de l’hôte et des sources autorisées.
- Les adresses valides sont envoyées vers une file d’attente centrale avec le statut, l’action et la date d’envoi appropriés.
- Le cron Magento récupère périodiquement les enregistrements prêts à être traités.
- Le processeur de la file respecte les limites, les priorités, les délais et les verrous des enregistrements.
- Le module envoie la soumission à Google Indexing API ou effectue un traitement en mode dry-run.
- La réponse de Google est enregistrée dans l’enregistrement de la file ainsi que dans les logs de l’API.
- En cas d’erreurs temporaires, le module peut planifier une nouvelle tentative avec un délai.
Ainsi, l’envoi des URL ne dépend ni d’un clic unique ni d’une requête directe depuis le panneau d’administration. L’ensemble du processus est mis en file d’attente, auditable et plus résistant aux problèmes temporaires de l’API.
Fonctionnalités principales
- file d’attente centrale des URL pour différentes sources de contenu,
- prise en charge des actions
URL_UPDATEDetURL_DELETED, - import manuel de nombreuses URL depuis le panneau d’administration,
- actions de masse pour les produits et les pages CMS,
- boutons de soumission à l’indexation sur les écrans d’édition de produit, catégorie et page CMS,
- intégration optionnelle avec Amasty Blog sous forme de module séparé,
- normalisation et validation des URL,
- liste blanche des hôtes autorisés,
- prise en charge du store view et identification de la source de soumission,
- déduplication des soumissions actives,
- délai d’envoi, c’est-à-dire indexing lag,
- priorités et action
Transmit Now, - traitement par cron,
- contrôle de la limite quotidienne et par minute,
- nouvelles tentatives différées en cas d’erreurs temporaires,
- statuts de file d’attente :
scheduled,pending,processing,success,retry,failed_permanent,cancelled, - mode dry-run pour des tests sûrs sans envoi de requêtes réelles,
- logs API et rétention des logs,
- test credentials et metadata dans l’assistant de configuration.
À qui s’adresse ce module
Le module convient aux boutiques Magento 2 qui :
- mettent fréquemment à jour leur catalogue produit,
- publient ou modifient de nombreuses pages CMS,
- mènent des actions SEO sur plusieurs types de contenu,
- ont besoin de contrôler quelles URL ont été soumises à Google,
- veulent limiter la gestion manuelle des soumissions,
- travaillent dans un environnement multistore ou multilingue,
- ont besoin d’un audit clair des requêtes vers Google.
Cette solution est particulièrement précieuse pour les équipes e-commerce, SEO et administratives qui souhaitent disposer d’un processus commun et structuré de soumission des changements de la boutique à Google.
Exemples d’utilisation
Produits nouveaux ou modifiés
Après l’ajout d’un nouveau produit ou une modification importante d’un produit existant, l’administrateur peut transmettre son adresse à la file d’attente. Le module se charge de l’enregistrement de la soumission, du délai approprié, de la déduplication et de l’envoi ultérieur.
Mise à jour des pages CMS et des landing pages
Lorsque l’équipe marketing publie une nouvelle campagne, une promotion ou une page d’information, l’URL peut être ajoutée à la file d’attente sans travail manuel en dehors de Magento.
Mise en ordre des adresses après des changements sur le site
Le module prend en charge non seulement les soumissions de mise à jour, mais aussi l’action URL_DELETED. Il est ainsi possible de transmettre à Google des informations sur les adresses qui doivent être supprimées de l’index, si le scénario concerné est conforme aux règles d’utilisation de l’API.
Actions SEO en masse
En cas de changements plus importants dans la boutique, tels qu’une mise à jour de nombreux produits, une migration de contenu ou une actualisation de catégories, l’administrateur peut utiliser les actions de masse et suivre la progression dans la file d’attente.
Impact métier
La mise en œuvre du module donne à l’équipe un meilleur contrôle sur la soumission technique des changements à Google. Au lieu d’actions dispersées, manuelles et difficiles à vérifier, un processus unique est créé : l’adresse est ajoutée à la file d’attente, passe la validation, est envoyée dans le respect des limites, et le résultat est visible dans le panneau d’administration.
La principale valeur du module réside dans l’organisation du travail autour de l’indexation : moins de requêtes aléatoires, moins de doublons, un meilleur diagnostic et une responsabilité plus claire concernant ce qui a été soumis à Google.
Google Indexing API pour Magento 2 - installation et configuration
1. Informations importantes avant le déploiement
Le module intègre Magento 2 à Google Indexing API et permet d’ajouter des URL à une file d’attente centrale de soumissions. La file est traitée par le cron Magento, et chaque soumission est validée, dédupliquée, soumise à des limites et journalisée.
Conformément à la documentation Google, Indexing API est officiellement destinée avant tout aux pages avec des données structurées :
JobPosting,BroadcastEventintégré dansVideoObject.
L’utilisation de l’API pour des produits, catégories, pages CMS ou articles de blog ne garantit ni l’indexation ni la position dans les résultats de recherche. Le module doit être considéré comme un outil technique pour soumettre des URL, et non comme un substitut au sitemap XML, à des balises canonical correctes, au fichier robots, au hreflang, au maillage interne et à la qualité SEO globale.
Documents officiels Google :
- https://developers.google.com/search/apis/indexing-api/v3/quickstart
- https://developers.google.com/search/apis/indexing-api/v3/prereqs
- https://developers.google.com/search/apis/indexing-api/v3/using-api
- https://developers.google.com/search/apis/indexing-api/v3/quota-pricing
2. Prérequis
Avant l’installation, assurez-vous que l’environnement répond aux exigences suivantes :
- Magento 2.4.x,
- PHP 8.1 ou plus récent,
- Composer,
- cron Magento opérationnel,
- possibilité d’installer le package
google/apiclient, - accès administrateur à Magento,
- projet Google Cloud avec Indexing API activée,
- propriété Google Search Console vérifiée pour le domaine de la boutique,
- compte de service Google ajouté comme propriétaire dans Google Search Console.
Le module nécessite le package :
google/apiclient:^2.16Le package est déclaré dans le composer.json du module, donc Composer devrait l’installer automatiquement.
3. Installation du module
3.1. Installation via Composer depuis un dépôt VCS
Si le module est installé depuis un dépôt Git privé ou public, ajoutez le dépôt au projet Magento :
composer config repositories.kowal.google.indexing.api vcs https://github.com/kowalco/google-indexing-apiSi le dépôt est privé, configurez le token GitHub :
composer config --global --auth github-oauth.github.com Installez le package :
composer require kowal/module-google-indexing-apiActivez le module :
bin/magento module:enable Kowal_GoogleIndexingApiExécutez la mise à jour du schéma de base de données :
bin/magento setup:upgradeVidez le cache :
bin/magento cache:flushEn mode production, exécutez également :
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.2. Installation locale dans app/code
Si le module est installé sans Composer en tant que code local, placez-le dans le répertoire :
app/code/Kowal/GoogleIndexingApiEnsuite, installez la dépendance Google API Client dans le projet Magento :
composer require google/apiclient:^2.16Activez le module et exécutez les commandes Magento standard :
bin/magento module:enable Kowal_GoogleIndexingApibin/magento setup:upgradebin/magento cache:flushPour la production :
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.3. Vérification de l’installation
Vérifiez si le module est actif :
bin/magento module:status Kowal_GoogleIndexingApiAprès une installation correcte, les éléments suivants doivent être disponibles dans le panneau d’administration :
Stores > Configuration > Kowal > Google Indexing API,- menu d’administration
Google Indexing API > Indexing Queue, Google Indexing API > Import URLs,Google Indexing API > API Logs,Google Indexing API > Setup Assistant.
Les tables suivantes doivent être créées dans la base de données :
kowal_google_indexing_queue,kowal_google_indexing_api_log.
4. Préparation de Google Cloud et Search Console
4.1. Création d’un projet Google Cloud
- Accédez à Google Cloud Console.
- Créez un nouveau projet ou sélectionnez un projet existant utilisé pour la boutique.
- Activez l’API :
Indexing APISans API activée, le module ne pourra pas envoyer correctement les soumissions.
4.2. Création d’un compte de service
- Dans Google Cloud, accédez à
IAM & Admin > Service Accounts. - Créez un nouveau compte de service.
- Générez une clé au format JSON.
- Téléchargez le fichier JSON et stockez-le en lieu sûr.
Le module exige que le JSON contienne au minimum les champs suivants :
type,project_id,private_key,client_email.
Le champ type doit avoir la valeur :
service_account4.3. Ajouter le compte de service comme propriétaire dans Search Console
- Ouvrez Google Search Console.
- Sélectionnez la propriété correspondant au domaine de la boutique.
- Assurez-vous que la propriété est vérifiée.
- Ajoutez l’adresse
client_emaildu fichier JSON comme propriétaire de la propriété.
Exemple d’adresse de compte de service :
my-service-account@project-name.iam.gserviceaccount.comSi le compte de service n’est pas propriétaire de la propriété Search Console, Google peut renvoyer des erreurs d’autorisation, par exemple l’absence de confirmation de propriété de l’URL.
5. Configuration du module dans Magento
La configuration se trouve dans :
Stores > Configuration > Kowal > Google Indexing APILa configuration prend en charge les portées Magento :
- Default Config,
- Website,
- Store View.
Ainsi, il est possible d’avoir des paramètres distincts pour différentes boutiques ou vues de boutique, si le projet l’exige.
6. Section General
Enable
Par défaut :
NoActive ou désactive le fonctionnement du module.
Lorsque le champ a la valeur No, le cron ne traite pas la file d’attente. Les adresses peuvent exister dans la base, mais le processeur de la file ne les enverra pas à Google.
Recommandation :
- pendant la première configuration, définissez
Noou laissezDry Run = Yes, - après des tests concluants, définissez
Yes.
Dry Run
Par défaut :
YesMode de test. Lorsque Dry Run est activé, le module traite les enregistrements de la file, enregistre les statuts et les logs, mais n’envoie pas de soumission réelle à Google.
C’est le mode le plus sûr pour le premier lancement, les tests de configuration et la vérification que les URL arrivent dans la file comme prévu.
Recommandation :
- effectuez toujours les premiers tests avec
Dry Run = Yes, - désactivez
Dry Rununiquement après avoir vérifié les credentials, les allowed hosts, la file et les logs.
7. Section Google Access Credentials
Credentials Source
Par défaut :
Encrypted configuration valueDétermine la source à partir de laquelle le module récupère le JSON du compte de service Google.
Options disponibles :
| Option | Valeur technique | Description |
|---|---|---|
Encrypted configuration value | config | Le JSON est collé dans la configuration Magento et enregistré comme valeur chiffrée sensitive config. |
Uploaded JSON file | file | Le JSON est téléversé sous forme de fichier et enregistré hors du répertoire pub, dans var/google-indexing. |
Recommandation :
- pour les déploiements simples, la valeur chiffrée dans la configuration peut être utilisée,
- pour les environnements avec contrôle d’accès aux fichiers, l’upload du fichier JSON peut être plus pratique.
Service Account JSON
Visible lorsque Credentials Source = Encrypted configuration value.
Dans ce champ, il faut coller le contenu complet du fichier JSON du compte de service Google.
Le module valide le JSON avant l’enregistrement. Sont vérifiés :
- la validité du format JSON,
- la présence des champs
type,project_id,private_key,client_email, - la valeur
type = service_account.
La valeur est enregistrée comme configuration chiffrée Magento.
Service Account JSON File
Visible lorsque Credentials Source = Uploaded JSON file.
Permet de téléverser le fichier JSON du compte de service Google.
Le module :
- accepte uniquement les fichiers avec l’extension
.json, - valide le contenu du fichier,
- vérifie les champs requis
type,project_id,private_key,client_email, - enregistre le fichier hors du répertoire public, dans
var/google-indexing, - essaie de définir les permissions du fichier à
0600, si le pilote de fichiers le permet.
Le fichier est enregistré avec un nom dépendant de la portée de configuration, par exemple pour la portée globale :
var/google-indexing/service-account-default-0.jsonGoogle Cloud Project ID
Champ texte pour l’identifiant du projet Google Cloud.
Dans l’implémentation actuelle du module, l’autorisation principale repose sur les données du JSON du compte de service. Le champ Google Cloud Project ID remplit une fonction informative et structurante pour la configuration, en particulier lorsque la boutique utilise plusieurs environnements ou plusieurs projets Google Cloud.
Recommandation :
- saisissez la valeur
project_iddu fichier JSON, - utilisez des projets Google Cloud distincts pour les environnements de production et de test, si cette séparation est adoptée dans le projet.
8. Section Queue and Limits
Daily Publish Limit
Par défaut :
200Définit le nombre maximal de soumissions publish que le module peut exécuter au cours d’une journée.
Le limiteur compte les requêtes de type :
publish,publish_dry_run.
Si la limite est atteinte, le processeur de file n’extraira plus d’autres enregistrements à envoyer jusqu’à la prochaine fenêtre quotidienne.
Recommandation :
- laissez
200si le projet utilise la limite d’onboarding par défaut de Google, - augmentez cette valeur uniquement si le projet Google Cloud dispose d’une limite supérieure approuvée,
- la valeur
0bloque l’envoi, car le nombre de slots disponibles sera0.
Requests Per Minute Limit
Par défaut :
60Définit le nombre maximal de requêtes publish par minute.
Le module compare cette valeur avec le nombre de requêtes enregistrées dans les logs au cours de la dernière minute. Si la limite par minute est atteinte, cron ne traitera pas d’autres enregistrements lors de cette exécution.
Recommandation :
- pour un déploiement standard, laissez la valeur par défaut,
- réduisez-la si vous souhaitez solliciter l’API de manière plus prudente,
- ne définissez pas
0, sauf si vous souhaitez suspendre temporairement l’envoi.
Cron Batch Size
Par défaut :
20Définit le nombre maximal d’enregistrements de la file traités lors d’une seule exécution du cron.
Le nombre réel d’enregistrements traités est également limité par :
Daily Publish Limit,Requests Per Minute Limit,- le nombre d’enregistrements prêts à être envoyés,
- le statut et la date
scheduled_at.
Recommandation :
20est une valeur de départ sûre,- pour les files importantes, il est possible d’augmenter cette valeur, mais uniquement en tenant compte des limites de Google.
Default Indexing Lag (minutes)
Par défaut :
15Définit le délai par défaut entre l’ajout d’une URL à la file d’attente et le moment à partir duquel elle peut être envoyée.
Le délai aide à :
- limiter les doublons,
- éviter un envoi après chaque petite modification,
- laisser à l’administrateur le temps de corriger le contenu,
- mieux gérer la limite de l’API.
Dans l’implémentation actuelle, ce paramètre est utilisé lorsque la soumission ne possède pas son propre délai.
Manual Form Indexing Lag (minutes)
Par défaut :
15Définit le délai pour les URL ajoutées via le formulaire :
Google Indexing API > Import URLsSi l’administrateur colle une liste d’URL manuellement, chaque adresse valide sera planifiée avec ce délai.
Recommandation :
- définissez
0si l’import manuel doit arriver immédiatement dans la file, - laissez
15si vous souhaitez conserver une marge pour la déduplication et le contrôle des soumissions.
Mass Action Indexing Lag (minutes)
Par défaut :
15Définit le délai pour les URL ajoutées via :
- les actions de masse sur les produits,
- les actions de masse sur les pages CMS,
- les boutons de soumission à l’indexation sur les écrans d’édition de produit, catégorie et page CMS.
Recommandation :
- pour les opérations de masse, laissez la valeur
15ou plus, - pour les petites boutiques et le travail administratif manuel, une valeur plus faible peut être envisagée.
Max Attempts
Par défaut :
5Définit le nombre maximal de tentatives d’envoi d’un enregistrement de file.
Si Google renvoie une erreur temporaire, le module définira le statut retry, tant que le nombre de tentatives est inférieur à Max Attempts. Une fois la limite dépassée, l’enregistrement recevra le statut failed_permanent.
Erreurs considérées comme temporaires :
408,409,412,429,500,502,503,504.
Retry Delay (minutes)
Par défaut :
15Délai de base avant la tentative d’envoi suivante après une erreur temporaire.
Cron utilise un délai progressif. Le multiplicateur dépend du nombre de tentatives et est plafonné à 24. Ainsi, les tentatives suivantes ne sont pas exécutées de manière trop agressive.
Exemple pour la valeur 15 :
| Tentative | Délai approximatif |
|---|---|
| 1 | 15 minutes |
| 2 | 30 minutes |
| 3 | 60 minutes |
| 4 | 120 minutes |
Allowed Source Types
Par défaut :
manual,product,category,cms_page,amasty_blog_postListe des types de sources autorisés, séparés par des virgules.
Valeurs prises en charge :
| Valeur | Signification |
|---|---|
manual | URL ajoutée manuellement via le formulaire d’import. |
product | URL de produit. |
category | URL de catégorie. |
cms_page | URL de page CMS. |
amasty_blog_post | URL d’article Amasty Blog, si un module d’intégration séparé est utilisé. |
Si le type de source ne figure pas dans la liste, le scheduler ignorera la soumission et la marquera comme skipped.
Recommandation :
- laissez les valeurs par défaut si la boutique utilise toutes les sources standard,
- supprimez les sources que vous ne souhaitez pas autoriser dans la file.
Allowed URL Hosts
Par défaut :
videListe des hôtes d’URL autorisés, séparés par des virgules.
Exemple :
example.com,www.example.comSi la liste est renseignée, le module n’acceptera que les adresses appartenant aux hôtes indiqués. Si l’URL possède un autre hôte, la validation renverra l’erreur :
host_not_allowedRecommandation :
- en production, renseignez toujours cette liste,
- ajoutez tous les hôtes utilisés par la boutique, par exemple le domaine principal, la version
www, les domaines de store view et les domaines linguistiques, - n’ajoutez pas de domaines de test à la configuration de production.
Require HTTPS URLs
Par défaut :
YesImpose que les URL soumises utilisent le schéma https.
Si ce champ est activé, une adresse en http sera rejetée avec l’erreur :
https_requiredRecommandation :
- pour les boutiques de production, laissez
Yes, - n’utilisez
Noque dans des environnements de test exceptionnels.
9. Section Auto-Indexing
Enable Auto-Indexing
Par défaut :
NoCe champ est prévu pour les intégrations automatiques d’enregistrement ou de suppression d’entités ainsi que pour des providers d’URL supplémentaires.
Dans le périmètre actuel du module, des mécanismes manuels et administratifs sont disponibles pour ajouter des URL à la file, notamment l’import d’URL, les Mass Actions et les boutons sur les formulaires d’édition.
Recommandation :
- laissez
Nosi l’auto-indexing n’a pas été mis en œuvre dans le projet, - activez-le uniquement lorsque le projet inclut la prise en charge d’événements automatiques d’entités utilisant cette configuration.
10. Section Logs
API Log Retention Days
Par défaut :
90Définit le nombre de jours de conservation des logs API.
Le cron de nettoyage des logs s’exécute chaque jour à :
03:15Il supprime les entrées plus anciennes que le nombre de jours défini dans ce champ.
Recommandation :
90jours est une valeur raisonnable pour le diagnostic,- en cas de grand nombre de requêtes, la rétention peut être réduite,
- dans le cadre d’audits SEO, la rétention peut être augmentée, en tenant compte de la taille de la table des logs.
11. Assistant d’installation et de configuration
L’assistant se trouve dans :
Google Indexing API > Setup AssistantSon objectif est de vérifier rapidement si la configuration côté Magento et Google est prête pour le premier test.
11.1. Section Current Status
L’assistant affiche l’état actuel des éléments les plus importants :
| Champ | Signification |
|---|---|
Module | Indique si le module est activé dans la configuration. |
Dry Run | Indique si le mode test sans envoi réel à Google est actif. |
Credentials | Indique si le module peut lire et parser les credentials Google. |
Service Account Email | Affiche le client_email du JSON du compte de service. Cette adresse doit être ajoutée comme propriétaire dans Search Console. |
Allowed Hosts | Affiche la liste des hôtes autorisés dans la configuration. |
Queue | Affiche le nombre d’enregistrements avec les statuts scheduled, pending, retry et failed_permanent. |
Si Credentials a le statut Missing or invalid, il faut revenir à la configuration et corriger le JSON ou le fichier credentials.
Si Allowed Hosts affiche Not configured, le module ne limite pas les hôtes. Techniquement, cela peut fonctionner, mais en production, il est recommandé de renseigner explicitement les hôtes de la boutique.
11.2. Section Setup Steps
L’assistant affiche une liste des étapes nécessaires avant la première requête réelle :
- Créer ou sélectionner un projet Google Cloud.
- Activer Indexing API et créer une clé JSON pour le compte de service.
- Coller le JSON ou téléverser le fichier JSON dans la configuration Magento.
- Ajouter l’adresse e-mail du compte de service comme propriétaire dans Google Search Console.
- Lancer les tests, puis importer une URL avec
Dry Runactivé.
L’assistant contient des liens vers :
- Google Cloud pour Indexing API,
- la configuration du module dans Magento,
- Google Search Console.
11.3. Test Google Credentials
Bouton :
Test Google Credentialsvérifie si Magento peut utiliser les données du compte de service pour obtenir un token OAuth pour le scope :
https://www.googleapis.com/auth/indexingUn résultat positif signifie que :
- le JSON est correct,
- la clé privée peut être utilisée,
- Google a émis un token OAuth.
Un résultat négatif peut signifier :
- un JSON incorrect,
- une
private_keyincorrecte ou endommagée, - l’absence d’un champ requis dans le JSON,
- un problème de communication avec Google,
- l’utilisation d’une clé qui n’est pas une clé de compte de service.
Ce test ne confirme pas encore que le compte de service dispose d’un accès propriétaire au domaine dans Search Console. Pour cela, un test URL metadata ou une soumission réelle d’une URL de test est nécessaire.
11.4. Test URL Metadata
Le formulaire :
Test URL Metadatapermet de saisir une URL publique provenant d’un hôte autorisé et d’exécuter une requête metadata vers Google Indexing API.
Avant d’envoyer la requête, le module :
- normalise l’URL,
- vérifie si l’URL est absolue,
- vérifie le schéma
httpouhttps, - si
Require HTTPS URLsest activé, exigehttps, - vérifie
Allowed URL Hosts, s’ils ont été configurés.
Résultats possibles :
| Résultat | Signification |
|---|---|
| Succès HTTP 2xx | Google a renvoyé les metadata pour l’URL. |
| HTTP 404 | Signifie souvent que l’URL n’a pas encore eu de soumission précédente réussie via Indexing API. Cela ne signifie pas nécessairement une mauvaise configuration. |
| Erreur de validation avant la requête | L’URL ne remplit pas les conditions du module, par exemple mauvais hôte, absence de HTTPS ou adresse non absolue. |
| Erreur HTTP autre que 404 | Il faut vérifier le message de Google, les autorisations Search Console, les credentials et les limites. |
Le test metadata ne crée pas de nouvelle soumission publish. Il sert au diagnostic de la connexion et du statut de l’URL.
12. Premier lancement étape par étape
Ordre recommandé pour le premier lancement :
- Installez le module et exécutez
setup:upgrade. - Dans Magento, accédez à
Stores > Configuration > Kowal > Google Indexing API. - Définissez
Enable = Yes. - Laissez
Dry Run = Yes. - Sélectionnez la source des credentials.
- Collez le JSON du compte de service ou téléversez le fichier JSON.
- Renseignez
Google Cloud Project IDavec la valeurproject_iddu JSON. - Renseignez
Allowed URL Hosts, par exempleexample.com,www.example.com. - Laissez les limites par défaut si Google n’a pas approuvé des limites supérieures.
- Enregistrez la configuration et videz le cache.
- Accédez à
Google Indexing API > Setup Assistant. - Vérifiez que l’assistant affiche les credentials comme prêts.
- Cliquez sur
Test Google Credentials. - Ajoutez l’adresse e-mail du compte de service comme propriétaire dans Google Search Console, si cela n’a pas encore été fait.
- Exécutez
Test URL Metadatapour une URL publique d’un hôte autorisé. - Accédez à
Google Indexing API > Import URLs. - Ajoutez une URL de test avec l’action
URL_UPDATED. - Exécutez le cron Magento :
bin/magento cron:run- Vérifiez
Google Indexing API > Indexing Queue. - Vérifiez
Google Indexing API > API Logs. - Si tout fonctionne correctement, désactivez
Dry Run. - Ajoutez à nouveau une URL de test et vérifiez la réponse réelle de Google.
13. Import d’URL depuis le panneau d’administration
L’import manuel se trouve dans :
Google Indexing API > Import URLsLe formulaire contient les champs suivants :
| Champ | Description |
|---|---|
Action | Type de soumission à Google : ajout/mise à jour ou suppression. |
Store View | Store view auquel la soumission doit être affectée. L’option globale Use global/no store est également disponible. |
URLs | Liste d’URL absolues, une adresse par ligne. |
Actions disponibles :
| Action dans le formulaire | Valeur API | Signification |
|---|---|---|
Submit URLs for indexing | URL_UPDATED | Informe Google que l’URL a été ajoutée ou mise à jour. |
Delete URLs from indexing | URL_DELETED | Informe Google que l’URL a été supprimée et peut être retirée de l’index. |
Après l’envoi du formulaire, le module affichera un résumé :
- ajoutées,
- mises à jour,
- dédupliquées,
- invalides,
- ignorées.
Les 10 premiers messages de validation sont affichés comme notice dans le panneau d’administration.
14. File d’attente d’indexation
La file d’attente se trouve dans :
Google Indexing API > Indexing QueueChaque enregistrement de la file contient notamment :
- URL,
- hash de l’URL,
- store ID,
- website ID,
- type de source,
- ID de l’entité source,
- origine de la requête,
- action
URL_UPDATEDouURL_DELETED, - statut,
- priorité,
- nombre de tentatives,
- nombre maximal de tentatives,
- date d’envoi planifiée,
- date de traitement,
- dernier code d’erreur,
- dernier motif d’erreur,
- dernier message d’erreur,
- réponse de Google,
- information
created_by.
Statuts de la file
| Statut | Signification |
|---|---|
scheduled | L’URL est planifiée, mais attend encore la date scheduled_at. |
pending | L’URL est prête à être traitée par cron. |
processing | L’URL est actuellement en cours de traitement. |
success | Google a renvoyé une réponse de succès. |
retry | Une erreur temporaire s’est produite et l’enregistrement attend une nouvelle tentative. |
failed_permanent | L’envoi a échoué définitivement ou le nombre maximal de tentatives a été dépassé. |
cancelled | L’enregistrement a été annulé manuellement. |
Actions sur les enregistrements de la file
| Action | Fonctionnement |
|---|---|
Transmit Now | Marque l’enregistrement comme urgent, le verrouille, l’envoie immédiatement via le client Google et enregistre le résultat. |
Retry | Définit l’enregistrement comme pending, supprime le verrou et planifie une nouvelle tentative immédiate. |
Cancel | Définit le statut cancelled et supprime le verrou. |
Attention : Transmit Now exécute une requête réelle si Dry Run = No. Avec Dry Run = Yes, un log dry-run sera enregistré sans envoi réel à Google.
15. Cron
Le module ajoute deux tâches cron dans le groupe default.
Traitement de la file
kowal_google_indexing_process_queuePlanification :
*/5 * * * *La tâche lance le processeur de file toutes les 5 minutes.
Le processeur :
- Vérifie si le module est activé.
- Libère les anciens verrous des enregistrements
processingde plus de 30 minutes. - Déplace les enregistrements
scheduledverspendingsischeduled_at <= now. - Vérifie les slots disponibles dans les limites quotidiennes et par minute.
- Récupère les enregistrements
pendingetretry. - Les trie selon la priorité et la date d’envoi planifiée.
- Envoie une requête à Google ou exécute un dry-run.
- Enregistre la réponse, le statut et le log API.
Nettoyage des logs
kowal_google_indexing_cleanup_logsPlanification :
15 3 * * *La tâche supprime les logs API plus anciens que le nombre de jours défini dans le champ :
API Log Retention Days16. Logs API
Les logs sont disponibles dans :
Google Indexing API > API LogsLe log comprend :
- ID de l’enregistrement de file,
- store ID,
- type de requête,
- URL de l’endpoint,
- payload,
- statut HTTP,
- body de la réponse,
- durée de la requête,
- date de création du log.
Types de requêtes :
| Type | Signification |
|---|---|
publish | Soumission réelle de l’URL à Google. |
publish_dry_run | Traitement en mode dry-run sans requête réelle vers Google. |
metadata | Test metadata pour l’URL. |
17. Mass Actions et boutons d’administration
Le module ajoute des mécanismes de soumission d’URL depuis le panneau d’administration.
Produits
Une action de masse est disponible dans la grille des produits pour ajouter les URL des produits à la file d’attente.
Le module ignore les produits :
- désactivés,
- non visibles individuellement.
Les URL sont générées sur la base des URL rewrites pour les store view actifs.
Pages CMS
Une action de masse est disponible dans la grille des pages CMS pour ajouter les URL des pages à la file d’attente.
Le module ignore les pages inactives.
Si une page CMS est affectée à tous les store view, le module résout les URL pour tous les store view.
Produit, catégorie et page CMS - boutons sur le formulaire d’édition
Le module ajoute des boutons de soumission à l’indexation sur les écrans d’édition :
- du produit,
- de la catégorie,
- de la page CMS.
Le bouton résout les URL de l’entité pour le store view et les ajoute à la file comme URL_UPDATED.
18. Configuration initiale recommandée
Pour un premier déploiement en production :
| Champ | Recommandation |
|---|---|
Enable | Yes après l’enregistrement des credentials et des allowed hosts. |
Dry Run | Yes pendant les tests, puis No. |
Credentials Source | Encrypted configuration value ou Uploaded JSON file, selon la politique du projet. |
Google Cloud Project ID | project_id du JSON. |
Daily Publish Limit | 200, sauf si Google a approuvé une limite supérieure. |
Requests Per Minute Limit | 60 ou moins dans le cadre d’un déploiement prudent. |
Cron Batch Size | 20. |
Default Indexing Lag | 15. |
Manual Form Indexing Lag | 0-15, selon la manière de travailler des administrateurs. |
Mass Action Indexing Lag | 15. |
Max Attempts | 5. |
Retry Delay | 15. |
Allowed Source Types | manual,product,category,cms_page,amasty_blog_post. |
Allowed URL Hosts | Tous les hôtes de production de la boutique. |
Require HTTPS URLs | Yes. |
Enable Auto-Indexing | No, sauf si le projet implémente des providers automatiques. |
API Log Retention Days | 90. |
19. Problèmes courants et diagnostic
Credentials test failed
Vérifiez :
- si le JSON est correct,
- si le JSON provient d’un compte de service,
- s’il contient
private_keyetclient_email, - si le champ
typea la valeurservice_account, - si le fichier JSON n’a pas été endommagé lors du collage.
Google renvoie une erreur d’autorisation
Vérifiez :
- si le domaine est vérifié dans Search Console,
- si le
client_emaildu compte de service est ajouté comme propriétaire, - si l’URL testée appartient à la même propriété Search Console,
- si vous utilisez le bon projet Google Cloud et le bon JSON.
L’URL est rejetée avant l’envoi
Vérifiez le message de validation :
| Message | Cause |
|---|---|
empty_url | URL vide. |
url_too_long | L’URL comporte plus de 2048 caractères. |
url_not_absolute | L’URL n’a pas de schéma ou d’hôte. |
https_required | L’exigence HTTPS est activée et l’URL utilise HTTP. |
invalid_scheme | Le schéma n’est ni http ni https. |
host_not_allowed | L’hôte de l’URL ne figure pas dans Allowed URL Hosts. |
La file d’attente n’est pas traitée
Vérifiez :
- si
Enable = Yes, - si le cron Magento fonctionne,
- si les enregistrements ont le statut
pendingouretry, - si
scheduled_atn’est pas dans le futur, - si les limites quotidiennes ou par minute ne sont pas atteintes,
- si
Daily Publish LimitetRequests Per Minute Limitne sont pas définis à0.
Les enregistrements passent en retry
Vérifiez :
- le statut HTTP dans l’enregistrement de file,
- le log API,
- la réponse de Google,
- s’il n’y a pas de limite
429, - s’il n’y a pas d’erreurs temporaires
5xx, - si
Max AttemptsetRetry Delaysont définis conformément aux attentes.
20. Intégration optionnelle avec Amasty Blog
L’intégration avec Amasty Blog est prévue comme module séparé :
Kowal_GoogleIndexingApiAmastyBlogPackage :
kowal/module-google-indexing-api-amasty-blogCe module n’est pas nécessaire au fonctionnement de l’intégration principale. Il ne doit être installé que dans les projets qui utilisent amasty/blog et qui ont besoin d’une action de masse pour les articles de blog.
Write Your Own Review




















