SEO Revolution: setup and help
Quick start
- Back up the database, URL rules and root SEO files, then upload and install mprseorevolution.
- Open SEO Revolution > Dashboard, select the intended shop and run Tools > Integrity Check.
- Open Global Settings and check Enable SEO Revolution and SEO Features; review ownership before enabling overlapping output.
- Use Content > Meta Tags and entity templates to configure one test page, then inspect its title, description and H1.
- Configure shared Hreflang, Canonical Rules and Content > Structured Data only for the output you intend to use.
- Configure Technical SEO > Sitemap and Robots.txt; check publication/enforcement status and inspect the resulting URLs.
- 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 nonofollowis 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 nonoopeneris 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:sitetag. 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 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
Anonymous attribution loses consent refusals
Sitemap and language links ignore rendered noindex
Robots file publication remains inconsistent after changes
Internal link audits exceed their runtime or miss targets
Search URLs are redirected or receive conflicting robots instructions
Conversion and page inventory screens fail on PrestaShop 9
Purchase reporting counts the same order twice
Code examples break structured data
Advertising click information is lost during redirects
Contact page is silently omitted from the sitemap
Security hardening
Valid internal links are marked inactive
Sitemap publication exposes an incomplete set
SEO overrides do not take effect immediately
Error pages can be marked indexable
Indexing signals disagree across page outputs
Nested product photo links cannot be opened
Product offer markup reports inaccurate data
Module background requests are redirected
Sitemap generation is abandoned while still progressing
Indexing submissions use incorrect non-secure addresses
SEO dashboard fails on PrestaShop 9
Fresh module installation fails
Sitemap generation can stall or replace working files too early
Internal links become nested
Product ratings include unrelated reviews
Noindex pages still publish language alternatives
Search engine markup contains invalid review data
Module page canonical links lose their intended destination
PrestaShop 9 missing-page visits are not recorded
Purchase and advertising delivery queues are unreliable
Analytics failures block checkout
Sitemaps omit homepage language alternatives
Legacy sitemap settings and links are not migrated correctly
Internal link groups fail to resolve selected targets
Search engines cannot read module noindex instructions
Category pages enter redirect loops
Storefront pages fail during tracking preparation
Structured data errors blank the page
Rich snippet schema shows wrong price for products with specific prices
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
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
Google Ads offline conversion uploads
Readable shop addresses
Canonical URL management
Language alternative links
Structured data for products and content
Social sharing metadata
Language-specific XML sitemaps
Internal linking and link audit
Redirect chain cleanup
Search Console reporting
GA4 dashboard reporting
Central page inventory
Central SEO policy controls
SEO recovery reporting
Category SEO audit
Durable indexing queue
Configurable indexing priorities
Scheduled backlink checks
Service product structured data
Product subtitles
Product gallery photo links
Expanded product gallery markup
First-party Google tagging
Google Tag Gateway setup
Advertising audience uploads
Conversion delivery ledger
Localized internal links
Google Ads conversion delivery options
Scheduled indexing windows
Image alternative-text management
Redirect CSV import
Content lifecycle redirects
Retail ecommerce tracking
Module-page sitemap switch
Products and homepages indexing scope
Updates from the back office
Multilingual administration
Metadata and image text generation
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.
By downloading, you accept the demo terms and privacy policy.
By opening this demo you accept the demo terms and the privacy policy.