Everything you'd want to know before you install.
A detailed look at how DataFirefly Cross-Sell — Related Products Carousel with Upsell & Analytics for PrestaShop 8 works, why we built it the way we did, and the thinking behind the features above.
Why PrestaShop's native cross-sell isn't enough
PrestaShop 8's built-in cross-sell block (displayCrossSellingShoppingCart hook) shows 4 random products from the same category as items already in cart. That's it. No weighting, no learning, no bundle, no analytics — you don't even know if anyone clicks. On a store doing $10K monthly revenue, an intelligent cross-sell at 8% CTR with 5% conversion represents several hundred dollars of additional AOV per month. The native block leaves that money on the table because it suggests products with no commercial logic. DataFirefly Cross-Sell replaces this block with a truly steerable engine.
7 strategies, stacked scores, you stay in control
The engine exposes 7 recommendation strategies you enable or disable with a weight from 0 (disabled) to 10 (top priority): native PrestaShop accessories, frequently bought together (calculated from validated order history), same category, same manufacturer, best-sellers over the period, new products, and similar price range (with a configurable percentage, 30% by default). For each candidate product, the engine adds up the weights of strategies it appears in: a product showing up as both an accessory (weight 10) AND frequently bought (weight 9) AND same category (weight 7) gets a score of 26 and ranks ahead of a product appearing in only one strategy. It's simple, readable, debuggable logic — without any opaque 'AI' producing recommendations you can't explain.
The 'frequently bought together' bundle that learns on its own
On every validated order, the module records pairs of products bought together in a dedicated table (dfccs_bought_together) with a frequency counter. The more orders you have, the more relevant the index becomes. When a customer has a product in their cart that appears in frequent pairs (minimum threshold: 3 occurrences), the module displays a separate bundle block with the 4 most-often co-purchased products and an automatic discount (percentage or fixed amount, configurable). The customer adds the entire bundle to cart in one click — promo code applied automatically. It's the Amazon 'Frequently bought together' mechanic at home, with no external algorithm and no data sent elsewhere.
Analytics that show what actually works
The module tracks four events for each recommended product: impression (the product was displayed in the carousel), click (the customer clicked the card), add_to_cart (the customer added from the carousel), purchase (the recommended product made it into a validated order). Over 30 days, the admin dashboard calculates CTR (clicks / impressions) and add-to-cart rate — globally and per strategy. Concretely: you see whether 'best-sellers' outperforms 'same category' on your store, and you adjust weights accordingly. Data is retained for 90 days by default (configurable), and a 'Clean' button empties the table in one click. No external dependency: your data stays with you.
Performant carousel, AJAX, no dependencies
The carousel is coded in pure HTML/CSS/JS, with no Slick, Swiper or other third-party library that would add 50 to 100 kB to load. Optional image lazy loading, configurable autoplay with speed in milliseconds, navigation via arrows and dots, optional loop. Products per view separated between desktop (4 by default) and mobile (2 by default). The 'Add to cart' button works via AJAX — no page reload, the customer stays on the cart. Analytics events also fire via AJAX, outside the LCP critical path. On Lighthouse, the impact remains negligible even with 12 displayed products.
Multi-store, multilingual, multi-theme
All tables include an id_shop column: analytics, bought_together, bundle, bundle_product. Each store in a multi-shop network has its own recommendations, its own learning, its own analytics — something competing cross-sell modules often miss. The carousel and bundle titles are translatable in all active languages, with FR/EN/DE/ES/IT pre-filled by default. The module is compatible with the Classic theme and the Hummingbird theme, and the 3 positioning hooks (displayShoppingCartFooter, displayShoppingCart, displayCrossSellingShoppingCart) let it integrate even into custom themes where one of these hooks would have been removed.
3-minute setup, zero-risk deployment
Once installed, the module works immediately with its default configuration (all strategies enabled with proven weights, bundle enabled at 10% discount, analytics enabled). You test on your store, check analytics after 7 days, adjust weights if needed. If you uninstall the module, all tables and configuration are cleanly removed (no trace in database). Unencrypted PHP source code, clean DfCartCrossSell namespace, compliant with PrestaShop 8 standards.
There are no reviews yet.