SEO Revolution: setup and help

Quick start

  1. Back up the database, URL rules and root SEO files, then upload and install mprseorevolution.
  2. Open SEO Revolution > Dashboard, select the intended shop and run Tools > Integrity Check.
  3. Open Global Settings and check Enable SEO Revolution and SEO Features; review ownership before enabling overlapping output.
  4. Use Content > Meta Tags and entity templates to configure one test page, then inspect its title, description and H1.
  5. Configure shared Hreflang, Canonical Rules and Content > Structured Data only for the output you intend to use.
  6. Configure Technical SEO > Sitemap and Robots.txt; check publication/enforcement status and inspect the resulting URLs.
  7. Configure the shared cron command, verify one job result and test a redirect, a missing page and storefront metadata.

Requires PrestaShop 1.6.0.0 or later and PHP 7.1 or later.

Setup manual

Install and select the shop

Back up the database, current SEO settings, route rules, root robots.txt and generated files. Upload and install mprseorevolution, then click Configure to open SEO Revolution > Dashboard. Run Tools > Integrity Check before configuring a live output.

Select one shop before saving shop-specific SEO settings or policy overrides. Review Back Office employee permissions if a staff account can view a page but cannot save it. Installation grants access to the authenticated installer's profile; later menu repairs do not grant every employee access.

The menu separates Redirections, Technical SEO, Content, Linking, Indexing, Tools, Settings and Global Settings. Start with metadata for one page, then add the other outputs you need. Use one owner for each canonical, hreflang, structured-data, sitemap and tracking output.

Configure Global Settings

Open SEO Revolution > Global Settings. The Settings menu entry opens the same form. The values below are the form's defaults; a shop with saved settings keeps its own values.

General

  • Enable SEO Revolution. Form default: 1. This switch is saved but does not currently turn the storefront output on or off. To stop SEO changes and keep only tracking, turn SEO Features off; to stop everything, disable the module in Module Manager.

  • Trailing Slash Handling. Saves your preference for no change, adding or removing a trailing slash. Default: none. This field does not change canonical URLs. Configure that behavior in the shared canonical settings and check redirects separately.

  • SEO Features. Default: on. Turn this off if the module should run tracking only. The module then skips its SEO output, route, redirect and file changes while retaining configured Google tracking/uploads. Clear the page cache after changing it.

  • Friendly photo deep-link URLs (/product/photo/N). Default: off. Enable only when you intend this module to own these routes. With it off, image deep links use query parameters.

Sitemap generation, robots.txt publication, SEO policy rules and some redirects start disabled on a new installation. These tasks keep existing files while disabled. Global Settings has no switch to activate them. Check the task results before using their output.

External Links and Pagination

  • Add nofollow to external links. Default: 1. The setting is saved, but the module does not currently rewrite external links, so no nofollow is added.
  • Open external links in new tab. Default: 1. The preference is saved, but it does not make external links open in a new tab.
  • Add noopener to external links. Default: 1. The setting is saved, but the module does not currently rewrite external links, so no noopener is added.
  • Whitelist domains. Stores the domain exceptions for the global form preferences. Default: empty. Enter one domain per line.
  • Add rel="next/prev". Form default: 1. This global preference is saved but does not control pagination links. Check the links on later pages.
  • Canonical to first page. Stores the first-page canonical preference. Form default: 0. Verify it against shared canonical and entity pagination settings.
  • Noindex paginated pages. Stores the global later-page noindex preference. Form default: 0. Use SEO Policies and inspect effective robots output.

Several fields on this form are saved but do not change the storefront: Enable SEO Revolution, Trailing Slash Handling, the External Links and Pagination switches, Enable hreflang, the Open Graph and Twitter fields and the Schema.org switches. Change those outputs on their own pages (Open Graph & Social, Structured Data) and check the public page after saving. To stop all SEO output and keep only tracking, turn SEO Features off.

Open Graph / Social and Monitoring

  • Enable Open Graph tags. Form default: 1. This field is saved but not read by the storefront. Open Graph output follows the Enable Open Graph switch on the Open Graph & Social page, which is on (1) after installation.
  • Enable Twitter Cards. Form default: 0. This field is saved but does not turn Twitter Cards on or off. Twitter Cards start enabled (1) after installation.
  • Twitter handle. Initially empty. The value is saved, but it does not populate the twitter:site tag. No form supplies the separate value used for that tag, so it is absent with the default configuration.
  • Default social image. Uploads the fallback image used when a page has no specific Open Graph image; default: ``.
  • Ignore exploit probes. Stops obvious scanner and malformed URLs being stored in the 404 monitor; default: 1.
  • Ignored 404 URL patterns. Adds custom substring, wildcard, or regex: ignore rules for the 404 monitor; default: ``.

Maximum stored 404 rows defaults to 10000. 404 retention days defaults to 0, meaning no age cutoff. Set these to bound your monitoring data. The default exploit-probe filter is on; Ignored 404 URL patterns accepts the supported substring, wildcard and regex: rules.

The global form still exposes Enable Schema.org markup, Organization Schema, WebSite Schema, Product Schema and Include Reviews in Product Schema. Their listed form defaults are on, on, on, on and off respectively. Configure effective shared structured-data settings under Content > Structured Data and inspect readiness there; do not treat a legacy global switch as the full shared configuration.

Set entity templates and individual metadata

Use Content > Meta Tags to review missing or unsuitable titles and descriptions. Edit an individual page's Meta title and Meta description when it needs explicit text. Use the entity-type template editor for repeatable title, description, H1, URL, Open Graph, custom head and pagination templates. Product, category, CMS, manufacturer and supplier contexts have different variables.

For products, you can use:

%product_name% | %product_brand% | %shop_name%
Buy %product_name% in %product_category% from %shop_name%. Price: %product_price%.

For category pagination:

%category_name% - Page %page_number% | %shop_name%
Browse %category_products_count% products in %category_name%. Page %page_number%.

Use Bulk Operations when you need to apply reviewed changes at scale. Test one entity first and inspect its final title, description and H1. Do not assume a saved draft or template has already replaced native metadata.

The module stores per-page canonical, robots, Open Graph, custom-head and redirect information through its page registry and related editors. Use the appropriate page editor for its entity type. Keep custom head code limited to output you intend to publish.

Developers can read the registry from another module:

require_once _PS_MODULE_DIR_ . 'mprseorevolution/vendor/autoload.php';
$registry = new \MPRSEORevolution\Classes\Registry\PageRegistry();
$productPages = $registry->getPagesByType(
    \MPRSEORevolution\Classes\Registry\PageRegistry::TYPE_PRODUCT
);

Configure canonical URLs, hreflang and policies

Use Technical SEO > Canonical Rules for the shared canonical configuration. The canonical package defaults to enabled, lowercase on, forced trailing slash off and pagination stripping off. Its tracking-parameter list is:

utm_source,utm_medium,utm_campaign,utm_term,utm_content,fbclid,gclid,msclkid

By default, each paginated page uses its own canonical URL (self). Review canonical behavior on page one, later pages, URLs with tracking parameters and product combinations. A link in HTML should resolve to the intended canonical page without an unexpected loop.

Open Hreflang > Configuration and Hreflang > Groups. These are shared with Hreflang Manager. Configure the active languages, automatic/manual connections and x-default choice there. The old two-line global hreflang preference list does not describe this current screen. Test actual alternate links in each shop/language and avoid listing unpublished translations as usable alternates.

Open Technical SEO > SEO Policies for page-type defaults and per-module overrides. Choose one shop before saving the matrix. Use inherited choices until you need an explicit Index/Noindex or enabled/disabled policy. Check the final robots meta/headers, canonical and sitemap inclusion together.

Configure redirects, retired products and 404 monitoring

Open Redirections > Redirects. Create a rule with Source URL, Target Page, Redirect Type, optional Note and Active. The form offers 301, 302 and 410. Leave the target empty for 410 Gone. Test source and destination before applying a broad rule.

Redirects and 404 monitoring start enabled (1). Global Settings has no separate controls for them. 404 Monitor records missing front-office requests with URL, referrer, user agent, IP, hit count and resolved state, subject to exclusions and limits. Trigger a harmless missing test path and inspect its record.

Use Redirections > Retired Products for the available product lifecycle workflow. Inspect its status when enforcement is inactive.

Configure robots.txt

Open Technical SEO > Robots.txt. Review user-agent rules and preview generated content before publishing. The manager can back up a previous root file and offers restoration/default-generation operations. Keep a separate backup of your original root file.

Generated content can include user-agent rules and a sitemap reference. Use the actual sitemap URL your shop serves. Do not paste a sample path list over an existing live file without reviewing the shop's own paths and the module's current publication status.

Check that the web process can write the intended root file and backup location. If publication is skipped with enforcement_off, inspect the deployment's enforcement state. Verify the HTTP response at /robots.txt after a save. Blocking a URL from crawling can prevent a crawler from seeing metadata on that page.

Configure and generate sitemaps

Open Technical SEO > Sitemap, then Sitemap Settings. Use its URLs/logs screens to inspect generated output and validation.

Content and formats

Products, Categories, CMS Pages, Blog Posts, Filter SEO Pages, Search SEO Pages, core pages, module pages, images and hreflang default on. Manufacturers and Suppliers default off in the sitemap settings. Blog/filter/search content needs the corresponding installed provider. Pages added by other modules controls the additional provider group, with separate provider choices for FAQ, documentation, knowledge base, showcase and similar pages.

Initial Priority & Frequency values are:

Type Priority Frequency
Home 1.0 daily
Product 0.8 weekly
Category 0.7 weekly
CMS 0.5 monthly
Manufacturer 0.4 monthly
Supplier 0.3 monthly
Core page 0.3 monthly
Search SEO page 0.5 monthly

Include image sitemaps, Include hreflang links, Split into multiple files and Generate HTML sitemap default on. Max URLs per file defaults to 50000. Generate RSS feed defaults off. Keep splitting on for a large catalogue and inspect the index as well as child files under /sitemaps/.

Verification and submission

Field Default When to change it
Verify URLs On Disable only if your generation workflow provides the required validation another way.
Concurrent requests 1 Keep low on a live shop; the verifier caps it at 3.
Verification URLs per cron run 25 Increase after measuring request and server cost.
Cache warm URLs per cron run 0 Use a positive budget only when you want warming.
Internal link targets per idle cron run 25 Set 0 to disable idle link-target refresh.
Batch delay 500 ms Increase to reduce request frequency.
Request timeout 10 seconds Adjust for your actual server response times.
Reuse validation for 30 days Use 0 to require validation again each generation.
HTTP spot-check sample 2 percent Change the proportion checked despite reusable validation.

Submit sitemap to Google Search Console and Legacy Bing sitemap ping both default off. The Google action uses an authenticated Search Console connection. Do not rely on anonymous ping endpoints. First generate and inspect the files, then submit the verified sitemap through the configured connection or your webmaster tools.

The module provides a sitemap URL. Use the actual index URL shown/generated by your installation, including shop paths. A skipped cron generation can indicate inactive enforcement; check the result instead of assuming the file was refreshed.

Configure shared structured data

Open Content > Structured Data. Its tabs are Schema types, Organization, Social profiles, Products, Shipping, Returns and Additional types. The page shows readiness and uses shared settings. When older settings are imported, existing saved settings take precedence; imported values can remain in use.

If no saved settings override them, SEO Revolution starts with a product image limit of 30, product weight unit KGM, variant limit 50 and category product limit 12. WebSite search, shipping and automatic microdata/JSON-LD cleaning start off. The shared form can have different initial values. Read the displayed values before saving.

Schema types, identity and social profiles

Enable only the types you can populate correctly. Product, Organization, WebSite, breadcrumb, category and CMS type defaults are enabled in the shared definitions. FAQ defaults off; Blog defaults on but needs its contributor. Organization/WebSite can be requested on eligible pages. The visible breadcrumb trail owns the effective breadcrumb schema policy.

Org type defaults to Organization. Org name, legal name, description, URL, logo, email, phone, address, founding date and social-profile URLs have empty base values. Fill your real identity. Org aggregate rating defaults off. Do not supply a rating without the matching review data.

Products

Product brand source defaults to manufacturer. SKU source defaults to sku; MPN source defaults to mpn. Product condition defaults to https://schema.org/NewCondition. Product reviews enabled defaults on in the shared package, and output still needs a supported review source.

Publish selectable ProductGroup variants defaults on. Product variant mode defaults to productgroup. The alternative publishes a parent Product with a proven selected-item Offer, not an automatic price range. Review the attribute-to-schema-property matrix and any series-feature mapping before publishing variant data. The suite profile's variant limit is 50; the base shared definition uses 0.

Product dimension unit defaults to CMT. Price tax display defaults to auto. Price valid days has an empty shared default. Review actual images, selected variant, brand, identifiers, stock availability, tax display and price in the rendered JSON-LD.

Shipping and returns

Shipping data needs a real destination, carrier and delivery commitment. The base package enables shipping, but SEO Revolution starts with shipping off. Handling/transit minimum and maximum values are empty. Leave them blank until you enter actual commitments. Configure Shipping Currency only when the suite needs an explicit shipping-cost denomination.

Returns enabled defaults off. Returns days, return type, fees, method, refund type and physical return destination are empty in the shared base. Returns policy mode supports verified return terms or an Organization policy link. Link-only mode needs Organization placement and a published policy CMS page. Set country scope, placement, fees and exceptions according to the real policy, then preview a product before enabling output.

Additional types and cleanup

LocalBusiness and SoftwareApplication are optional contributors, initially off. The base software category is BusinessApplication and OS text is Web (PrestaShop). Identity/contact URL, accepted payments and currencies require your values. Contributor readiness determines whether those extra types can render.

Use the available preview, scan, dry-run and backup/restore tools before applying theme schema cleanup. Clean existing jsonld only replaces successfully prepared managed schema; ambiguous referenced conflicts can remain. Inspect the complete public page source to confirm the final combination of theme and module JSON-LD.

Configure image SEO and internal linking

Image SEO

Open Content > Image SEO from the available content tools. Auto-generate alt texts defaults on. Alt text template falls back to %product_name%. The product generator supports:

%product_name% - %category% - %manufacturer% - image %position%

It also accepts %brand% and %reference%. The position placeholder counts from one when a position is available. Review missing-alt records, generate a small batch and check the image alt attributes in your theme. Filename metadata is stored separately; the module does not rename the image files themselves.

The Image SEO settings form has no WebP quality or lazy-loading controls. Legacy settings do not enable image conversion or lazy loading. Manage those operations with your image-processing tool.

Internal Links and Link Audit

Open Linking > Internal Links. Configure link groups, target URLs, language/shop targeting and the content rules you need. Initial limits are Maximum links per page = 5 and Maximum links per group = 3. Included HTML tags defaults to p,div,span,blockquote,li,td.

Prevent duplicate href, Prevent multiple autolinks in same element, Proportional global limit distribution, Even link distribution within text, Skip current page URL and Exclude headings default on. Prevent link in linked parent and Exclude bold/strong text default off. The default target is _self, rel is empty and CSS class is mpr-autolink. Debug profiling defaults off with an empty IP list. Turn it on only for a deliberate diagnostic check.

The former CSS included_selectors preference has been retired. The module applies links to supported saved content. Test a product, CMS and category content example instead of looking for the old selector field.

Use Linking > Link Audit to scan sources and check targets. The configured default budgets are 2000 sources, 50 targets and 168 hours of staleness. A standalone active mprinternallinking module can own live injection instead of suite groups. Read the ownership notice before adjusting the wrong set of rules.

Use Linking > Backlinks to import or manage backlink records and check sources. Default automatic checks are on, interval 7 days and batch limit 50. Use Disavow to manage/export the entries you intend to submit; saving a list is not the same as submitting it to an external service.

Configure AI Generation, Indexing API and Search Console

AI Generation

Open Tools > AI Generation and its settings. Set Primary Provider (openai initially) and the relevant OpenAI API Key, Anthropic API Key or Gemini API Key. The default models are gpt-4, claude-3-sonnet-20240229 and gemini-pro. Select a model that your configured provider accepts and test one draft.

Title generation prompt and Description generation prompt default empty. Max title length defaults to 60, Max description length to 160, and Writing style to professional. Review generated drafts before accepting or applying a bulk operation. Generation sends entity context to the chosen provider; this is separate from customer/order conversion tracking.

Indexing API

Open Indexing > Indexing API. Enable Google Indexing API and Enable Bing IndexNow default off. Configure the service account/key fields for the provider you use. Queue product updates defaults off for both providers.

Google's module-side daily quota defaults to 200, batch size 50 and verification delay 48 hours. Bing's quota defaults to 10000 and batch size 100. Queue retry defaults are 5 attempts, 30-minute base backoff and 21-day resubmission cooldown. Review the selected scope, tier map and service-category root before queuing broadly. A queued/submitted URL is not confirmation that a search engine has indexed it.

Search Console

Open Indexing > Search Console. Configure and complete the offered connection/authorization workflow, select the correct site property and run a small sync. Review query, page, country, device and URL-inspection results and the task messages. Credentials and permission to the selected property are required. A configured GA4 property is not a Search Console connection.

Configure LLMs.txt

Open Technical SEO > LLMs.txt. Enable llms.txt and Also generate llms-full.txt default off. Language = Shop default initially. Categories, Products, CMS Pages and Blog Posts default included; Brands / Manufacturers defaults off.

Max products defaults to 50, Max blog posts to 30 and Product sort to Best sellers. Use Newest first, Name A-Z or Price high to low when appropriate. Exclude CMS IDs, Description, About and stored custom sections default empty. Exclude private or irrelevant pages before generating.

Save, generate and inspect the displayed file status and preview. Check /llms.txt and, when enabled, /llms-full.txt in the intended shop. The full file includes expanded content. Ensure the output location is writable and inspect any ownership/publication warning instead of overwriting an unrelated root file.

Configure Google tracking and conversion uploads

Open the Google Analytics area in Global Settings and review the tracking-ownership controls. Enter credentials and IDs only for the outputs you intend this module to own. Google/GA4 browser and server events require the relevant configuration and consent decisions; an enabled switch with blank IDs is not a working integration.

Credential/path defaults are empty unless shown otherwise.

Back Office field Form default Setup guidance
Enable Google Tracking 1 Master switch for SEO Revolution-owned GA4 and Google Ads tracking.
GA4 Measurement ID empty Your GA4 Measurement ID (e.g. G-XXXXXXXXXX). Used for front-end tracking tag.
Google Tag Gateway (first-party tagging) 0 Load the Google tag and send GA4 collection through your own first-party path (Cloudflare Google Tag Gateway) so they survive ITP and ad-blockers. Requires the gateway to be configured on the CDN first, for the GA4 Measurement ID, with automatic tag setup (tag injection) off: this module renders the only tag loader.
Tag Gateway measurement path empty Cloudflare Google Tag Gateway first-party path, e.g. /v2ur. Leave blank when enabling to generate a random 4-character path.
GA4 Property ID empty Numeric GA4 Property ID (e.g. 478319267). Required for the Data API (dashboard reports).
Service Account Key Path empty Absolute path to the Google service account JSON key file. Leave empty to use the default.
User ID Tracking 1 Send a salted SHA256 hash of the customer ID to GA4 for cross-device tracking. Raw customer IDs are never sent.
IP Anonymization 1 Anonymize visitor IP addresses (GDPR compliance).
Measurement Protocol API Secret empty Used only server-side for GA4 purchase tracking. Never rendered to the browser.
Server-Side Purchase Tracking 1 Send GA4 purchases through Measurement Protocol instead of the browser purchase event when the API Secret is configured. Delayed paid-state changes use the same transaction_id queue.
GA4 Debug Mode 0 Send debug_mode=true for GA4 DebugView. Keep disabled in production.
Exclude Employees 1 Do not inject Google tracking when a back-office employee is browsing the shop.
Server Event Log Retention 90 Number of days to keep server-side Measurement Protocol event logs. Set 0 to keep indefinitely.
Google Signals 0 Enable Google Signals support in the gtag config. Also requires Google Signals enabled in GA4.
High-Intent Product Engagement 0 Send high_intent_product_engagement to GA4 when shoppers browse product images, change combinations, open product detail tabs, or stay on a product page long enough. Use it for audiences/secondary signals, not primary purchase bidding.
Gallery Views Threshold 3 Number of distinct gallery image interactions needed before the high-intent event fires. Default: 3.
Dwell-Time Threshold 45 Seconds on a product page before the high-intent event can fire even without another qualifying interaction. Default: 45.
Product Interaction Signals 0 Send secondary high-intent product interaction events such as select_option, configurator_complete and add_to_cart_with_options. Keep disabled unless the shop explicitly opts in.
Record Product Interaction Signals 0 Store consented first-party product interaction events server-side for Customer Match audience uploads. Requires product interaction signals and explicit customer consent.
Product Option Signal Throttle 1500 Minimum milliseconds between repeated product option signals for the same event signature. Default: 1500.
Browse-Depth Signals 0 Send secondary GA4 audience events when shoppers view multiple products or category/listing pages. Purchase remains the only primary conversion.
Product Depth Threshold 3 Number of distinct product pages in one browser session before deep_browse_products fires. Default: 3.
Category Depth Threshold 2 Number of distinct category/listing pages in one browser session before deep_browse_categories fires. Default: 2.
Record Browse-Depth Signals 0 Store consented browse-depth events server-side for first-party audience workflows. Requires browse-depth signals and explicit customer consent.
Browse-Depth Signal Throttle 300 Minimum seconds before the same browse-depth event can be sent again as depth increases. Default: 300.
Browse-Depth Session Window 1800 Seconds before the browser-side browse-depth counter resets. Default: 1800.
Retail Ecommerce Events 0 Send view_item, view_item_list, select_item, add_to_cart, remove_from_cart, view_cart and begin_checkout to GA4 and Google Ads dynamic remarketing (PrestaShop 1.7 and later). Cart changes are recorded on the server, so quantity changes on every cart and checkout page count, and are sent from the visitor's browser under their consent.
Ecommerce Item ID auto Item ID sent with every ecommerce event, including purchases. It must equal the Merchant Center offer ID for Google Ads to match the feed. Automatic follows the feed published by Google Merchant (mprgooglemerchant); without it, the product and combination ID is used.
Ecommerce Item ID Prefix empty Prefix of the Merchant Center offer IDs, for example dme-r1- when the Google Merchant feed publishes its products under a new identity. It applies to every ecommerce event: retail events, product engagement and purchases. Stored per shop: a shop sends one prefix, so every advertised feed of the shop must use the same prefix (mixed prefixes within a shop are not supported). Lowercase letters, digits and hyphens, at most 32 characters, starting with a letter and ending with a hyphen; the part before the final hyphen must contain a letter. Leave empty for plain product IDs. Change it only once Google Ads advertises the prefixed offers. A purchase queued for server-side sending keeps the item IDs in force when it was queued.
Production Hostnames empty Comma-separated live hostnames, e.g. example.com, www.example.com. When set, the Google tag loads only on these hostnames and server-side GA4, Google Ads and Customer Match uploads run only on a shop whose domain is listed, so a staging copy with the live configuration sends nothing to Google. Leave empty when the shop has no staging copy.
Retry Failed Server Purchases 1 Use MPR Cron to retry failed GA4 Measurement Protocol purchase sends until Google accepts the event.
Retry Batch Size 20 Maximum queued purchase events to retry per cron run.
Maximum Retry Attempts 0 0 means retry indefinitely until Google accepts the event. Use a positive number to abandon after that many attempts.
Google Ads Conversion ID empty Google Ads ID, for example AW-123456789.
Google Ads Purchase Label empty Purchase conversion label from Google Ads. It must identify the same conversion action configured for server upload so transaction_id deduplication is valid.
Google Ads Purchase Conversion 1 Send dynamic purchase conversion events with order value, currency, transaction_id and new_customer.
Enhanced Conversions 0 Send SHA256-hashed first-party order data before the Google Ads purchase conversion for better attribution.
Queue Google Ads Click Conversions 1 Store eligible orders with gclid, gbraid or wbraid so they can be uploaded through the Google Ads API later.
Upload Google Ads Click Conversions 0 Send queued order conversions through the API. Browser Ads is suppressed only for an active real-upload row using the current conversion action mapping; validate-only and terminal rows never suppress it.
Server-side Upload Without the Browser Tag 0 Run the purchase upload (click capture, consent record, queue and cron worker) while Google tracking in the browser is switched off, because another tag (for example Google Tag Manager) reports the purchase in the browser. The upload must target that tag's conversion action, and an allowed shop domain is required.
Upload Transaction ID order_reference Must be the transaction_id the browser tag sends for the same purchase, or Google counts the purchase twice. Order reference is the value this module's own tag sends.
Uploaded Purchases paid Must match the purchases the browser tag reports. Placed: every storefront order at checkout, whatever the payment method, except payment errors and cancellations (a confirmation-page tag); back-office orders are never uploaded.
Upload Purchases Without a Click ID 0 Also upload purchases that carry no gclid, gbraid or wbraid, matched only by the buyer's hashed email and phone (needs Enhanced Conversions). Only with ad_storage and ad_user_data granted. Data Manager transport only.
Upload Delay (minutes) 0 Wait this long after the order before the first upload so the browser tag reaches Google first; the cron worker then sends. 0 sends at checkout. Maximum 1440.
Allowed Upload Domain empty The production shop domain (several: separated by commas). When set, uploads run only where every shop domain is allowed and the fleet outbound-write policy allows writes, so a development, staging or restored copy holds its queue. Required for server-side upload without the browser tag.
Google Ads Upload Transport legacy Legacy uses Google Ads API UploadClickConversions. Data Manager uses datamanager.googleapis.com events:ingest with OAuth refresh-token credentials.
Google Ads API Version v24 Google Ads API version for the upload endpoint, for example v24.
Google Ads Developer Token empty Developer token from the Google Ads API Center. Test-mode tokens only work with test accounts.
Google Ads Login Customer ID empty Manager account ID without dashes. Leave empty only if the API token does not require an MCC login customer.
Google Ads Customer ID empty Target Google Ads account ID without dashes.
Data Manager Operating Account ID empty Google Ads account ID used as Data Manager operatingAccount.accountId. Leave empty to use the Google Ads Customer ID.
Google Ads Conversion Action empty Numeric conversion action ID, or full resource name customers/{customer_id}/conversionActions/{action_id}. This must be the action represented by the browser Purchase Label.
Google Ads Service Account Key Path empty Absolute path to the service account JSON key. Leave empty to reuse the GA4 service key path, or use OAuth credentials below.
Google Ads OAuth Credentials Path empty Absolute path to an OAuth JSON file with client_id, client_secret, refresh_token and optionally developer_token.
Google Ads Upload Batch Size 20 Maximum queued conversions to upload per cron run.
Google Ads Upload Max Attempts 0 0 uses the safe default of 10 attempts. Use a positive number to enter permanent failure after that many genuine upload failures; ownership deferrals do not consume this budget.
Google Ads Click Lookback Days 90 How long to retain and use gclid, gbraid or wbraid attribution before an order. Capped at 90 days.
Google Ads Validate Only 0 Validate queued uploads without recording conversions in Google Ads.
Google Ads Conversion Value total_incl_tax Controls the order value used by browser and server-side Google Ads purchase conversions.
Google Ads Ad User Data Consent UNSPECIFIED Optional consent value sent with offline click conversions.
Google Ads Customer Match Upload 0 Upload eligible consented high-intent product audiences to the configured Google Ads Customer Match user list. Secondary audience signal only; not a conversion.
Customer Match Token Eligibility Confirmed 0 Required guard for Google's April 1, 2026 Customer Match restriction: enable only when this developer token previously used Customer Match or the Data Manager API fallback is not required.
Customer Match User List Resource empty Full Google Ads user list resource name, for example customers/1234567890/userLists/987654321.
Customer Match Lookback Days 30 How long consented product-intent events remain eligible for audience upload. Recent purchasers in this window are excluded. Default: 30.
Customer Match Batch Size 5000 Maximum queued Customer Match audience members to upload per cron run. Default: 5000.

For Google Tag Gateway, the Google tag ID is derived from configuration rather than a fixed string. Configure the measurement path, CF Zone ID and CF API Token before using Enable Tag Gateway. Use Disable Tag Gateway to undo that integration through the available action. Do not confuse the gateway controls with purchase-event credentials.

Test a paid test order and compare the browser event, queued server event and upload result. Check transaction IDs and tracking ownership to avoid duplicate events. Purchase uploads, retries and Customer Match are separate jobs with separate credentials and switches. Google Ads Validate Only can validate the configured upload request without treating that as a real submitted conversion.

Schedule jobs and verify the storefront

Use the token shown by your shared MPR cron administration. The suite's root cron entry point supports:

* * * * * php /var/www/html/modules/mprseorevolution/cron.php --token=YOUR_TOKEN --max-tasks=20 --max-seconds=55 --context=cron

Replace the path and token. This runner processes shared MPR tasks, not only SEO tasks. Supported CLI arguments include --token, --max-tasks, --max-seconds, --context and --task for one module task. Review the registered schedule and returned result before adding more scheduler entries.

Jobs cover the configured sitemap, crawler, backlink, internal-link audit, Search Console, indexing and conversion queues. Tasks skip their work when their feature is disabled or SEO enforcement is inactive, so check each queue's own results to see what was sent.

Verify one product, category, CMS page, brand and supplier in each required language/shop. Inspect title, description, H1, canonical, robots, alternate links, Open Graph/Twitter output and JSON-LD. Test a redirect and a missing page. Check the sitemap index, child files, root robots file and any generated LLM files. Confirm visible internal links point to published pages. Use public uncached responses as well as your normal page cache.

If output is absent, check the module master switch, SEO Features, shop context, ownership, shared-package readiness, template integration and page cache. If files or jobs are skipped, read their status and enforcement state. If an external submission fails, inspect the relevant credentials, property/account selection and queue message. Re-run Tools > Integrity Check after fixing infrastructure problems.

Uninstall

Export or back up metadata, redirects, policies, SEO records, tracking queues, credentials configuration, generated files and root-file backups. Remove your scheduler entry if no other MPR module needs it.

The uninstall routine first restores owned route rules, then removes suite tasks, schema, menus and its unretained configuration. Shared sitemap tables remain when mprsitemapbuilder is installed; shared-package settings can also be retained for other owners. Do not assume uninstall restores every root file or deletes every generated artifact. Review robots.txt, sitemap/LLM files, theme patches and public URLs afterward, using the backups when you need restoration.

Verify native metadata and any replacement SEO/tracking owner before returning the shop to normal operation. Preserve the exported redirect data if old inbound links still need a destination.

Compatibility

Requires PrestaShop 1.6.0.0 or later and PHP 7.1 or later.

Questions

2

How is Smart SEO Revolution Suite different from separate SEO modules?

SEO Revolution groups these tools in one back-office dashboard:

  • Metadata templates for supported page types.
  • Sitemaps, robots.txt and canonicals.
  • Structured data, social tags and hreflang.
  • Redirects and 404 monitoring.
  • Image SEO, internal linking and SEO scoring.

Configure one owner for each output when using overlapping modules.

Can I use your SEO Revolution Suite instead of buying individual SEO modules?

Yes, when its features cover your needs. Smart SEO Revolution Suite includes sitemap, structured-data, canonical and internal-linking tools in one module. Compare the required features and takeover settings before removing standalone modules.

Known Issues

42

Entity pickers start with unintended selections

ResolvedUpdated:
Fixed in: 2.33.1
Administration entity selectors could start with selections that the merchant had not made.

Anonymous attribution loses consent refusals

ResolvedUpdated:
Fixed in: 2.33.1
Anonymous tracking could interfere with page caching or fail to preserve a visitor's refusal of consent.

Sitemap and language links ignore rendered noindex

ResolvedUpdated:
Fixed in: 2.33.1
Sitemap and language alternative output could disagree with the final noindex decision rendered by a page.

Robots file publication remains inconsistent after changes

ResolvedUpdated:
Fixed in: 2.33.1
Robots rule changes could be incompletely saved or published after a failed read.

Internal link audits exceed their runtime or miss targets

ResolvedUpdated:
Fixed in: 2.33.1
Scheduled internal link audits could exceed their time budget or repeatedly revisit some targets while missing others.

Search URLs are redirected or receive conflicting robots instructions

ResolvedUpdated:
Fixed in: 2.33.1
Search-owned pages could be redirected by the SEO suite or publish inconsistent robots instructions.

Conversion and page inventory screens fail on PrestaShop 9

ResolvedUpdated:
Fixed in: 2.33.1
The conversion ledger and page inventory could fail to load on PrestaShop 9.

Purchase reporting counts the same order twice

ResolvedUpdated:
Fixed in: 2.28.33
Browser and server-side purchase reporting could count the same order more than once.

Code examples break structured data

ResolvedUpdated:
Fixed in: 2.28.33
Code examples in content could produce invalid structured data.

Advertising click information is lost during redirects

ResolvedUpdated:
Fixed in: 2.28.33
Advertising click identifiers could be removed before a redirect, losing conversion attribution.

Contact page is silently omitted from the sitemap

ResolvedUpdated:
Fixed in: 2.28.33
Sitemap generation could omit the contact page without reporting the exclusion.

Security hardening

ResolvedUpdated:
Fixed in: 2.28.33
Security hardening.

Valid internal links are marked inactive

ResolvedUpdated:
Fixed in: 2.28.33
The internal link audit could deactivate live links after incorrectly treating them as orphaned.

Sitemap publication exposes an incomplete set

ResolvedUpdated:
Fixed in: 2.28.33
Sitemap generation from the administration and scheduled jobs could publish an incomplete set of files.

SEO overrides do not take effect immediately

ResolvedUpdated:
Fixed in: 2.28.33
Saved SEO policy overrides could be ignored because earlier values remained cached.

Error pages can be marked indexable

ResolvedUpdated:
Fixed in: 2.28.33
Pages returning 404 or 410 could incorrectly publish an indexable robots decision.

Indexing signals disagree across page outputs

ResolvedUpdated:
Fixed in: 2.29.1
Robots instructions, language alternatives and sitemap inclusion could disagree about whether the same page was indexable.

Nested product photo links cannot be opened

ResolvedUpdated:
Fixed in: 2.29.1
Individual photo links could fail when product addresses included a nested category path.

Product offer markup reports inaccurate data

ResolvedUpdated:
Fixed in: 2.29.1
Structured offer data could report inaccurate prices, tax or availability.

Module background requests are redirected

ResolvedUpdated:
Fixed in: 2.29.1
Module background requests could receive address-normalization redirects instead of their expected response.

Sitemap generation is abandoned while still progressing

ResolvedUpdated:
Fixed in: 2.29.1
A long-running sitemap generation could be treated as stalled solely because of its age.

Indexing submissions use incorrect non-secure addresses

ResolvedUpdated:
Fixed in: 2.28.33
Scheduled indexing submissions could use an incorrect non-secure URL instead of the canonical secure address.

SEO dashboard fails on PrestaShop 9

ResolvedUpdated:
Fixed in: 2.3.48
The SEO dashboard could display a blank page or an error on PrestaShop 9.

Fresh module installation fails

ResolvedUpdated:
Fixed in: 2.3.48
A fresh installation could fail before the module administration became usable.

Sitemap generation can stall or replace working files too early

ResolvedUpdated:
Fixed in: 2.3.48
URL verification and sitemap generation could stall or replace the published sitemap before the new set was ready.

Internal links become nested

ResolvedUpdated:
Fixed in: 2.3.48
Automatic internal linking could insert links inside existing links.

Product ratings include unrelated reviews

ResolvedUpdated:
Fixed in: 2.3.48
Product structured data could include ratings that did not belong to that product.

Noindex pages still publish language alternatives

ResolvedUpdated:
Fixed in: 2.3.48
Pages marked noindex could still publish language alternative links.

Search engine markup contains invalid review data

ResolvedUpdated:
Fixed in: 2.3.48
Product reviews and blog structured data could trigger rich result validation errors.

Module page canonical links lose their intended destination

ResolvedUpdated:
Fixed in: 2.3.48
Canonical handling could replace a canonical URL supplied by the page itself.

PrestaShop 9 missing-page visits are not recorded

ResolvedUpdated:
Fixed in: 2.3.48
Missing-page monitoring could fail to record 404 visits on PrestaShop 9.

Purchase and advertising delivery queues are unreliable

ResolvedUpdated:
Fixed in: 2.3.48
Failed purchase reporting or advertising conversion deliveries could fail to retry reliably.

Analytics failures block checkout

ResolvedUpdated:
Fixed in: 2.3.52
An analytics hook failure could interrupt checkout.

Sitemaps omit homepage language alternatives

ResolvedUpdated:
Fixed in: 2.3.52
The XML sitemap could omit language alternatives for homepages.

Legacy sitemap settings and links are not migrated correctly

ResolvedUpdated:
Fixed in: 2.3.52
Older sitemap settings and aliases could remain inconsistent after an update.

Internal link groups fail to resolve selected targets

ResolvedUpdated:
Fixed in: 2.3.52
Selected entity targets in internal link groups could fail to resolve to their destination pages.

Search engines cannot read module noindex instructions

ResolvedUpdated:
Fixed in: 2.3.52
Module pages marked noindex could be blocked from crawling before search engines could read the instruction.

Category pages enter redirect loops

ResolvedUpdated:
Fixed in: 2.28.33
A redirect targeting the current canonical address could repeatedly redirect category pages.

Storefront pages fail during tracking preparation

ResolvedUpdated:
Fixed in: 2.28.33
Storefront pages could fail to render while tracking details were prepared.

Structured data errors blank the page

ResolvedUpdated:
Fixed in: 2.28.33
An error while generating structured data could interrupt the entire storefront page.

Rich snippet schema shows wrong price for products with specific prices

ResolvedUpdated:
Fixed in: 2.31.0

The JSON-LD Product schema outputs the base catalog price instead of the discounted price when specific price rules apply. Google shows the wrong price in search results.

Resolution note

Now uses Product::getPriceStatic() with reductions applied.

301 redirect loop when source and target URLs differ only by trailing slash

ResolvedUpdated:
Fixed in: 2.3.1

Creating a redirect from /old-product to /old-product/ causes an infinite redirect loop because the module treats them as different URLs but the web server normalizes them.

Resolution note

Added trailing slash normalization before redirect matching.

Feature Requests

39

Implemented

Central SEO policy override matrix

Implemented
The module’s SEO Policy Overrides page sets index/noindex rules by module and page type for the selected shop. It applies to modules that declare compatible SEO policies.

Google Ads offline conversion uploads

Implemented
Eligible purchase conversions are queued and uploaded to Google Ads from the shop server. Uploads follow the configured conversion settings and recorded advertising consent.

Readable shop addresses

Implemented
Manage readable addresses for shop content and product variants.

Canonical URL management

Implemented
Manage canonical URLs across shop page types.

Language alternative links

Implemented
Publish language alternatives for shop and compatible module pages.

Structured data for products and content

Implemented
Publish structured data for products, product variants, listings, blog posts and documentation.

Social sharing metadata

Implemented
Publish social sharing metadata for shop pages and blog articles.

Language-specific XML sitemaps

Implemented
Generate separate XML sitemaps by language with URL verification.

Internal linking and link audit

Implemented
Manage internal linking and audit rendered links for problems.

Redirect chain cleanup

Implemented
Detect redirect chains and flatten them to reduce unnecessary redirect steps.

Search Console reporting

Implemented
Connect Search Console and review search data in the administration.

GA4 dashboard reporting

Implemented
Connect GA4 reporting to the SEO dashboard.

Central page inventory

Implemented
Review discovered shop URLs together with sitemap and Search Console information.

Central SEO policy controls

Implemented
Set page-type defaults and per-page policy overrides from one administration.

SEO recovery reporting

Implemented
Review URL groups and monitor loss of search indexing with language-specific information.

Category SEO audit

Implemented
Run a category SEO audit to identify page issues.

Durable indexing queue

Implemented
Queue changed content for Google and Bing indexing submission with tracked delivery.

Configurable indexing priorities

Implemented
Set indexing priority by page type and override it for individual pages.

Scheduled backlink checks

Implemented
Schedule checks of backlinks and review their status.

Service product structured data

Implemented
Publish Service structured data for configured service product categories.

Product subtitles

Implemented
Manage and display product subtitles through the SEO suite.

Product gallery photo links

Implemented
Enable readable links to individual product gallery photos while consolidating their canonical URL.

Expanded product gallery markup

Implemented
Include up to 30 product gallery images in product structured data.

First-party Google tagging

Implemented
Configure Google Tag Gateway for first-party GA4 and advertising tagging.

Google Tag Gateway setup

Implemented
Provision Google Tag Gateway through the supported Cloudflare integration.

Advertising audience uploads

Implemented
Build Google Customer Match audience uploads from high-intent product interactions.

Conversion delivery ledger

Implemented
Review order value, attribution and server-side conversion delivery status in the administration.

Localized internal links

Implemented
Resolve internal links in the language of the page, with configurable alternate shop domains.

Google Ads conversion delivery options

Implemented
Use refreshed Google authorization and the Data Manager delivery option for offline conversions.

Scheduled indexing windows

Implemented
Schedule when a page becomes indexable and when it returns to noindex.

Image alternative-text management

Implemented
Manage image alternative text within the SEO suite.

Redirect CSV import

Implemented
Import redirect rules from a CSV file.

Content lifecycle redirects

Implemented
Manage redirects related to content lifecycle changes.

Retail ecommerce tracking

Implemented
Send retail ecommerce events to GA4 and advertising remarketing.

Module-page sitemap switch

Implemented
Choose whether pages supplied by other modules are included in XML sitemaps.

Products and homepages indexing scope

Implemented
Optionally limit indexing submissions to product pages and homepages while retaining other queued content.

Updates from the back office

Implemented
Check for and install module updates from the back office.

Multilingual administration

Implemented
Use the module administration in French, German, Spanish, Italian and Polish.

Metadata and image text generation

Implemented
Generate page metadata and image alternative text.

Changelog

v2.3.552026-05-27

  • AddedAdd internal link audit
  • AddedFinalize SEO technical controller cleanup
  • AddedAdd enhanced Ads conversion identifiers
  • AddedAdd Google Ads offline conversion upload
  • AddedFull-page internal linking via hookActionOutputHTMLBefore
  • Addedcomplete FR/DE/ES/IT/PL translations
  • ImprovedReplace GA4 SDK client
  • ImprovedDelay listing page google tracking
  • ImprovedCache SEO header output
  • FixedEscape 404 monitor tilde probe pattern
  • FixedExpose noindex on listing query variants
  • FixedIgnore post form actions in link audit
  • FixedComplete seo revolution release surface
Older releases

v1.0.02026-05-04

  • Initialrelease: complete SEO suite for PrestaShop
  • InitialMeta template engine, hreflang tags, XML sitemaps, 301/302 redirect manager
  • InitialCompatible with PS 1.7.x and PS 8.x

v2.1.02026-04-20

  • AddedUse shop name slug instead of numeric ID in sitemap filenames
  • AddedAdd softwareHelp schema linking product to documentation page
  • AddedSplit sitemaps by language — one XML file per shop+language
  • AddedUse PreviewBadge for source/target columns
  • AddedLicense management tab with key management and renewal options
  • Addedself-healing integrity checks for automatic diagnostics and repair
  • Addedcomplete FR/DE/ES/IT/PL translations
  • ImprovedUse DashboardChartWidget from prestashop-admin package
  • ImprovedMatch exact dashtrends DOM structure for visitor widget
  • Improvedadmin list columns with visual badge indicators and multiselect filters
  • FixedMove sitemap output from module dir to /sitemaps/ in web root
  • FixedGenerate friendly URLs for search SEO pages in sitemap
  • FixedRespect controller-provided canonical in fixModuleControllerCanonical
  • Fixedvarious stability and compatibility improvements (24 fixes total)
  • Fixedadmin list filters — sorting, searching, and filtering now work correctly on all columns

v2.0.02026-01-27

  • AddedPS 9 / Hummingbird theme compatibility
  • AddedAI-assisted meta-description generation using configurable prompt templates
  • Addedvisual redirect manager with import/export CSV support
  • Improvedhreflang generation: supports x-default tag and region variants
  • Optimized XML sitemap generation — streaming output for catalogues with 500k+ URLs
  • Fixedcanonical URL conflict with native PS canonical on PS 8.1+

v1.2.02025-08-19

  • Addednoindex/nofollow per-page override panel
  • AddedSchema.org meta-template engine for product and category pages
  • Improvedmeta-title and description template tokens: {name}, {category}, {brand}, {price}

v1.1.02025-05-26

  • Addedbulk meta-title and description editor with live preview
  • Addedrobots.txt editor with syntax validation
  • Fixedhreflang tags duplicating on multistore with shared domain

Demo

Test the full module before you buy

Buy a licence later and keep your settings.

  • Your 30-day demo Test it on your own shop for 30 days from the first install.
  • Ready demo shop Explore a ready demo shop in your browser.
  • No registration No account, email or store domain needed.
Launch demo shop

By downloading, you accept the demo terms and privacy policy.

By opening this demo you accept the demo terms and the privacy policy.

Loading...
Back to top