SERP Tracker — Complete Guide
Install, configure and operate Google rank tracking: SERP provider, keywords by country and device, dashboard, striking distance, visibility index, competitors, alerts and cron for PrestaShop 8 and 9.
Overview
The SERP Tracker module (dfserptracker) tracks your store’s positions in Google search results, directly from the PrestaShop back office. You declare your keywords (with their country and device), the module regularly checks their position via a SERP API provider of your choice, keeps the history of every check, computes your opportunities and alerts you by email when a page slips.
SERP Tracker does not scrape Google: it relies on an official SERP API to which you supply your own key. Checks are therefore reliable, stable and compliant with Google’s terms of service. Four providers are supported natively: Serper.dev, ValueSERP, SerpApi and DataForSEO.
Compatibility
- PrestaShop 8.0 to 9.x
- PHP 7.4 to 8.3
- MySQL 5.6+ or MariaDB 10.3+
- Single-store and multistore (tracking isolated per store)
- 5 languages: FR, EN, ES, DE, IT
- Shared hosting compatible (o2switch, OVH, etc.)
- No Composer dependency (custom autoloader); charts rendered with Chart.js bundled locally, no CDN
Installation
- In the back office, open Modules > Module Manager.
- Click Upload a module and select the
dfserptracker.zipfile. - Once installed, click Configure.
On installation, the module creates its two tables (df_serp_keyword and df_serp_position), registers its admin tabs under the SERP Tracker menu (Dashboard, Keywords, Competitors) and initialises its default settings, including a random cron token.
Choosing and configuring a SERP provider
Before any check, you must choose a provider and enter your API key in the module’s configuration page.
- Serper.dev: enter your key in Serper API key. Simple and affordable, ideal to get started.
- ValueSERP: enter your key in ValueSERP API key.
- SerpApi: enter your key in SerpApi API key.
- DataForSEO: this provider uses login and password authentication. Enter your DataForSEO login and DataForSEO password.
The module is a one-time purchase; checks consume credits at the provider you choose, based on your own account and keyword volume. Most providers offer a free or very low-cost tier to get started.
A warning banner is shown on the dashboard as long as no provider is correctly configured. Make sure the key you entered matches the provider selected in the Provider dropdown.
Configuration
Default search context
- Tracked domain: the domain whose position you want to detect (the store domain by default). The module compares this domain to the organic results, ignoring the
www.prefix. - Default country and Default device (desktop or mobile): applied to new keywords, overridable per keyword.
- Result depth: number of results analysed per check (beyond it, the position is treated as “not ranking”).
Alerts
- Enable alerts: enables email sending on significant position changes.
- Destination email: the address that receives the alerts.
- Drop threshold: the number of places lost from which an alert is triggered.
Scheduling
- Batch size: number of keywords processed on each cron run.
- History retention: how long checks are kept; older checks are purged automatically.
- Cron URL: a read-only, token-protected address to trigger from your host’s cron (see the Automatic checks section).
Adding and managing keywords
Open the Keywords tab then Add a keyword. Each keyword carries its context:
- Keyword: the query to track.
- Target URL (optional): the page you want to see rank. If provided, the module prioritises an exact match of this URL; otherwise it keeps the first page of your domain.
- Tag: a grouping label (product line, topic…) to filter your keywords.
- Language, Country and Device: the search context specific to this keyword.
- Search volume (optional): for reference.
- Active: only active keywords are checked by the cron.
The keyword list shows the current position, with a coloured label and an evolution arrow (▲ / ▼) compared to the previous check. Position 0 means “not ranking” within the analysed depth.
You can run an immediate check without waiting for the cron: use the Check now action on a row, or select several keywords and apply the Check bulk action. Bulk actions also let you enable, disable or delete in batch.
The dashboard
The Dashboard tab summarises your SEO through 7 indicators:
- Visibility index (0 to 100): an overall score weighted by a per-position CTR curve. A keyword in first position weighs far more than one at the bottom of the page. This is the trend indicator to follow over time.
- Total tracked: number of active keywords.
- Top 3 and Top 10: number of keywords ranking in the first three and ten places.
- Striking distance: keywords ranking between positions 4 and 20 — your most profitable opportunities.
- Average position: average of ranked positions.
- Not ranking: keywords that fell out of the analysed depth.
Below the indicators, a doughnut chart shows the distribution of your positions (top 3 / top 10 / striking distance / not ranking). Two tables list your gainers and losers between the last two checks, and a striking distance table isolates high-potential keywords. The Run all checks button performs an immediate check of all due keywords (via AJAX, without leaving the page).
Competitors and SERP features
For each check, the module detects the SERP features: featured snippet (with ownership identification — you or a competitor), People Also Ask and local pack.
The Competitors tab aggregates the domains that appear on your queries from the latest check of each keyword, counts their appearances and computes their average position. The 30 most present domains are displayed, to spot at a glance who is on your heels across your whole scope.
Automatic checks (cron)
To automate checks, trigger the cron URL from your host’s task scheduler (o2switch, OVH cron, etc.). The URL, protected by a token, is shown read-only in the configuration.
On each run, the cron processes a batch of due keywords (according to the configured batch size), spaces the calls to respect your provider, then applies your retention period by purging old checks. Two optional parameters are accepted on the URL: limit (number of keywords to process) and id_shop (targeted store in multistore).
The cron token protects the endpoint against unauthorised calls. Do not share it publicly. Any request without the correct token is rejected.
Alerts
When alerts are enabled, SERP Tracker sends an email (HTML and text templates, in French and English) when a keyword undergoes a significant change:
- entering or leaving the top 3;
- leaving the top 10;
- lost ranking (the keyword no longer appears);
- a drop above the configured threshold;
- gaining a featured snippet.
The email recalls the keyword concerned, the old and new position, the reason(s) for the alert and the ranking URL.
FAQ and troubleshooting
The dashboard shows “no provider configured”
Make sure you have selected a provider in the Provider dropdown and entered the matching key (or the login/password for DataForSEO). The banner disappears as soon as a valid provider is detected.
My keywords are not updating automatically
The module checks positions only when the cron URL is called. Set up a scheduled task at your host to trigger this URL at the desired frequency (for example once a day). In the meantime, the Run all checks button and the Check now action allow manual checks.
A position shows 0
Position 0 means your domain was not found within the analysed result depth. Optionally increase the depth in the configuration, or check the target URL and the context (country, device) of the keyword.
Why not scrape Google directly?
Direct scraping is fragile, quickly blocked and against Google’s terms of service. By going through an official SERP API, checks stay reliable and compliant. You keep control of costs via your own provider account.
How is the visibility index calculated?
Each position is converted into an estimated CTR via a per-position curve, then the whole is scaled to a 0–100 score. It is a trend indicator: it rises when your keywords move up overall toward the top of the results.
Is it compatible with PrestaShop 9 and multistore?
Yes. The module is compatible with PrestaShop 8 and 9, and tracking is isolated per store in multistore. The controllers rely on ModuleAdminController to stay compatible between PS8 and PS9.