GSC Connect — Documentation
Tout pour installer, configurer et utiliser GSC Connect : OAuth Google, sitemaps, inspection d'URL en masse, rapports clics/positions, alertes drops et désindexation, cron mutualisé compatible.
GSC Connect ramène toute la puissance de Google Search Console directement dans le back-office PrestaShop : connexion OAuth en un clic, soumission de sitemaps, inspection d’URL en masse, rapports clics et positions par produit et catégorie, alertes automatiques de chute et de désindexation. Ce guide couvre l’installation, la configuration OAuth Google, la première synchronisation, la planification cron, la lecture des rapports, la résolution des cas d’erreur courants et l’architecture interne.
Installation
Le module se déploie comme tout module PrestaShop standard : aucune dépendance Composer, aucun worker persistant, aucun service externe à part Google.
- Téléchargez
dfgscconnect.zipdepuis votre compte DataFirefly (lien de téléchargement reçu après commande). - Back-office → Modules → Gestionnaire de modules → Uploader un module.
- Glissez-déposez le ZIP. PrestaShop installe automatiquement les 8 tables
dfgsc_*, les onglets de menu et les hooks associés. - Cliquez sur Configurer sur la fiche du module.
Multi-boutique natif. Le module est multishop. Chaque boutique stocke son propre jeton OAuth, sa propre propriété Search Console et son propre historique de métriques. Vous pouvez connecter une boutique sans toucher aux autres.
Prérequis
- PrestaShop 8.0.0 à 9.99.99
- PHP 7.4, 8.0, 8.1, 8.2 ou 8.3
- MySQL 5.6+ ou MariaDB 10.3+
- Extension PHP
curlactivée (par défaut sur tous les hébergeurs) - Un compte Google qui possède déjà l’accès propriétaire ou propriétaire délégué à la propriété Search Console de votre boutique
Configuration OAuth Google
Le module utilise OAuth 2.0 pour accéder à Search Console au nom du propriétaire de la boutique. Cette étape se fait une seule fois et prend environ 5 minutes. Aucun compte de service n’est requis : l’authentification utilise directement le compte Google qui a déjà l’accès à votre propriété Search Console.
Étape 1 — Créer un projet Google Cloud
- Rendez-vous sur console.cloud.google.com avec le compte Google qui possède l’accès Search Console.
- Cliquez sur le sélecteur de projet en haut, puis sur Nouveau projet.
- Nommez-le par exemple
prestashop-gscet créez-le. - Sélectionnez ce nouveau projet une fois créé.
Étape 2 — Activer l’API Search Console
- Menu → API & Services → Bibliothèque.
- Recherchez Google Search Console API.
- Cliquez dessus puis sur Activer.
Étape 3 — Configurer l’écran de consentement
- Menu → API & Services → OAuth consent screen.
- Choisissez External si votre compte Google n’est pas membre d’une organisation Google Workspace, sinon Internal.
- Renseignez le nom de l’application (par exemple
GSC Connect), votre adresse de support et votre domaine de boutique. - Sur l’écran Scopes, ajoutez le scope
https://www.googleapis.com/auth/webmasters(lecture/écriture Search Console). - Sur l’écran Test users, ajoutez votre adresse Google. Tant que l’écran reste en mode test, c’est suffisant pour un usage privé : il n’est pas nécessaire de soumettre l’application à vérification par Google.
Étape 4 — Créer les identifiants OAuth
- Menu → API & Services → Credentials.
- Create Credentials → OAuth client ID.
- Type d’application : Web application.
- Nom :
GSC Connect(libre). - Dans Origines JavaScript autorisées, ajoutez le domaine de votre boutique avec le protocole HTTPS :
https://votre-boutique.fr. - Dans URI de redirection autorisé, collez l’URL exacte affichée dans la configuration du module PrestaShop (encadré URL de redirection OAuth).
- Cliquez sur Create. Google affiche un Client ID et un Client Secret.
L’URL de redirection doit être strictement identique. Y compris le protocole (https), les sous-domaines (www ou non) et l’absence de slash final. Une seule différence et Google bloque la connexion avec redirect_uri_mismatch.
Étape 5 — Renseigner les identifiants dans PrestaShop
- Back-office → module → Configurer.
- Collez le Client ID et le Client Secret.
- Enregistrez le formulaire. Un bouton Se connecter avec Google apparaît.
- Cliquez dessus. Vous êtes redirigé sur la page de consentement Google.
- Validez les permissions, vous êtes redirigé dans le BO PrestaShop.
- La liste de vos propriétés Search Console est récupérée automatiquement : le module sélectionne par défaut celle qui correspond au domaine de votre boutique.
Premier lancement
Une fois la connexion OAuth établie, lancez la première synchronisation pour rapatrier vos données :
- Onglet Tableau de bord. La propriété par défaut est déjà sélectionnée.
- Cliquez sur Synchroniser maintenant. Le module récupère les 28 derniers jours de données (clics, impressions, CTR, position) au niveau page et requête. Comptez 30 secondes à 2 minutes selon le volume de votre catalogue.
- Onglet Sitemaps. Les candidats sont détectés automatiquement (
/sitemap.xmlracine + pattern*_sitemap.xmlgénéré par le modulegsitemapde PrestaShop). Cliquez sur Soumettre à côté de chaque sitemap pertinent. - Onglet Inspection. Cliquez sur Enfourner tous les produits actifs. La file se remplit instantanément. Le traitement réel se fait via le cron en respectant le quota Google de 2000 inspections par jour.
Latence Search Console. Google diffuse les données de Search Analytics avec environ 48 h de retard. Si vous venez tout juste de vous connecter, certaines métriques de la veille ou de l’avant-veille ne seront pas encore disponibles. C’est normal. Le module en tient compte automatiquement dans les calculs de drops (fenêtre glissante avec offset de 2 jours).
Tableau de bord
Le tableau de bord regroupe 8 KPIs sur 28 jours :
- Clics — total des clics organiques sur la fenêtre
- Impressions — total des affichages dans la SERP
- CTR moyen — pourcentage de clics par rapport aux impressions
- Position moyenne — position moyenne pondérée sur l’ensemble des requêtes
- Alertes non lues — nombre d’alertes ouvertes à traiter
- Pages non indexées — nombre de pages inspectées dont le verdict Google est FAIL ou NEUTRAL
- Quota du jour — appels API Inspection consommés sur le quota journalier
- Dernière synchronisation — date et heure de la dernière passe cron
sync
Sous les KPIs, un graphique d’évolution sur 28 jours affiche les clics (ligne pleine) et les impressions (ligne pointillée sur axe secondaire). Chart.js est bundlé en local, aucune dépendance CDN n’est chargée.
Sur la droite, le Top 10 produits et le Top 10 catégories classent vos pages par clics avec leur position moyenne et leur CTR. La résolution URL → entité utilise le routing natif PrestaShop : pattern id-slug pour les produits, link_rewrite pour les catégories, cms_lang pour les pages CMS.
Rapports clics et positions
L’onglet Rapports propose trois vues détaillées : Produits, Catégories, Requêtes. Chaque vue accepte un lookback configurable : 7 / 14 / 28 / 90 jours.
Pour chaque ligne, vous obtenez les clics, les impressions, le CTR et la position moyenne. Cliquez sur n’importe quel en-tête de colonne pour trier (tri client, instantané). L’export CSV produit un fichier UTF-8 avec BOM et séparateur point-virgule (compatible Excel natif), jusqu’à 5000 lignes par export.
Comparaison de fenêtres
Pour chaque produit ou catégorie listé, le rapport affiche également la variation par rapport à la fenêtre précédente de même durée. Une chute de position significative apparaît en rouge, une amélioration en vert.
Sitemaps
L’onglet Sitemaps détecte automatiquement les candidats sur votre boutique :
https://votre-boutique.fr/sitemap.xml— sitemap racinehttps://votre-boutique.fr/sitemap_index.xml— index de sitemaps- Pattern
*_sitemap.xmlà la racine — généré par le modulegsitemapde PrestaShop, un fichier par boutique et par langue
Soumettez en un clic. Le module suit ensuite pour vous :
- Le nombre d’URL soumises (déclaré par votre sitemap)
- Le nombre d’URL réellement indexées (rapporté par Google)
- Le nombre d’erreurs détectées par Google
- La date du dernier téléchargement par Googlebot
Si Google détecte des erreurs sur un sitemap, une alerte automatique est levée : sévérité HIGH si ≥ 10 erreurs, sinon MEDIUM.
Inspection d’URL en masse
L’API URL Inspection de Google est limitée à 2000 appels par jour par propriété. GSC Connect gère cette limite via une file d’attente avec retry automatique.
Actions disponibles
- Enfourner tous les produits actifs — ajoute tous les produits avec visibilité
both,searchoucatalog - Enfourner toutes les catégories — ajoute toutes les catégories actives (la racine est exclue)
- Re-inspecter les pages modifiées — ajoute uniquement les entités marquées comme périmées par les hooks
actionProductUpdateetactionCategoryUpdate - Traiter la file maintenant — pour les tests, sans attendre le cron
- Inspecter une URL ad-hoc — pour valider une correction immédiate sur une page précise
Données enregistrées
Pour chaque URL inspectée, le module enregistre :
- Le verdict global Google : PASS, PARTIAL, FAIL ou NEUTRAL
- L’état de couverture (Indexed, Discovered, Crawled but not indexed, etc.)
- Le statut robots.txt et l’indexabilité déclarée
- Les résultats enrichis détectés (Product, Breadcrumb, Review, etc.)
- Le statut AMP et la conformité mobile-friendly
- Le sitemap référent et les URL référentes
- La date de la dernière exploration par Googlebot
Désindexation détectée → alerte automatique. Si le verdict est FAIL ou NEUTRAL, ou si l’état de couverture est DEINDEXED ou INDEXING_NOT_ALLOWED, une alerte HIGH est levée automatiquement avec la raison renvoyée par Google.
Alertes et chutes
Trois familles d’alertes sont gérées automatiquement par le module :
Chutes de position
Détecte une chute significative de position sur une page déjà bien classée. Par défaut : chute de 5 places ou plus sur une page positionnée à ≤ 50. Seuil ajustable dans la configuration (DFGSC_DROP_POS).
Chutes de clics
Détecte une chute significative du nombre de clics sur une page qui en générait un volume minimum. Par défaut : chute de 30 % avec un minimum de 5 clics sur la fenêtre précédente. Seuils ajustables dans la configuration (DFGSC_DROP_CLICKS, DFGSC_DROP_MIN_CLICKS).
Désindexations
Levée automatiquement quand une URL inspectée revient avec un verdict FAIL ou NEUTRAL, ou un état de couverture DEINDEXED / INDEXING_NOT_ALLOWED.
Mécanique de comparaison
La comparaison drops se fait sur une fenêtre glissante de 7 jours contre les 7 jours précédents, avec un offset de 2 jours pour respecter la latence de Search Console. Le module compare D-9..D-2 à D-16..D-9.
Déduplication 24h
Une même alerte (même page, même type) ne se déclenche qu’une fois par 24h pour éviter le bruit, même si le cron tourne toutes les heures.
Notifications e-mail
Les alertes peuvent être envoyées par e-mail sous forme de digest HTML groupé par sévérité, en français ou en anglais. Activez-les depuis la configuration et renseignez l’adresse destinataire.
Cron et planification
Toutes les tâches en arrière-plan passent par un endpoint unique protégé par token, visible dans la page de configuration :
https://votre-boutique.fr/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXXXXXXXX
Programmez-le toutes les 1 à 6 heures depuis le panneau cron de votre hébergeur (cPanel, Plesk, o2switch, OVH). Exemple crontab :
0 */2 * * * curl -fsS "https://votre-boutique.fr/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX" > /dev/null 2>&1
Tâches exécutées
Par défaut, l’endpoint exécute toutes les tâches. Vous pouvez en filtrer une partie avec le paramètre &tasks= :
| Tâche | Action |
|---|---|
sync |
Récupération des nouvelles données Search Analytics (lookback configurable) |
inspect |
Traitement de la file d’inspection d’URL en respectant le quota |
sitemaps |
Rafraîchissement du statut des sitemaps soumis |
drops |
Détection des baisses de position et de clics |
notify |
Envoi du digest d’alertes par e-mail |
prune |
Purge des entrées de file terminées et des compteurs de quota anciens |
Exemple pour ne synchroniser que les métriques sans toucher à l’inspection :
curl "https://votre-boutique.fr/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX&tasks=sync,drops,notify"
Hébergement mutualisé compatible. Aucune dépendance Redis, BullMQ, worker persistant ou PHP-FPM dédié. L’endpoint cron est un simple URL HTTPS protégé par token. Fonctionne nativement sur o2switch, OVH mutualisé et tout hébergement Linux standard.
Configuration de référence
Toutes les options sont dans la page Configurer du module :
| Option | Clé | Défaut |
|---|---|---|
| Client ID Google | DFGSC_CLIENT_ID |
(à renseigner) |
| Client Secret Google | DFGSC_CLIENT_SECRET |
(à renseigner) |
| Lookback synchronisation (jours) | DFGSC_LOOKBACK_DAYS |
28 |
| Quota journalier inspection URL | DFGSC_DAILY_QUOTA |
2000 |
| Seuil chute de position | DFGSC_DROP_POS |
5 |
| Seuil chute de clics (%) | DFGSC_DROP_CLICKS |
30 |
| Clics minimum pour détecter chute | DFGSC_DROP_MIN_CLICKS |
5 |
| Notifications e-mail activées | DFGSC_ALERT_ENABLED |
oui |
| Adresse destinataire alertes | DFGSC_ALERT_EMAIL |
e-mail admin |
| Token cron | DFGSC_CRON_TOKEN |
auto-généré |
Quotas et limites API Google
L’API Search Console est gratuite, mais soumise à des quotas Google :
- URL Inspection : 2000 appels par jour par propriété, 600 par minute (hard limit Google, non négociable)
- Search Analytics : 25000 lignes par appel, ~1200 appels par minute, 30000 par jour (soft cap)
- Sitemaps : 5000 appels par jour
Le module enregistre tous les appels par endpoint et par jour dans la table dfgsc_quota. La file d’inspection s’arrête proprement lorsque le quota configuré est atteint, en générant une alerte de sévérité MEDIUM. Les compteurs sont purgés automatiquement après 30 jours par la tâche prune.
Architecture et données
Le module suit une architecture PSR-4 classique sous le namespace DataFireflyGscConnect, avec un autoloader maison livré dans vendor/autoload.php. Aucune dépendance Composer. Aucune dépendance externe : les appels Google API se font en cURL natif avec vérification SSL.
Couches
Api— clients HTTP (GoogleOAuth, SearchConsoleClient)Model— repositories d’accès à la base (Token, Site, Metric, Inspection, Sitemap, Alert, Queue, Quota)Services— orchestration (MetricsSync, Inspection, Sitemap, Alert)
Tables créées
| Table | Rôle |
|---|---|
dfgsc_token |
Refresh token OAuth + expiration par boutique |
dfgsc_site |
Propriétés Search Console connues (par boutique, avec celle par défaut) |
dfgsc_metric |
Lignes Search Analytics (par jour, par page, optionnellement par requête) |
dfgsc_inspection |
Cache local des inspections d’URL avec leur verdict complet |
dfgsc_sitemap |
État des sitemaps soumis (URL, soumis, indexés, erreurs, dernier téléchargement) |
dfgsc_alert |
Alertes générées (type, sévérité, page, delta, statut) |
dfgsc_queue |
File d’inspection avec statuts pending/processing/done/failed |
dfgsc_quota |
Compteurs d’appels API par endpoint et par jour |
Hooks utilisés
actionAdminControllerSetMedia— chargement des assets BOdisplayBackOfficeHeader— réservé pour notifications futuresactionProductUpdate/actionCategoryUpdate— invalidation du cache d’inspectionactionObjectProductDeleteAfter/actionObjectCategoryDeleteAfter— purge des inspections orphelines
Sécurité
- CSRF state token cookie-based sur le flux OAuth
- Validation
hash_equalssur le token cron - Refresh token stocké en base, jamais loggé
- Access token jamais persisté : régénéré à la demande depuis le refresh token et tenu en mémoire le temps de la requête
- Fichiers
index.phpanti-listing dans tous les sous-répertoires - Échappement systématique via
Tools::safeOutputsur toutes les sorties templates
Dépannage
Le bouton « Se connecter avec Google » n’apparaît pas
Vérifiez que Client ID et Client Secret sont bien enregistrés. Sauvegardez le formulaire, puis rechargez la page de configuration.
L’écran Google affiche redirect_uri_mismatch
L’URI de redirection dans Google Cloud doit être strictement identique à celle affichée dans la configuration du module : même protocole (https), même sous-domaine (www ou non), même chemin, sans slash final. Copiez-collez sans modification.
La synchronisation ne ramène pas de données
Vérifiez trois points : (1) la propriété sélectionnée est bien votre boutique ; (2) elle a au moins 72 h d’historique dans Search Console (Google diffuse avec ~48 h de latence) ; (3) le compte Google connecté a bien l’accès propriétaire ou propriétaire délégué à cette propriété.
Les inspections ne se font pas
Vérifiez que le cron est bien programmé et qu’il s’exécute. Vérifiez ensuite le quota du jour : si vous avez consommé les 2000 appels Google, la file est en pause jusqu’au lendemain. Vous pouvez forcer manuellement via le bouton Traiter la file maintenant.
Les alertes par e-mail n’arrivent pas
Vérifiez que l’adresse renseignée est valide, que la configuration SMTP de PrestaShop fonctionne (testez avec un e-mail de bienvenue par exemple), et que les notifications sont activées dans la configuration du module.
Erreur 401 ou 403 sur les appels Search Console
Le refresh token a probablement été révoqué côté Google (changement de mot de passe, sécurité du compte, ou consentement expiré). Déconnectez et reconnectez la boutique depuis la configuration.
Erreur Quota Exhausted (429)
Le quota Google de la propriété est atteint. C’est limité à 2000 inspections par jour par Google, indépendamment du nombre de modules ou d’outils qui interrogent la propriété. La file reprend automatiquement le lendemain.
Changelog
Voir le fichier CHANGELOG.md inclus dans le ZIP du module pour la liste complète des évolutions par version.
Pour toute question non couverte ici, contactez le support DataFirefly à support@datafirefly.com.