PrestaShop Google Indexing: The Complete Guide to Getting Your Store in Search Results
Navigate PrestaShop's multi-language URL architecture and product combination complexity for clean Google indexing
In this guide
PrestaShop powers over 300,000 stores across Europe and Latin America, but its powerful features -- product combinations, multi-language URL routing, and deep module extensibility -- create specific indexing challenges. Each combination can generate its own URL, flooding Google with duplicates. Multi-language support creates parallel URL structures that need proper hreflang configuration. Third-party modules generate pages missing from sitemaps.
This guide covers PrestaShop 1.7.x and 8.x, walking through the admin SEO panel, GSitemap module, friendly URLs, .htaccess setup, multi-language handling, combination URL management, and module-generated page auditing.
PrestaShop's SEO & URLs Configuration Panel
PrestaShop's primary SEO settings live in the admin panel under Shop Parameters > Traffic & SEO > SEO & URLs (in PrestaShop 8.x) or Preferences > SEO & URLs (in PrestaShop 1.7.x). This panel contains several critical settings that affect how your store's URLs are structured and how Google perceives your pages.
The first essential setting is "Friendly URL." This must be enabled (set to Yes) to transform PrestaShop's default parameter-based URLs (index.php?id_product=42&controller=product) into clean, readable paths (/en/shoes/42-running-shoe.html). Without friendly URLs, your store URLs are ugly, harder to rank, and less clickable in search results.
The "Accented URL" setting controls whether non-ASCII characters are preserved in URLs. For stores in languages that use accents (French, Spanish, German, Portuguese), enabling this creates more natural URLs (/fr/chaussures-de-course.html instead of /fr/chaussures-de-course.html). However, some older servers and CDN configurations do not handle accented URLs well. Test before enabling.
The "Redirect disabled product" setting is critically important for e-commerce SEO. When a product is disabled (taken offline), this setting controls what happens to its URL. Options include: "No redirect" (returns a 404), "Permanent redirect (301) to the product's category," or "Permanent redirect (301) to a specific URL." For products that will never return, choose the 301 redirect to the product's category. For temporarily out-of-stock products, disable the product but choose "No redirect" and plan to re-enable it later -- or better yet, keep the product enabled with an out-of-stock message.
The "URL structure" section lets you customize the URL pattern for products, categories, and CMS pages. PrestaShop's default product URL includes the product ID: /{category}/{id}-{rewrite}.html. While including the ID ensures URL uniqueness, it is not ideal for SEO (numbers in URLs look less professional). PrestaShop 8.x allows you to remove the ID from URLs, but be aware that this requires unique product slugs across your entire catalog -- if two products have the same slug, one will get an auto-appended suffix.
Below the URL structure settings, you will find the meta tag management section. PrestaShop lets you set default meta titles and descriptions for page types (product pages, category pages, CMS pages, the homepage) using variables like {name}, {price}, {category}. Customize these templates to generate keyword-rich, unique metadata at scale.
GSitemap Module and Sitemap Management
PrestaShop does not include a sitemap generator in its core installation. The most commonly used solution is the GSitemap module, which is available for free in the PrestaShop Addons marketplace. After installing GSitemap (Modules > Module Manager > search for GSitemap), configure it from the module's settings page.
GSitemap generates an XML sitemap that includes products, categories, CMS pages, and optionally module-generated pages. The key configuration options include: which content types to include (products, categories, CMS pages, supplier pages, manufacturer pages), the update frequency for each type, and whether to include images in the sitemap.
After configuring, click "Generate Sitemap" to create the initial sitemap file at /1_index_sitemap.xml (or /sitemap.xml depending on your configuration). GSitemap creates a sitemap index that references individual sitemap files for each content type. For stores with many products, it splits product sitemaps into files of up to 25,000 URLs each.
GSitemap can be configured to regenerate automatically using PrestaShop's cron system. The module provides a cron URL that you add to your server's crontab. Set it to run daily (0 3 * * * wget -q -O /dev/null 'https://yourstore.com/modules/gsitemap/gsitemap-cron.php?token=YOUR_TOKEN') so the sitemap stays current as you add and remove products.
A significant limitation of GSitemap: it does not automatically include pages generated by third-party modules. If you have installed a blog module (like PrestaShop Blog by Starter Theme), a FAQ module, or a custom landing page module, those pages will not appear in the GSitemap-generated sitemap. You need to either find a sitemap module that supports those page types, add them manually to the sitemap, or configure the specific module to generate its own sitemap that you submit separately in Google Search Console.
After generating the sitemap, submit it in Google Search Console. Open your store's sitemap URL in a browser first to verify it is valid XML and contains the expected URLs. Check for any duplicate entries, URLs with session parameters, or pages you intentionally set to noindex that should not be in the sitemap.
Multi-Language URL Configuration and Hreflang
PrestaShop's built-in multi-language support is one of its strongest features for international e-commerce. When you install a language pack (International > Localization > Languages), PrestaShop creates a parallel URL structure for each language. English products live at /en/category/product-name.html, French at /fr/categorie/nom-du-produit.html, Spanish at /es/categoria/nombre-del-producto.html, and so on.
Each product, category, and CMS page has a separate URL rewrite field for every installed language. When editing a product, switch the language selector in the editor to see and customize the slug for each language. This is essential: PrestaShop auto-translates slugs when you use the auto-translation feature, but auto-translated slugs are often awkward or incorrect. Manually review and optimize the URL slug for each language, incorporating keywords relevant to that language's search behavior.
Hreflang tags tell Google which language version of a page to show to searchers in different regions. PrestaShop 1.7.7+ includes built-in hreflang support that outputs <link rel="alternate" hreflang="xx" href="..."> tags in the HTML head for each language version of a page. However, the implementation has known issues in some PrestaShop versions where hreflang tags are missing or incorrect. Verify by viewing the source of a product page and checking that hreflang tags are present for all active languages.
If hreflang tags are missing, install a dedicated SEO module that handles hreflang generation. Several modules in the PrestaShop Addons marketplace specifically address multi-language SEO, including hreflang tag generation, language-specific canonical URLs, and multi-language sitemap support.
For multi-country stores where the same language is used in different countries (e.g., English for US and UK, Spanish for Spain and Mexico), hreflang needs both language and country codes: hreflang="en-us" and hreflang="en-gb". PrestaShop's built-in hreflang may not handle country-specific targeting. You may need a module or custom development to generate country-specific hreflang annotations.
The multi-language URL structure also interacts with your sitemap. GSitemap generates URLs for all languages in a single sitemap (or split by language, depending on configuration). Verify that the sitemap includes URLs for every language and that each URL resolves correctly.
Product Combinations and URL Bloat
PrestaShop's product combination system allows a single product to have multiple variants based on attributes: size, color, material, width, length, etc. A basic shoe product with 8 sizes and 5 colors generates 40 combinations. A configurable electronics product with memory, storage, color, and warranty options can easily exceed 100 combinations.
The indexing impact depends on your configuration. By default, PrestaShop does not create separate URLs for each combination -- the product page loads with a default combination, and users select their preferred combination using dropdowns or swatches. The URL stays the same (/en/shoes/42-running-shoe.html) regardless of which combination is selected. This is the ideal behavior for SEO because it consolidates all variant traffic to a single indexed URL.
However, some PrestaShop themes and modules modify this behavior. Theme frameworks like Starter Theme or commercial themes may append combination attributes to the URL as anchor fragments (#size-10-color-red) or query parameters (?size=10&color=red). Anchor fragments are not indexed by Google (it ignores everything after #), but query parameters can be. If your theme appends combination selections as query parameters, each combination creates a unique URL that Google may attempt to index.
To check your store's behavior, visit a product with combinations and select different options. Watch the browser's address bar. If the URL changes with each combination selection, you have a potential index bloat problem. Fix this at the theme level by ensuring combination selections are handled via JavaScript without modifying the URL, or by using anchor fragments instead of query parameters.
If combination URLs with query parameters are already in Google's index, add canonical tags on all combination-parameterized URLs pointing to the base product URL (without parameters). You can also block combination parameters in robots.txt: Disallow: /*?size=, Disallow: /*?color=, etc. The most thorough solution is a theme modification that removes URL parameters entirely.
For stores that intentionally want separate indexed pages for each combination (rare, but sometimes used in fashion where each color variant has unique images and descriptions), ensure each combination page has unique title, meta description, and content. A page for "Running Shoe - Red Size 10" that is identical to "Running Shoe - Blue Size 8" except for the option text will be flagged as duplicate content.
Session IDs, .htaccess, and Technical URL Hygiene
Older PrestaShop installations (particularly those upgraded from versions prior to 1.7) may append session IDs to URLs. A session ID creates a unique URL for every visitor session: /en/shoes/42-running-shoe.html?PHPSESSID=abc123xyz. Google treats each session-parameterized URL as a distinct page, potentially indexing thousands of duplicate pages that differ only in the session ID.
PrestaShop 1.7+ and 8.x handle sessions via cookies by default, so session IDs should not appear in URLs. However, if your server's PHP configuration has session.use_only_cookies set to 0, PHP falls back to URL-based sessions when cookies are not available. Verify your PHP configuration and ensure session.use_only_cookies = 1 and session.use_trans_sid = 0.
The .htaccess file in PrestaShop's root directory controls URL rewriting, redirect rules, and security directives. PrestaShop generates this file automatically when you enable Friendly URLs. The generated .htaccess includes RewriteRules for clean URL routing, rules for blocking access to sensitive directories (/config/, /download/, /mails/, /modules/), and rules for handling MultiViews.
Customize the .htaccess file carefully. Add your custom redirect rules (301 redirects for old URLs, blocking patterns for unwanted crawling) above PrestaShop's auto-generated section, which is marked by # ~~start~~ and # ~~end~~ comments. Rules inside the auto-generated section are overwritten when you change settings in the admin panel.
Add the following to your .htaccess for SEO hygiene: force HTTPS (RewriteCond %{HTTPS} off / RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]), force a consistent domain (with or without www, but not both), and block known bot parameter patterns. These rules ensure Google sees a single, canonical version of every URL.
For Nginx servers, PrestaShop does not use .htaccess. The equivalent configuration goes in your Nginx server block. PrestaShop provides example Nginx configurations in their documentation that include rewrite rules for friendly URLs, security directives, and static file caching headers.
Module-Generated Pages and SEO Blind Spots
PrestaShop's module ecosystem adds functionality through installable extensions, and many modules generate public-facing pages that are not included in the core sitemap or covered by the default SEO settings. These pages become SEO blind spots -- they exist, Google can find them, but they may lack proper metadata, canonical tags, or sitemap inclusion.
Common examples include: blog modules that create pages at /blog/post-title (like the popular Smart Blog module), FAQ modules at /faq, manufacturer listing modules, supplier pages, brand pages, and custom landing page builders. Each of these modules may or may not handle SEO properly. Some include their own meta tag management and sitemap generation; others output pages with default or blank metadata.
Audit your installed modules by navigating to each module's public-facing URL and checking the page source. Look for: a <title> tag that is specific to the page (not the default PrestaShop template title), a meta description that describes the content, a canonical URL tag, and structured data if applicable. If any module outputs pages with default or missing metadata, check the module's configuration for SEO settings. If the module does not support custom metadata, you have three options: find a better module that does, modify the module's template files to add metadata, or request the module developer to add SEO fields.
For sitemap inclusion, check whether the module's pages appear in your GSitemap output. If they do not, you can: install a more comprehensive sitemap module that detects module pages, manually add the URLs to a supplemental sitemap, or check if the module generates its own sitemap file (some blog modules do, typically at /modules/modulename/sitemap.xml).
PrestaShop 8.x introduced a hooks system that allows modules to integrate with the SEO framework more cleanly. Modules that implement the actionGetPageSeoInfo hook can provide their page URLs and metadata to the core SEO system. When evaluating modules, prefer those built for PrestaShop 8.x that use these modern hooks over legacy modules that bypass the SEO framework entirely.
Step-by-Step Guide
Enable Friendly URLs and Configure URL Structure
Log in to your PrestaShop admin panel and navigate to Shop Parameters > Traffic & SEO > SEO & URLs. Set "Friendly URL" to Yes. Before saving, verify that your server has mod_rewrite enabled (Apache) or the appropriate rewrite rules configured (Nginx). Save the settings and test your store by visiting a product page -- the URL should now be clean (e.g., /en/shoes/42-running-shoe.html instead of index.php?id_product=42). If pages return 404 errors, the .htaccess file may not have been generated correctly. Delete the existing .htaccess and save the SEO settings again to regenerate it. Review the URL structure templates for products, categories, and CMS pages and customize them if desired (e.g., removing the ID number for PrestaShop 8.x stores).
Install and Configure GSitemap
Navigate to Modules > Module Manager and search for "GSitemap." If not installed, download it from the PrestaShop Addons marketplace and install it. Open the module configuration and select which content types to include: Products (Yes), Categories (Yes), CMS Pages (Yes). Set Manufacturers and Suppliers to No unless these pages have substantial content. Enable image sitemaps if your product images have descriptive filenames and alt text. Click "Generate Sitemap" and verify the output at /1_index_sitemap.xml (or your configured path). Set up a cron job for daily regeneration using the cron URL provided by the module. Submit the sitemap URL in Google Search Console.
Customize Meta Tags for All Page Types
In Shop Parameters > Traffic & SEO > SEO & URLs, scroll to the meta tag management section. For each page type (homepage, product, category, CMS page, search results, etc.), PrestaShop lists the current meta title and description. Click "Edit" to customize. For the homepage, write a unique title and description featuring your brand name and primary keywords. For product pages, customize the template using variables: "{name} - {price} | {shop_name}" for titles and "{description_short} - Buy {name} at {shop_name}" for descriptions. For category pages, use "{name} - {shop_name}" and a description template incorporating the category description. For pages that should not be indexed (search results, my account, order confirmation), add noindex using the page-specific meta settings.
Configure Multi-Language SEO (If Applicable)
For stores with multiple languages, navigate to International > Localization > Languages and verify all active languages have proper ISO codes. For each product, open the product editor and switch the language selector to verify that every language has a customized URL rewrite (slug), product name, and description. Do not rely on auto-translation for slugs -- review and optimize each one manually for keyword relevance in that language. Check hreflang tag output by viewing the page source of a product page -- you should see <link rel="alternate" hreflang="xx" href="..."> for each active language. If hreflang tags are missing, install a dedicated multi-language SEO module from the PrestaShop Addons marketplace.
Audit and Fix Product Combination URL Behavior
Visit a product with multiple combinations (e.g., a product with size and color options) and select different combinations while watching the browser's address bar. If the URL changes with each selection (adding query parameters like ?size=10&color=red), you have a potential duplicate content issue. First, check your theme's configuration for a "URL update" or "combination URL" setting and disable it. If no such setting exists, the fix requires editing the theme's product page JavaScript to prevent URL parameter appending. As a temporary measure, add robots.txt rules blocking combination parameter patterns: Disallow: /*?size= and Disallow: /*?color=. Verify the base product URL has a self-referencing canonical tag.
Set Up .htaccess Rules for URL Hygiene
Open your store's .htaccess file (in the PrestaShop root directory) and add rules above the auto-generated section (before the # ~~start~~ comment). Add HTTPS enforcement: RewriteCond %{HTTPS} off / RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]. Add www consistency (either force www or force non-www, not both). Add session ID blocking: RewriteCond %{QUERY_STRING} PHPSESSID / RewriteRule .* %{REQUEST_URI}? [R=301,L]. Verify your PHP configuration has session.use_only_cookies = 1 to prevent session IDs from appearing in URLs in the first place. Test all rules by visiting your store with various URL patterns and confirming correct redirects using browser developer tools.
Submit Priority URLs via IndexBolt and Monitor
After completing all technical SEO configurations, use IndexBolt to submit your highest-priority product pages, category pages, and CMS content pages to Google. For PrestaShop stores, prioritize best-selling products, seasonal collections, and newly added products. If your store is multi-language, submit the primary language versions first, then submit other language versions to ensure Google indexes the correct hreflang relationships. IndexBolt's Instant mode is valuable for product launches, flash sales, and seasonal promotions where delayed indexing means lost sales. Monitor results in Google Search Console, paying attention to the Index Coverage report for any unexpected exclusions or duplicates. Check that the correct language version appears for searches in each target market.
Common Issues & How to Fix Them
Product combination parameters creating thousands of duplicate URLs
Cause: Some PrestaShop themes append product attribute selections (size, color, material) as query parameters to the product URL. A product with 40 combinations creates 40 unique URLs with the same content. Google discovers these through JavaScript event handlers that modify the URL on combination selection, or through internal links in the product page's markup.
Fix: Modify the theme to handle combination selections via JavaScript without changing the URL, or use anchor fragments (#) instead of query parameters (?). Add canonical tags on parameterized URLs pointing to the base product URL. Block combination parameters in robots.txt as a backup measure. For PrestaShop 8.x, check if the theme offers a configuration option to disable URL updates on combination change.
Multi-language content treated as duplicates by Google
Cause: Hreflang tags are missing or incorrectly implemented, causing Google to treat French, Spanish, and English versions of the same product as duplicate content rather than language variants. PrestaShop's built-in hreflang support has known bugs in certain versions (particularly 1.7.6.x through 1.7.7.x) that output incorrect hreflang annotations.
Fix: Verify hreflang tags by viewing the page source of product pages in each language. Every page should have hreflang tags for all language versions, including a self-referencing tag. If tags are missing or incorrect, update PrestaShop to the latest version (8.x) where hreflang handling is improved, or install a dedicated multi-language SEO module. Ensure every product has properly translated URL rewrites for each language -- auto-generated slugs often contain encoding errors.
Default meta tags not customized, creating generic metadata across the store
Cause: PrestaShop's default meta tag templates produce generic titles and descriptions like "Buy [Product Name] at [Store Name]" for every product and "[Category Name] - [Store Name]" for every category. When hundreds of products share the same template with minimal differentiation, Google may consider them to have low-quality metadata.
Fix: Customize the meta tag templates in Shop Parameters > Traffic & SEO to include differentiating variables: price, key attributes, and category context. For high-priority products (top 20% by revenue), write fully custom titles and descriptions in the product editor. For categories, write unique descriptions and meta descriptions that incorporate the category's specific product range and value proposition.
Module-generated pages not included in sitemap and missing metadata
Cause: Third-party modules (blog modules, FAQ modules, landing page builders) generate public-facing pages that GSitemap does not detect. These pages may have default or blank meta titles and descriptions because the modules do not integrate with PrestaShop's meta tag system. Google discovers these pages through internal links but indexes them with poor metadata.
Fix: Audit all installed modules for public-facing pages. For each module, check its configuration for SEO settings and configure meta tags. If the module lacks SEO features, edit its template files directly to add proper <title> and meta description tags. For sitemap inclusion, check if the module generates its own sitemap or provides a hook for GSitemap integration. If neither, manually add the module's page URLs to a supplemental sitemap file and submit it in Google Search Console.
Session IDs appearing in URLs causing massive duplication
Cause: The server's PHP configuration has session.use_only_cookies disabled, causing PHP to fall back to URL-based session tracking when a visitor's browser blocks cookies. This appends ?PHPSESSID=uniquestring to every URL. Since each session ID is unique, Google sees every visit as a new page, creating potentially millions of duplicate entries.
Fix: Update your server's PHP configuration: set session.use_only_cookies = 1 and session.use_trans_sid = 0. Add a .htaccess rule that strips PHPSESSID from URLs with a 301 redirect: RewriteCond %{QUERY_STRING} PHPSESSID / RewriteRule .* %{REQUEST_URI}? [R=301,L]. After fixing, use Google Search Console's Removals tool to request removal of any session-parameterized URLs already in the index.
Supplier and manufacturer pages creating thin content
Cause: PrestaShop auto-generates pages for every supplier and manufacturer in your catalog at /supplier/[name] and /manufacturer/[name]. These pages contain only a product grid with no descriptive content. Stores with dozens of suppliers have dozens of thin pages that dilute overall site quality.
Fix: Either add substantial descriptions to each supplier and manufacturer page (Products > Suppliers > [Name] > edit description), or set these page types to noindex. To noindex all supplier/manufacturer pages, add a noindex directive in the template file for those page types (templates/catalog/supplier.tpl and manufacturer.tpl) or use a SEO module that allows page-type-level noindex rules. Also exclude these pages from the GSitemap configuration.
Pro Tips
PrestaShop's deep product catalogs and multi-language structures mean Google needs weeks to fully discover and index your store. Use IndexBolt to fast-track your highest-value product pages and new collections across all language versions -- no waiting for organic crawl cycles.
100 free credits. No credit card required. See results in under 24 hours.
Frequently Asked Questions
Does PrestaShop have a built-in sitemap generator?+
PrestaShop does not include a sitemap generator in its core installation. The most widely used solution is the GSitemap module, available for free from the PrestaShop Addons marketplace. After installation, you configure which content types to include, generate the sitemap, and set up a cron job for automatic daily regeneration. Some paid SEO modules offer more advanced sitemap features including automatic detection of module-generated pages and multi-language sitemap variants with hreflang annotations.
How do I enable friendly URLs in PrestaShop?+
Navigate to Shop Parameters > Traffic & SEO > SEO & URLs and set "Friendly URL" to Yes. Your server must have Apache mod_rewrite enabled (or equivalent Nginx rewrite rules). PrestaShop automatically generates the required .htaccess file when you enable friendly URLs. If you get 404 errors after enabling, delete the .htaccess file and re-save the SEO settings to regenerate it. On shared hosting, contact your host to verify mod_rewrite is enabled.
How does PrestaShop handle SEO for multi-language stores?+
PrestaShop creates language-prefixed URLs for each installed language (e.g., /en/, /fr/, /es/). Each product, category, and CMS page has separate URL slugs for each language that you can customize in the editor. PrestaShop 1.7.7+ includes built-in hreflang tag support to tell Google which language versions are related. However, the hreflang implementation has known issues in some versions, so verify the tags in your page source and install a dedicated multi-language SEO module if they are missing or incorrect.
Why are product combination URLs creating duplicate content in my PrestaShop store?+
Some PrestaShop themes update the browser URL when customers select product combinations (size, color, etc.), adding query parameters like ?size=10&color=red. Each parameter combination creates a unique URL with the same content. To fix this, modify your theme to handle combination selection via JavaScript without changing the URL, add canonical tags pointing parameterized URLs to the base product URL, and block combination parameters in robots.txt. PrestaShop's core does not create combination URLs -- this is a theme-level behavior.
How do I handle SEO for discontinued PrestaShop products?+
In Shop Parameters > Traffic & SEO > SEO & URLs, configure the "Redirect disabled product" setting. For permanently discontinued products, set the redirect to the product's category page (301 permanent). This transfers the product page's accumulated search equity to the category page. For temporarily out-of-stock products, keep the product enabled with an out-of-stock message rather than disabling it -- this preserves the product page's indexing and ranking while clearly communicating unavailability to customers.
Can IndexBolt help with PrestaShop multi-language indexing?+
Yes, IndexBolt is particularly useful for multi-language PrestaShop stores because each language version of a product is a separate URL that Google must discover and index independently. A store with 500 products in 4 languages has 2,000 product URLs to index. Instead of waiting for Google to crawl through all language versions naturally, you can submit the primary language URLs first, then submit other language versions. This is especially valuable when launching in a new market: submit all product URLs for the new language through IndexBolt to accelerate market entry while waiting for organic crawl discovery.