Sales Revolution: setup and help
Quick start
- Upload and install mprsalesrevolution.zip in Module Manager.
- Click Configure, then open Sales Revolution > Configuration in the intended shop.
- Review Enable Cross-Selling, VAT settings and the default-off custom numbering options.
- Create an active Product Pair with Source Product and Target Product.
- Test a cart or modal hook that uses manual recommendations.
- Configure the module cron token and runner before enabling automated campaigns.
- Verify storefront blocks, actual cart prices and the Dashboard/Analytics records in a test session.
Requires PrestaShop 1.6.1 or later and PHP 7.1 or later.
Setup manual
Install and check the available screens
- Upload and install
mprsalesrevolution.zipthrough Modules > Module Manager. - Click Configure. You reach Sales Revolution > Dashboard.
- Select your intended shop context and open Sales Revolution > Configuration.
- Review recommendations, campaign, VAT and numbering settings before using the storefront.
- Start with one product pair and test a theme placement that consumes pairs, such as the cart/modal recommendation block.
- Configure the cron runner before relying on campaign automation.
- Verify displayed products, actual cart prices and analytics with a test customer session.
The module provides Dashboard, Product Pairs, Recommendation Rules, Bundle Offers, Campaigns, Dynamic Discounts, Campaign Scheduler, Analytics, Configuration and System Check pages. License, Support and Update pages are also provided.
Some settings on these screens are saved but have no effect in the current version; the tables below say which ones.
Configure recommendation output
Open Sales Revolution > Configuration. Click Save after changing fields.
Features and Display
| Setting | Default | Current use |
|---|---|---|
| Enable Cross-Selling | On | Controls recommendation rendering. Turn off to suppress those blocks. |
| Enable Campaigns | On | Controls campaign/deal output and campaign automation. Turning it off does not remove existing catalog discounts. |
| Modal Cross-Sell | On | Enables the add-to-cart modal recommendation block. |
| Sliding Cart Recommendations | On | Enables the cart recommendation renderer. |
| Column Slider | On | Enables the supported sidebar/column block. |
| Sliding Cart Limit | 8 |
Limits cart recommendations. The renderer caps it at 8. |
| Modal Limit | 3 |
Product limit in the modal block. |
| Cross-Sell Section Limit | 4 |
Product-footer cross-sell limit. |
| Column Slider Limit | 6 |
Sidebar recommendation limit. |
| Show Prices | On | Used by supported recommendation renderers, including the cart block. |
| Show Add to Cart | On | Used by supported recommendation renderers. Check the actual theme cards. |
| Respect Stock | On | Applied by supported selection paths. Eligibility can also follow native backorder/purchasability rules. |
| FBT Min Orders | 1 |
Minimum co-purchase count for frequently-bought-together results. |
| FBT Lookback Period | 90 days |
History window for co-purchase recommendations and refresh. |
| Cache TTL | 3600 seconds |
Recommendation caching preference. Some placements clamp or use their own lifetime; the cart renderer clamps it to 60 to 900 seconds. |
You can find these settings across the Features, Display, Filtering and Algorithm tabs. A setting's presence does not mean every placement consumes it.
Stored fields without effect
The following fields are saved by the configuration form but do not change recommendations, display or tracking. Keep them at their defaults unless your own integration uses them.
| Setting | Default | What the form stores |
|---|---|---|
| Enable Bundles | On | Stores a bundle preference; does not apply bundle discounts. |
| Frequently Bought Together | On | Stores an algorithm preference; each placement uses its own recommendation methods. |
| Similar Products | On | Algorithm preference. |
| Recently Viewed | On | Algorithm preference. |
| Manual Rules | On | Algorithm preference. |
| Track Clicks | On | Saved, but has no effect in the current version: recommendation clicks are recorded whether it is on or off. |
| Track Conversions | On | Saved, but has no effect in the current version: orders that follow a recommendation click are recorded whether it is on or off. |
| Viewed Tracking | On | Saved, but has no effect in the current version: product views for recently viewed products are recorded whether it is on or off. |
| Product Page Limit | 4 |
General limit preference. The product-footer section uses Cross-Sell Section Limit instead. |
| Cart Page Limit | 3 |
General cart limit preference. The current cart renderer uses Sliding Cart Limit. |
| Checkout Limit | 2 |
Stored limit. No recommendations appear in the checkout summary. |
| Manual Rules Priority | On | Stored priority preference; each placement uses its own recommendation order. |
| Loading Method | Server-side (server) |
Also offers AJAX (ajax). Changing this field does not change how recommendations load. |
| Enable Carousel | On | Carousel preference. Current layouts are placement-specific. |
| Carousel Autoplay | Off | Autoplay preference. |
| Exclude Cart Items | On | Filtering preference. The cart recommender already excludes cart IDs through its options. |
| Exclude Purchased | Off | Stored filtering preference; does not exclude purchased products. |
| Respect Visibility | On | Visibility preference. Native/shared eligibility checks still apply independently. |
| Similar Price Range | 30 percent |
Stored similar-product preference; does not change the price range used for recommendations. |
| Same Category Only | On | Legacy similar-product preference. |
| Same Manufacturer | Off | Legacy similar-product preference. |
| Cache FBT Results | On | Stored cache preference; does not change caching of co-purchase recommendations. |
The actual recommendation engine can use manual pairs, co-purchases, rules, similar products, co-view data and trending data. Different placements supply different algorithm lists. The product-footer cross-sell uses similar/trending results and a fallback, so adding a manual pair does not force that particular footer section to show it.
Start with little order history
Frequently-bought-together suggestions require stored co-purchase pairs that meet FBT Min Orders and FBT Lookback Period. The scheduled rebuild can populate pairs from valid historical orders; it cannot invent purchases for a new shop.
Start with an active Product Pair and test a cart or modal placement that consumes manual pairs. The product-footer cross-sell uses similar/trending results. If it has no usable product IDs, it tries other active products from the source product's default category in the current shop, with a shop cover image. If no usable cards remain, it returns no block. This fallback is specific to that placement and does not guarantee every recommendation block will be populated.
Create pairs, rules and bundle records
Product Pairs
Open Sales Revolution > Product Pairs and add a record. Select Source Product and Target Product. Choose Pair Type: cross-sell, upsell, accessory or bundle. The model defaults to cross-sell, Bidirectional off, Priority 0 and Active on.
Enable Bidirectional to create the relationship in both directions. Higher priority pairs are selected first in the pair path. Save and test a placement that consumes manual pairs. A pair type of bundle is a recommendation relationship, not proof of a bundle checkout discount.
Recommendation Rules
Open Recommendation Rules. Set Name, optional Description, Rule Type, Priority, Products Limit and Active. Use Product Conditions to choose source products, categories or manufacturers, with optional Min Price and Max Price. Use Recommendation Filters to choose the suggested set and its price range.
For example, target source categories 12 and 18, with prices from 50 to 200, and recommend products from manufacturer 4. The saved JSON keeps source filters under conditions, target filters under recommendations, and price bounds under _price_min and _price_max.
Rules affect recommendation paths that include the rules algorithm. They do not replace the explicitly selected similar/trending algorithm in every product section.
Bundle Offers
Open Bundle Offers to maintain Name, Active, Bundle Products, Discount Type, Discount Value, Minimum Quantity, Max Total Uses, Max Uses Per Customer, Start Date and End Date. The model defaults to a percentage discount, value 0, and provides bundle-price/usage calculations.
The current version stores bundles and shows a preview in the back office, but does not sell them in the storefront: no bundle button is shown and no bundle discount is applied in the cart. Do not advertise a bundle discount based on a saved bundle.
Create campaigns and limited deals
Open Sales Revolution > Campaigns. Enter Campaign Name, choose Campaign Type, Discount Type, Discount Value, Priority, Active, Stackable, Target Products, Start Date and End Date.
Supported campaign types are flash sale, scheduled, recurring, countdown, early bird, last chance and limited deal. Discount types are percent, amount and fixed price. The model defaults to scheduled, percent, discount 0, priority 0, active on and stackable off.
Select target products, categories or manufacturers explicitly. Campaigns use the selected included items; exclusions and selections covering all items are not applied.
Saving a manual campaign stores its record, scope and deal display data, but it does not change product prices. Real catalog discounts (native specific prices) are created only by Dynamic Discounts and Campaign Scheduler. Check the product and cart price before you publish a promotion.
Limited-deal fields
For a limited deal, configure:
| Field | Default | Use |
|---|---|---|
| Quantity Limit | 0 in the campaign model |
Promotion quantity cap. Set a positive cap when you need one. |
| Show Progress Bar | On | Show progress in supported widgets. |
| Progress Style | bar |
Choose the available progress presentation. |
| Display Mode | single_cell |
Stored deal layout choice. |
| Grid Columns Span | 1 |
Stored grid layout choice. |
| Grid Position | 4 |
Stored position; does not place deals in category or search grids. |
| Carousel Speed | 5000 ms |
Per-campaign display value. |
| Category Pages | On | Stored placement preference; deals are not shown in category grids. |
| Search Results | On | Stored placement preference; deals are not shown in search grids. |
| Product Pages | Off | Enable for supported product deal placements. |
| Homepage | Off | Enable for the homepage deal block. |
| Footer | Off | Stored flag. The general footer carousel is recommendations, not a deal placement. |
For example, create a limited deal with a 15 percent discount, positive quantity limit 100, valid dates, and turn on Product Pages and Homepage. Confirm the actual price and both widgets separately.
Simulated Velocity
Simulated Velocity defaults off in manual campaign forms. It stores phantom units separately from real sold units. Available controls include Velocity Mode (default steady), Phantom Units (0), Drain Duration (24 hours), Min Interval (300 seconds), Max Interval (3600 seconds) and Acceleration Factor (0.80).
If you configure phantom units, progress is not solely a count of purchased units. Review that presentation deliberately. The example of 10 phantom units over 24 hours is a simulated-progress configuration, not real sales history.
Configure automation and cron
Dynamic Discounts
Open Sales Revolution > Dynamic Discounts for the automatic promo rotator. New rotators are inactive. Set Rotator Name, optional Promotion Name, target pool, discount bounds, quantity and duration before activating.
The form defaults are percent discount, Min Discount 10, Max Discount 50, Quantity Limit 3, Duration (hours) 24, Auto-drain (phantom units) on, Drain Rate (hours per unit) 8, Velocity Mode steady, Cooldown (hours) 72, Max Concurrent Deals 1, Product Cooldown (days) 14, and Min Price/Max Price 0.
Review auto-drain explicitly before activation. A new rotator can simulate claimed units. Configure its trigger and product pool, then verify the generated campaign and native specific prices.
Campaign Scheduler
Open Campaign Scheduler. Configure Name, Active, Loop Mode, Loop Count or Loop Until, and Campaign Name Template. New scheduler records are inactive and pending; the default loop mode is infinite.
Build the Phase Sequence with a category, subcategory choice, product count, discount type/value, duration, optional sales threshold and reroll rules for each phase. Review Display Settings and Status & History. Start only after checking the phases and cron runner. The scheduler creates real campaigns and synchronizes native prices.
Run the scheduler
The module provides a token-authenticated entry point. Use the module cron token from the back-office cron panel:
php modules/mprsalesrevolution/cron.php --token=YOUR_TOKEN --max-tasks=20 --max-seconds=55 --context=cron
https://example.com/modules/mprsalesrevolution/cron.php?token=YOUR_TOKEN&max-tasks=20&max-seconds=55&context=cron
The shared task metadata includes:
| Task | Schedule |
|---|---|
| Detect Abandoned Carts | Every 900 seconds |
| Send Abandoned Cart Reminders | Every 900 seconds, cron context |
| Expire Old Abandoned Carts | Daily at 04:00 |
| Activate/Deactivate Scheduled Campaigns | Every 300 seconds |
| Refresh Frequently Bought Together | Daily at 03:30 |
| Drain Simulated Velocity Units | Every 60 seconds |
| Process Auto Promo Rotator | Every 900 seconds |
| Process Themed Campaign Scheduler | Every 300 seconds |
Check each task result separately: the overall success of the HTTP response does not mean every task completed. Turning off Enable Campaigns stops new campaigns and rotations; it does not remove discounts already created on products, so check their specific prices.
Configure VAT and document numbering
VAT / B2B Tax
| Setting | Default | Use |
|---|---|---|
| Validate EU VAT Numbers | On | Validate saved addresses through the VIES integration. |
| Enable B2B Reverse Charge | On | Enable the module's zero-tax manager for addresses classified as eligible. |
| Block Invalid VAT | On | Reject address validation when VAT is confirmed invalid. |
| Block When VIES Is Unavailable | Off | Turn on only if you intend service unavailability to block those address submissions. |
| VAT Cache Duration | 720 hours |
Cache VIES validation results. |
| Seller Country ISO | Empty | Two-letter seller country; empty falls back to the shop country. |
Test address saving and actual tax calculation with your shop configuration before using these defaults. VIES availability and the shared validation package affect the result.
Order & Invoice Numbering
| Setting | Default | Use |
|---|---|---|
| Custom Order References | Off | Enable generated order references. |
| Order Reference Format | {YYYY}/{MM}/{NNNNNN} |
Reference pattern with a required counter and reset discriminator. |
| Order Prefix | Empty | Static prefix. |
| Order Suffix | Empty | Static suffix. |
| Order Counter Scope | Global | Global or Per customer. |
| Order Counter Reset | Yearly | Never, Yearly, Monthly or Daily. |
| Next Order Number | Empty | One-time next counter value, cleared after use. |
| Custom Invoice Numbers | Off | Format display numbers while retaining native numeric invoice storage. |
| Invoice Number Format | {DOC_TYPE}/{YYYY}/{NNNNNN} |
Invoice display pattern. |
| Invoice Abbreviation | INV |
Value for {DOC_TYPE}. |
| Invoice Counter Reset | Yearly | Counter reset period. |
| Next Invoice Number | Empty | One-time next invoice counter value. |
Supported token families include date parts {YYYY}, {YY}, {MM}, {DD}; primary counter {N} with padding such as {NNNNNN}; global and customer counters such as {GLOBAL_N} and {CUSTOMER_N}; and contextual values such as {CUSTOMER_REF}, {PRODUCT_REF}, {SHOP_ID}, {SHOP_NAME}, {CART_ID} and {COUNTRY} where available in that generation context. {DOC_TYPE} is for document formats, not order references. Order generation also refuses {ORDER_ID}, {INVOICE_ID} and {PAYMENT}.
Keep a counter and enough scope/date information for the selected reset mode. The settings validator can reject formats that would cause collisions. Test a new order and invoice before wider use.
Check theme placements, styling and analytics
| Hook | Current placement |
|---|---|
displayFooterProduct |
Product footer blocks. |
displayProductExtraContent |
Product extra content where supported. |
displayMprProductPairings |
Contextual pairings. |
displayCartAjaxInfoBlock |
Cart/drawer recommendations. |
displayShoppingCartFooter |
Delegates to the cart recommendation renderer. |
displayCartModalFooter |
Add-to-cart modal recommendations. |
displayBlogSidebar |
Column slider. |
displayProductAdditionalInfo, displayReassurance |
Product deal placement. |
displayHome |
Homepage deal block. |
displayBanner |
Countdown bar. |
displayFooterBefore |
Modern-theme recommendation carousel. |
displayFooter |
PrestaShop below 1.7 footer fallback. |
Your theme must call the hook. Recommendations are not shown in the checkout summary or order confirmation, and deals are not inserted into category or search grids. The footer carousel shows recommendations rather than limited deals.
Default English headings include More From This Category, Complete your cart, Works Great Together and Recommended Products. Default titles are available in French, German, Spanish, Italian and Polish. The configuration form does not provide fields for editing these four titles.
Use Theme styles to refresh detected values, clear custom values and edit the shared styling controls. For theme CSS, existing classes include .mpr-product-crosssell, .mpr-product-crosssell__grid, .mpr-cart-recommendations, .mpr-cart-recommendations__slide, .mpr-deal-widget, .mpr-deal-progress, .mpr-countdown-bar and .mpr-countdown-bar__discount.
Check Dashboard and Analytics after clicking a recommendation and placing a test order. A conversion is recorded only when the order follows a recommendation click. Frequently-bought-together results need enough order history. Cached fragments reduce repeat work on later page views.
Troubleshoot and uninstall
If a block is absent, check its working feature switch, theme hook, eligible products, images, stock/access rules and relevant campaign dates. Do not expect manual pairs in a placement that uses only similar/trending results.
If a campaign widget shows but prices do not change, look at the product's specific prices. A manually saved campaign does not create them; only Dynamic Discounts and Campaign Scheduler do. Check cron task results for stalled schedules. For overlapping promotions, test the cart price; the global stacking settings do not control it.
If VAT-address saving fails during VIES downtime, check Block When VIES Is Unavailable. If numbering settings are rejected, correct the required counter, reset discriminator or unsupported token before saving. Use System Check for module tables and infrastructure.
Before uninstalling, stop rotators/schedulers, end promotions and verify that generated native specific prices have been cleaned up while the module is still available. Turning off campaign rendering alone does not remove native discount rows. Back up module data and numbering records you need to retain.
Disable the module in Module Manager to stop its hooks. Uninstall removes module tables, cron registration, menu and theme integration. Generated catalog discounts remain after their module links are removed, so review catalog prices afterward. Uninstall does not reverse orders or already issued document references.
Compatibility
Requires PrestaShop 1.6.1 or later and PHP 7.1 or later.
Reference screenshots




Questions
No questions about this module yet
Ask anything about installation, compatibility or setup. Answers appear here.
Known Issues
29
Keyboard focus is lost when recommendation cards load
Deal widget appears twice
Sales settings dropdowns have no options
Short back-office labels remain untranslated
Added product and cart summary disappear in short windows
Module labels remain untranslated
Recovered abandoned carts are not recorded correctly
Missing recommendation images have an invalid placeholder
Pairing type labels use the wrong language
Sales widgets do not follow the shop theme colours
Sales settings do not open on PrestaShop 9.1
Footer recommendations stay stale after visitor changes
Disabled campaigns continue background processing
Module installation adds the product page integration twice
Footer carousel prevents page rendering
Listing recommendations disappear after cache clears
Temporary recommendation failure leaves an empty footer
Recommendation grid layout breaks on Warehouse
Incorrect recommendation prices without a customer session
Sales widgets fail with asset combining
Security hardening
Recommendations ignore the shop out-of-stock policy
Promotion names use the wrong language
Recently viewed products miss visits to cached pages
Invalid numbering settings can be saved
Invoice PDF downloads use inconsistent filenames
Cart drawer recommendations do not refresh
Product cross-sell recommendations can be empty
Flash sale discount not applied to products already in cart
Products added to cart before a flash sale starts don't receive the discount when the sale activates. The cart price is cached and not recalculated when new cart rules become active.
Resolution note
Added cache invalidation hook on cart rule activation.
Feature Requests
13
Implemented
Product recommendations in theme cart drawers
Custom order and invoice numbering
Campaign scheduling
Social posting for rotating promotions
Cart recommendations
Recently viewed carousel
Promotion name and claimed progress in countdowns
Week number in promotion names
One-click module updates
Works Well With product pairings
Product similarity recommendations
Contextual content pairings
Promotion price history integration
Changelog
v1.12.162026-05-27
- AddedExpose explicit scoped sales counters
- AddedAbsorb document numbering into sales revolution
- AddedBackfill cart recommendation signals
- AddedAdd theme-native cart recommendations
- Addedcomplete FR/DE/ES/IT/PL translations
- ImprovedAvoid front-office metadata translation
- ImprovedAdd file-based cache to displayFooterBefore and displayBlogSidebar hooks
- FixedUse shared config storage for sales settings
- FixedMigrate stale seller country overrides
- FixedHarden product cross-sell fallback rendering
- FixedShip installable sales release artifact
Older releases
v1.3.02026-04-20
- AddedSync-render recently-viewed carousel, drop unused VARS_CSS_*
- AddedClient-authoritative "Recently Viewed" carousel — no AJAX on non-product pages
- AddedTranslate all hook template strings for FR/DE/ES/IT/PL
- Addedautomatic theme detection for Classic and Hummingbird style compatibility
- Addedadmin menu management via MenuInstaller for streamlined module setup
- 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
- Improvedadmin list columns with visual badge indicators and multiselect filters
- Improvedsettings form organization with tabbed layout
- FixedKill flash-of-fallback in recently-viewed carousel + widen trending fallback
- FixedTrack recently-viewed via AJAX so CF-cached product pages record views
- FixedFooter carousel — recently-viewed lookup matches writer key + white bg breakout
- Fixedvarious stability and compatibility improvements (8 fixes total)
- Fixedadmin list filters — sorting, searching, and filtering now work correctly on all columns
v1.0.02026-03-25
- Initialrelease: comprehensive sales optimisation suite for PrestaShop
- InitialCross-selling and upselling recommendation widgets
- InitialCampaign manager with scheduling and customer-segment targeting
- InitialAbandoned-cart recovery email automation
- InitialCompatible with PS 1.7.x and PS 8.x
v1.2.02026-01-16
- AddedPS 9 / Hummingbird theme compatibility
- Addedcampaign targeting by customer lifetime value segment
- Improveddynamic pricing engine — rule evaluation now 40% faster via indexed cache
- Optimized abandoned-cart recovery emails with product-image rendering fix for Gmail
- Fixedcross-sell carousel not displaying on combination product pages
v1.1.02025-04-14
- Addedupsell modal triggered on add-to-cart with configurable delay
- Addedbundle pricing — automatic discount when complementary products purchased together
- Improvedrecommendation engine — collaborative filtering using purchase co-occurrence
- Fixedcart-recovery email unsubscribe link for multi-shop configurations
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.