# SEO Cannibalization Detector — PrestaShop 8 & 9

> Detect and resolve SEO cannibalization in your store through Google Search Console: severity score 0-100, automatic recommendations, integrated 301 redirects.

- Page: <https://www.datafirefly.com/en/product/dfcannibalization/>
- Language: en
- Last updated: 2026-06-29
- Platform: PrestaShop
- Category: SEO & Search Optimisation
- SKU: DF-CANNIBAL
- Price: 39.00 EUR
- Other languages: [fr](https://www.datafirefly.com/product/dfcannibalization/index.md), [es](https://www.datafirefly.com/es/producto/dfcannibalization/index.md), [de](https://www.datafirefly.com/de/produkt/dfcannibalization/index.md), [it](https://www.datafirefly.com/it/product/dfcannibalization/index.md), [pl](https://www.datafirefly.com/pl/produkt/dfcannibalization/index.md), [nl](https://www.datafirefly.com/nl/product/dfcannibalization/index.md), [pt](https://www.datafirefly.com/pt/produto/detetor-canibalizacao-seo-prestashop/index.md)
- Index: <https://www.datafirefly.com/en/product/llms.txt>

## Multiple pages of your store competing for the same keywords?

When two or three PrestaShop URLs rank on the same query, Google splits the clicks between them, makes their positions fluctuate, and ultimately dilutes your authority. You lose traffic without even knowing where to look.

**SEO Cannibalization Detector** connects in read-only mode to your Google Search Console property, analyzes up to 16 months of real data, and automatically identifies every query where multiple URLs cannibalize each other. For each case, the module assigns a severity score out of 100 and recommends the most relevant action: consolidate content, redirect 301, differentiate targeting, or simply monitor.

## What you get in just minutes

- **The exhaustive list** of cannibalized queries in your store, sorted by severity.
- **For each query**, the details of competing pages with clicks, impressions, average position, and CTR.
- **The "winning" URL** identified automatically via a weighted signal (clicks, position, impressions).
- **A contextual recommendation** based on URL type (product page, category, CMS, blog…) and performance distribution.
- **An "apply 301 redirect" button** that creates the rule in the database and serves it from the PrestaShop dispatcher hook.

## A transparent scoring algorithm

The severity score combines four weighted signals:

- **Number of competing pages** (25 points max) — the more URLs in competition, the worse it gets.
- **Click distribution** (30 points max) — calculated via an inverted HHI index: a query with 50/50 between two URLs is more problematic than a 95/5.
- **Position gap** (30 points max) — a small gap means Google is genuinely hesitating between pages, bonus if all are in top 10.
- **Impression volume** (15 points max, logarithmic scale) — cannibalization on a query with 50k impressions/month weighs more than one with 50 impressions.

Four alert levels: _low_, _medium_, _high_, _critical_.

## Automatic recommendations via decision tree

- **Differentiate** — pages are of different types (a product vs. a category vs. an article). Rebalance title/meta tags rather than merging.
- **Redirect 301** — one URL captures over 70% of clicks at average position ≤ 15. The module automatically identifies the winner and proposes the redirect.
- **Consolidate** — performance is split. Content merge recommended, then 301 to the kept URL.
- **Monitor** — score < 26. Simple monitoring, no urgent action.

## 301 redirects served from PrestaShop

When you validate a redirect in the report, it is stored in the database and served from the `actionDispatcherBefore` hook of PrestaShop, before any routing processing. Optimal performance: a single SELECT per PHP-FPM worker, static in-memory cache, hit counter per rule. You can disable or delete each redirect from the "Redirects 301" tab.

## Scheduled automatic scans

A token-protected front controller is exposed to enable scheduled scans (cron, OVH scheduler, o2switch, etc.). Example crontab entry provided in the readme.

## Setup in 4 steps

1. Create a service account in Google Cloud Console and download the JSON key.
2. In Search Console, add the service account email as a restricted user on your property.
3. Paste the JSON into the module and enter your GSC property URL.
4. Click "Test connection" then "Run scan".

No external dependency: no Google SDK library, native RS256 JWT signature via OpenSSL, HTTP requests in cURL.
