GSC Connect: volledige gids
Alles om GSC Connect te installeren, configureren en gebruiken: Google OAuth, sitemaps, URL-inspectie in bulk, klik-/positierapporten, dalings- en de-indexeringsmeldingen, cron compatibel met gedeelde hosting.
GSC Connect brengt alle kracht van Google Search Console direct in de PrestaShop back-office: OAuth-verbinding in één klik, sitemaps indienen, URL-inspectie in bulk, klik- en positierapporten per product en categorie, automatische meldingen bij dalingen en de-indexering. Deze gids behandelt de installatie, de Google OAuth-configuratie, de eerste synchronisatie, de cronplanning, het lezen van de rapporten, het oplossen van veelvoorkomende fouten en de interne architectuur.
Installatie
De module wordt uitgerold zoals elke standaard PrestaShop-module: geen Composer-afhankelijkheid, geen persistente worker, geen externe dienst behalve Google.
- Download
dfgscconnect.zipvanuit uw DataFirefly-account (downloadlink ontvangen na bestelling). - Back-office → Modules → Modulebeheer → Een module uploaden.
- Sleep de ZIP erin. PrestaShop installeert automatisch de 8 tabellen
dfgsc_*, de menutabbladen en de bijbehorende hooks. - Klik op Configureren op de modulefiche.
Native multistore. De module is multishop. Elke winkel slaat haar eigen OAuth-token, haar eigen Search Console-property en haar eigen metriekengeschiedenis op. U kunt één winkel verbinden zonder de andere aan te raken.
Vereisten
- PrestaShop 8.0.0 tot 9.99.99
- PHP 7.4, 8.0, 8.1, 8.2 of 8.3
- MySQL 5.6+ of MariaDB 10.3+
- PHP-extensie
curlingeschakeld (standaard bij alle hosters) - Een Google-account dat al eigenaars- of gedelegeerde eigenaarstoegang heeft tot de Search Console-property van uw winkel
Google OAuth-configuratie
De module gebruikt OAuth 2.0 om namens de winkeleigenaar toegang te krijgen tot Search Console. Deze stap gebeurt één keer en duurt ongeveer 5 minuten. Er is geen serviceaccount vereist: de authenticatie gebruikt direct het Google-account dat al toegang heeft tot uw Search Console-property.
Stap 1 — Een Google Cloud-project aanmaken
- Ga naar console.cloud.google.com met het Google-account dat de Search Console-toegang bezit.
- Klik bovenaan op de projectkiezer en dan op Nieuw project.
- Noem het bijvoorbeeld
prestashop-gscen maak het aan. - Selecteer dit nieuwe project zodra het is aangemaakt.
Stap 2 — De Search Console API activeren
- Menu → API’s & Services → Bibliotheek.
- Zoek Google Search Console API.
- Klik erop en dan op Activeren.
Stap 3 — Het toestemmingsscherm configureren
- Menu → API’s & Services → OAuth consent screen.
- Kies External als uw Google-account geen lid is van een Google Workspace-organisatie, anders Internal.
- Vul de applicatienaam in (bijvoorbeeld
GSC Connect), uw supportadres en uw winkeldomein. - Voeg op het scherm Scopes de scope
https://www.googleapis.com/auth/webmasterstoe (lezen/schrijven Search Console). - Voeg op het scherm Test users uw Google-adres toe. Zolang het scherm in testmodus blijft, volstaat dat voor privégebruik: het is niet nodig de applicatie ter verificatie aan Google voor te leggen.
Stap 4 — De OAuth-identificatiegegevens aanmaken
- Menu → API’s & Services → Credentials.
- Create Credentials → OAuth client ID.
- Applicatietype: Web application.
- Naam:
GSC Connect(vrij te kiezen). - Voeg in Geautoriseerde JavaScript-origins het domein van uw winkel toe met het HTTPS-protocol:
https://uw-winkel.nl. - Plak in Geautoriseerde redirect-URI de exacte URL die in de configuratie van de PrestaShop-module wordt getoond (kader OAuth-redirect-URL).
- Klik op Create. Google toont een Client ID en een Client Secret.
De redirect-URL moet strikt identiek zijn. Inclusief het protocol (https), de subdomeinen (www of niet) en de afwezigheid van een slash aan het einde. Eén enkel verschil en Google blokkeert de verbinding met redirect_uri_mismatch.
Stap 5 — De identificatiegegevens invullen in PrestaShop
- Back-office → module → Configureren.
- Plak de Client ID en de Client Secret.
- Sla het formulier op. Een knop Verbinden met Google verschijnt.
- Klik erop. U wordt naar de Google-toestemmingspagina doorgestuurd.
- Bevestig de permissies, u wordt teruggeleid naar de PrestaShop BO.
- De lijst met uw Search Console-properties wordt automatisch opgehaald: de module selecteert standaard die welke overeenkomt met het domein van uw winkel.
Eerste start
Start zodra de OAuth-verbinding tot stand is gebracht de eerste synchronisatie om uw gegevens op te halen:
- Tabblad Dashboard. De standaardproperty is al geselecteerd.
- Klik op Nu synchroniseren. De module haalt de laatste 28 dagen aan gegevens op (klikken, vertoningen, CTR, positie) op pagina- en zoekopdrachtniveau. Reken op 30 seconden tot 2 minuten afhankelijk van de omvang van uw catalogus.
- Tabblad Sitemaps. De kandidaten worden automatisch gedetecteerd (
/sitemap.xmlin de root + patroon*_sitemap.xmlgegenereerd door de PrestaShop-modulegsitemap). Klik op Indienen naast elke relevante sitemap. - Tabblad Inspectie. Klik op Alle actieve producten in de wachtrij zetten. De wachtrij vult zich onmiddellijk. De werkelijke verwerking gebeurt via de cron met inachtneming van het Google-quotum van 2000 inspecties per dag.
Search Console-latentie. Google publiceert de Search Analytics-gegevens met ongeveer 48 u vertraging. Hebt u zich net verbonden, dan zijn sommige metrieken van gisteren of eergisteren nog niet beschikbaar. Dat is normaal. De module houdt daar automatisch rekening mee in de dalingsberekeningen (glijdend venster met een offset van 2 dagen).
Dashboard
Het dashboard bundelt 8 KPI’s over 28 dagen:
- Klikken — totaal aantal organische klikken in het venster
- Vertoningen — totaal aantal weergaven in de SERP
- Gemiddelde CTR — percentage klikken ten opzichte van de vertoningen
- Gemiddelde positie — gewogen gemiddelde positie over alle zoekopdrachten
- Ongelezen meldingen — aantal openstaande te behandelen meldingen
- Niet-geïndexeerde pagina’s — aantal geïnspecteerde pagina’s waarvan het Google-verdict FAIL of NEUTRAL is
- Quotum van vandaag — verbruikte Inspection API-aanroepen van het dagquotum
- Laatste synchronisatie — datum en tijd van de laatste
sync-cronrun
Onder de KPI’s toont een evolutiegrafiek over 28 dagen de klikken (volle lijn) en de vertoningen (stippellijn op secundaire as). Chart.js is lokaal gebundeld, er wordt geen enkele CDN-afhankelijkheid geladen.
Rechts rangschikken de Top 10 producten en de Top 10 categorieën uw pagina’s op klikken met hun gemiddelde positie en hun CTR. De resolutie URL → entiteit gebruikt de native PrestaShop-routing: patroon id-slug voor de producten, link_rewrite voor de categorieën, cms_lang voor de CMS-pagina’s.
Klik- en positierapporten
Het tabblad Rapporten biedt drie detailweergaven: Producten, Categorieën, Zoekopdrachten. Elke weergave accepteert een configureerbare lookback: 7 / 14 / 28 / 90 dagen.
Voor elke regel krijgt u de klikken, de vertoningen, de CTR en de gemiddelde positie. Klik op elke kolomkop om te sorteren (client-side sortering, direct). De CSV-export produceert een UTF-8-bestand met BOM en puntkomma als scheidingsteken (native Excel-compatibel), tot 5000 regels per export.
Venstervergelijking
Voor elk vermeld product of elke categorie toont het rapport ook de variatie ten opzichte van het vorige venster van dezelfde duur. Een significante positiedaling verschijnt in het rood, een verbetering in het groen.
Sitemaps
Het tabblad Sitemaps detecteert automatisch de kandidaten op uw winkel:
https://uw-winkel.nl/sitemap.xml— rootsitemaphttps://uw-winkel.nl/sitemap_index.xml— sitemap-index- Patroon
*_sitemap.xmlin de root — gegenereerd door de PrestaShop-modulegsitemap, één bestand per winkel en per taal
Dien in met één klik. De module volgt daarna voor u:
- Het aantal ingediende URL’s (opgegeven door uw sitemap)
- Het aantal daadwerkelijk geïndexeerde URL’s (gerapporteerd door Google)
- Het aantal door Google gedetecteerde fouten
- De datum van de laatste download door Googlebot
Detecteert Google fouten op een sitemap, dan wordt automatisch een melding aangemaakt: ernst HIGH bij ≥ 10 fouten, anders MEDIUM.
URL-inspectie in bulk
De URL Inspection API van Google is beperkt tot 2000 aanroepen per dag per property. GSC Connect beheert deze limiet via een wachtrij met automatische retry.
Beschikbare acties
- Alle actieve producten in de wachtrij zetten — voegt alle producten toe met zichtbaarheid
both,searchofcatalog - Alle categorieën in de wachtrij zetten — voegt alle actieve categorieën toe (de root is uitgesloten)
- Gewijzigde pagina’s herinspecteren — voegt alleen de entiteiten toe die door de hooks
actionProductUpdateenactionCategoryUpdateals verouderd zijn gemarkeerd - De wachtrij nu verwerken — voor tests, zonder op de cron te wachten
- Een losse URL inspecteren — om een directe correctie op een specifieke pagina te valideren
Geregistreerde gegevens
Voor elke geïnspecteerde URL registreert de module:
- Het globale Google-verdict: PASS, PARTIAL, FAIL of NEUTRAL
- De dekkingsstatus (Indexed, Discovered, Crawled but not indexed, enzovoort)
- De robots.txt-status en de opgegeven indexeerbaarheid
- De gedetecteerde rich results (Product, Breadcrumb, Review, enzovoort)
- De AMP-status en de mobile-friendly conformiteit
- De verwijzende sitemap en de verwijzende URL’s
- De datum van de laatste crawl door Googlebot
De-indexering gedetecteerd → automatische melding. Is het verdict FAIL of NEUTRAL, of is de dekkingsstatus DEINDEXED of INDEXING_NOT_ALLOWED, dan wordt automatisch een HIGH-melding aangemaakt met de door Google teruggegeven reden.
Meldingen en dalingen
Drie families van meldingen worden automatisch door de module beheerd:
Positiedalingen
Detecteert een significante positiedaling op een al goed gerangschikte pagina. Standaard: daling van 5 plaatsen of meer op een pagina gepositioneerd op ≤ 50. Drempel aanpasbaar in de configuratie (DFGSC_DROP_POS).
Klikdalingen
Detecteert een significante daling van het aantal klikken op een pagina die een minimumvolume genereerde. Standaard: daling van 30% met een minimum van 5 klikken in het vorige venster. Drempels aanpasbaar in de configuratie (DFGSC_DROP_CLICKS, DFGSC_DROP_MIN_CLICKS).
De-indexeringen
Automatisch aangemaakt wanneer een geïnspecteerde URL terugkomt met een verdict FAIL of NEUTRAL, of een dekkingsstatus DEINDEXED / INDEXING_NOT_ALLOWED.
Vergelijkingsmechanisme
De dalingsvergelijking gebeurt op een glijdend venster van 7 dagen tegen de 7 voorgaande dagen, met een offset van 2 dagen om de Search Console-latentie te respecteren. De module vergelijkt D-9..D-2 met D-16..D-9.
24u-ontdubbeling
Eenzelfde melding (zelfde pagina, zelfde type) wordt maar één keer per 24 u geactiveerd om ruis te vermijden, ook als de cron elk uur draait.
E-mailnotificaties
De meldingen kunnen per e-mail worden verstuurd als een HTML-digest gegroepeerd op ernst, in het Frans of Engels. Schakel ze in via de configuratie en vul het bestemmingsadres in.
Cron en planning
Alle achtergrondtaken lopen via één enkel, met een token beveiligd endpoint, zichtbaar op de configuratiepagina:
https://uw-winkel.nl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXXXXXXXX
Plan het elke 1 tot 6 uur vanuit het cronpaneel van uw hoster (cPanel, Plesk, o2switch, OVH). Crontab-voorbeeld:
0 */2 * * * curl -fsS "https://uw-winkel.nl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX" > /dev/null 2>&1
Uitgevoerde taken
Standaard voert het endpoint alle taken uit. U kunt er een deel van filteren met de parameter &tasks=:
| Taak | Actie |
|---|---|
sync |
Ophalen van de nieuwe Search Analytics-gegevens (configureerbare lookback) |
inspect |
Verwerking van de URL-inspectiewachtrij met inachtneming van het quotum |
sitemaps |
Verversen van de status van de ingediende sitemaps |
drops |
Detectie van de positie- en klikdalingen |
notify |
Versturen van de meldingendigest per e-mail |
prune |
Opschoning van de afgeronde wachtrij-items en de oude quotumtellers |
Voorbeeld om alleen de metrieken te synchroniseren zonder de inspectie aan te raken:
curl "https://uw-winkel.nl/index.php?fc=module&module=dfgscconnect&controller=cron&token=XXXX&tasks=sync,drops,notify"
Compatibel met gedeelde hosting. Geen Redis-, BullMQ-, persistente-worker- of dedicated PHP-FPM-afhankelijkheid. Het cron-endpoint is een simpele HTTPS-URL beveiligd met een token. Werkt native op o2switch, gedeelde OVH en elke standaard Linux-hosting.
Referentieconfiguratie
Alle opties staan op de pagina Configureren van de module:
| Optie | Sleutel | Standaard |
|---|---|---|
| Google Client ID | DFGSC_CLIENT_ID |
(in te vullen) |
| Google Client Secret | DFGSC_CLIENT_SECRET |
(in te vullen) |
| Synchronisatie-lookback (dagen) | DFGSC_LOOKBACK_DAYS |
28 |
| Dagquotum URL-inspectie | DFGSC_DAILY_QUOTA |
2000 |
| Drempel positiedaling | DFGSC_DROP_POS |
5 |
| Drempel klikdaling (%) | DFGSC_DROP_CLICKS |
30 |
| Minimumklikken voor dalingsdetectie | DFGSC_DROP_MIN_CLICKS |
5 |
| E-mailnotificaties ingeschakeld | DFGSC_ALERT_ENABLED |
ja |
| Bestemmingsadres meldingen | DFGSC_ALERT_EMAIL |
admin-e-mail |
| Crontoken | DFGSC_CRON_TOKEN |
auto-gegenereerd |
Google API-quota en -limieten
De Search Console API is gratis, maar onderworpen aan Google-quota:
- URL Inspection: 2000 aanroepen per dag per property, 600 per minuut (harde Google-limiet, niet onderhandelbaar)
- Search Analytics: 25000 regels per aanroep, ~1200 aanroepen per minuut, 30000 per dag (soft cap)
- Sitemaps: 5000 aanroepen per dag
De module registreert alle aanroepen per endpoint en per dag in de tabel dfgsc_quota. De inspectiewachtrij stopt netjes wanneer het geconfigureerde quotum is bereikt, met een melding van ernst MEDIUM. De tellers worden na 30 dagen automatisch opgeschoond door de taak prune.
Architectuur en gegevens
De module volgt een klassieke PSR-4-architectuur onder de namespace DataFireflyGscConnect, met een eigen autoloader geleverd in vendor/autoload.php. Geen Composer-afhankelijkheid. Geen externe afhankelijkheid: de Google API-aanroepen gebeuren in native cURL met SSL-verificatie.
Lagen
Api— HTTP-clients (GoogleOAuth, SearchConsoleClient)Model— repositories voor databasetoegang (Token, Site, Metric, Inspection, Sitemap, Alert, Queue, Quota)Services— orkestratie (MetricsSync, Inspection, Sitemap, Alert)
Aangemaakte tabellen
| Tabel | Rol |
|---|---|
dfgsc_token |
OAuth-refreshtoken + verval per winkel |
dfgsc_site |
Bekende Search Console-properties (per winkel, met de standaard) |
dfgsc_metric |
Search Analytics-regels (per dag, per pagina, optioneel per zoekopdracht) |
dfgsc_inspection |
Lokale cache van de URL-inspecties met hun volledige verdict |
dfgsc_sitemap |
Status van de ingediende sitemaps (URL, ingediend, geïndexeerd, fouten, laatste download) |
dfgsc_alert |
Gegenereerde meldingen (type, ernst, pagina, delta, status) |
dfgsc_queue |
Inspectiewachtrij met statussen pending/processing/done/failed |
dfgsc_quota |
Tellers van API-aanroepen per endpoint en per dag |
Gebruikte hooks
actionAdminControllerSetMedia— laden van de BO-assetsdisplayBackOfficeHeader— gereserveerd voor toekomstige notificatiesactionProductUpdate/actionCategoryUpdate— invalidatie van de inspectiecacheactionObjectProductDeleteAfter/actionObjectCategoryDeleteAfter— opschoning van verweesde inspecties
Beveiliging
- Cookie-gebaseerd CSRF-statetoken op de OAuth-flow
- Validatie
hash_equalsop het crontoken - Refreshtoken opgeslagen in de database, nooit gelogd
- Accesstoken nooit gepersisteerd: op verzoek geregenereerd vanuit het refreshtoken en in het geheugen gehouden voor de duur van het verzoek
- Anti-listing
index.php-bestanden in alle submappen - Systematische escaping via
Tools::safeOutputop alle template-uitvoer
Probleemoplossing
De knop “Verbinden met Google” verschijnt niet
Controleer of Client ID en Client Secret daadwerkelijk zijn opgeslagen. Sla het formulier op en herlaad de configuratiepagina.
Het Google-scherm toont redirect_uri_mismatch
De redirect-URI in Google Cloud moet strikt identiek zijn aan die in de moduleconfiguratie: zelfde protocol (https), zelfde subdomein (www of niet), zelfde pad, zonder slash aan het einde. Kopieer en plak zonder wijziging.
De synchronisatie brengt geen gegevens terug
Controleer drie punten: (1) de geselecteerde property is daadwerkelijk uw winkel; (2) ze heeft minstens 72 u geschiedenis in Search Console (Google publiceert met ~48 u latentie); (3) het verbonden Google-account heeft daadwerkelijk eigenaars- of gedelegeerde eigenaarstoegang tot deze property.
De inspecties worden niet uitgevoerd
Controleer of de cron daadwerkelijk is gepland en draait. Controleer vervolgens het dagquotum: hebt u de 2000 Google-aanroepen verbruikt, dan staat de wachtrij op pauze tot de volgende dag. U kunt handmatig forceren via de knop De wachtrij nu verwerken.
De e-mailmeldingen komen niet aan
Controleer of het ingevulde adres geldig is, of de SMTP-configuratie van PrestaShop werkt (test bijvoorbeeld met een welkomstmail), en of de notificaties in de moduleconfiguratie zijn ingeschakeld.
401- of 403-fout op de Search Console-aanroepen
Het refreshtoken is waarschijnlijk aan Google-zijde ingetrokken (wachtwoordwijziging, accountbeveiliging, of verlopen toestemming). Verbreek de verbinding en verbind de winkel opnieuw vanuit de configuratie.
Fout Quota Exhausted (429)
Het Google-quotum van de property is bereikt. Dat is door Google beperkt tot 2000 inspecties per dag, onafhankelijk van het aantal modules of tools dat de property bevraagt. De wachtrij hervat automatisch de volgende dag.
Changelog
Zie het bestand CHANGELOG.md in de ZIP van de module voor de volledige lijst van wijzigingen per versie.
Neem voor elke hier niet behandelde vraag contact op met de DataFirefly-support via support@datafirefly.com.