Market basket analysis for PrestaShop orders, turned into a test backlog.
PrestaShop's SQL Manager can export your orders straight from the back office. Run one query, save the CSV, drop it into Affinsy, and get the products your customers buy together, segments by purchase behavior, and ranked experiments to run. No module to install.
7-day free trial · First report in minutes
What market basket analysis finds inPrestaShop order data.
Market basket analysis is a data mining technique that reads every order in your PrestaShop store and finds the products that land in the same basket more often than chance would predict. The output is a list of association rules: if a customer buys product A, how likely they are to also buy product B, and how much more likely than a random shopper. Every rule is ranked by revenue impact rather than statistical lift alone, and arrives with the hypothesis it supports.
How often the pair appears together across all orders. Salvia 'Caradonna' and Lavandula 'Hidcote' share a basket in 10.4% of the sample store's orders, so the rule rests on hundreds of real transactions rather than a handful.
How often the second product follows the first. 67% of baskets holding the Salvia also hold the Lavandula, which decides whether a product-page recommendation lands.
How much more likely the pair is than chance. A lift of 2.9 means customers who buy the Salvia are almost three times as likely to buy the Lavandula as a random customer. Above 1 is a real association; below 1 is a pair of substitutes that cannibalise each other.
Beyond the same basket,what else the report sees.
The minimum-support floor adapts to your order count, between 0.3% and 5%, so a 2,000-order store and a 200,000-order store both get rules that hold up. Substitute pairs and out-of-stock products are filtered out of the ranked list by default, because a bundle built on two products that replace each other loses money.
Same-basket rules cannot tell you which product opens the relationship. Purchase order looks across a customer's later orders and reports which product tends to come first, so you know what to lead with in ads and on the homepage.
Consumables come back on a rhythm the basket view never shows. In the sample store, pine bark mulch is reordered every 129 days on average by 278 repeat buyers: a reorder reminder waiting to be scheduled, with the audience already built.

How your PrestaShop data gets in
The Orders screen exports one row per order, but Market Basket Analysis needs one row per product in each order. PrestaShop's built-in SQL Manager gets you there without touching the server: export with Shopify's column names, and Affinsy reads the file as a native Shopify order export.
- In the back office, open Advanced Parameters, then Database, then SQL Manager. Create a new query and paste the one below.
- Replace the ps_ prefix if your shop uses a different one (it is set at install time and shown on the same Database screen).
- Save the query and click Export. Upload the CSV to Affinsy as-is: the column names are Shopify's, so the layout is detected and mapped automatically.
SELECT
o.reference AS `Name`,
c.email AS `Email`,
osl.name AS `Financial Status`,
cur.iso_code AS `Currency`,
o.total_products AS `Subtotal`,
o.total_shipping_tax_incl AS `Shipping`,
o.total_paid_tax_incl - o.total_paid_tax_excl AS `Taxes`,
o.total_paid_tax_incl AS `Total`,
d.product_quantity AS `Lineitem quantity`,
d.product_name AS `Lineitem name`,
d.unit_price_tax_incl AS `Lineitem price`,
d.product_reference AS `Lineitem sku`,
o.date_add AS `Created at`
FROM ps_orders o
JOIN ps_order_detail d ON d.id_order = o.id_order
LEFT JOIN ps_customer c ON c.id_customer = o.id_customer
LEFT JOIN ps_currency cur ON cur.id_currency = o.id_currency
LEFT JOIN ps_order_state_lang osl
ON osl.id_order_state = o.current_state
AND osl.id_lang = o.id_lang
WHERE o.valid = 1
ORDER BY o.id_order, d.id_order_detail;- Copy your signed webhook URL from the Affinsy dashboard.
- Have your module listen on actionValidateOrder and POST the new order to that URL, or wire it through an HTTP request step in n8n, Zapier, or Make.
- New orders stream in automatically from then on, no scheduled export to remember.
- Create a dataset and authenticate with your API key.
- POST orders to /api/v1/data/orders from your pipeline, one by one or in batches.
- Trigger runs and pull results over /api/v1/reports, or get a webhook when a run finishes.
Two reports and a plan,from one order history.

Association rules over your real orders: which products pull each other into the cart, how often, and what each pairing is worth. Ranked by revenue impact, not just statistical lift.
Every customer scored on recency, frequency, and monetary value, then grouped into segments like Champions, Loyal, At risk, and Hibernating, each with counts and revenue share. Acquisition cohorts show which months' new customers came back and what they are worth.
Each finding comes with a hypothesis you can act on: the bundle to offer, the segment to target, the cross-sell to test, ranked so you know where to start.
Running PrestaShop stores for clients?
One workspace, one dataset per client, on a flat $299/month for up to 10 client datasets. Schedule reruns on your cadence and walk into every QBR with a fresh, statistically backed test backlog instead of rebuilding spreadsheets the night before.
What to do with the ruleson PrestaShop.
The report ends in a ranked test backlog. These are the four places its findings usually go on a PrestaShop store.
Take the top rules by revenue with lift above 1.5 and enough support behind them, and build them as packs in PrestaShop. Start with pairs the substitute filter has already cleared.
PrestaShop's accessories field on each product sheet is the recommendation slot: set the highest-confidence consequent there, so the product customers actually add is the one on display.
Export any RFM segment as a CSV with Klaviyo, Omnisend, or MailerLite headers and send it its own offer: win-back for At risk, early access for Champions, a second-order nudge for new customers. The rules tell you which product to put in the email.
For products on a replenishment cycle, schedule a reminder just before the observed gap. Affinsy builds the audience of customers due in that window, so the email reaches people who are about to run out rather than everyone who ever bought.

PrestaShop specifics
The export button on the Orders screen writes one row per order with no product detail, and Market Basket Analysis needs one row per product in each order. SQL Manager is a stock PrestaShop feature that runs SELECT queries from the back office and exports the result as CSV, so you get line-item data without database access or a module.
Affinsy already recognizes Shopify's order export layout and maps it automatically. By exporting your PrestaShop data with the same column headers (Name, Email, Lineitem name, and so on), you skip manual column matching. It is a labeling convenience, not a Shopify dependency.
PrestaShop lets you pick the table prefix at install time, and many hosts randomize it. Check the prefix on the Database screen next to SQL Manager and replace ps_ throughout the query. Everything else stays the same across PrestaShop 1.6, 1.7, and 8.
A data mining technique that finds products bought together more often than chance would predict. It works on transaction data you already have: one row per product per order. Affinsy runs it on your PrestaShop order export and reports each pairing with its support, confidence, lift, and the revenue flowing through it.
Association rule mining with a minimum-support floor that adapts to your order count for same-basket rules, and PrefixSpan for the purchase-order sequences across a customer's later orders. You never set thresholds by hand; a re-run dialog is there if you want to override them.
Export your orders, upload the file, and start the analysis; the first report is ready in minutes. The result is a ranked list of association rules with the revenue behind each one, plus RFM segments and a test backlog built from the same order history. No spreadsheet formulas, no Python.
RFM segmentation works from your first upload. Market Basket Analysis gets stronger with more co-purchase history: the more orders you include, the more reliable the bought-together rules become, so export the widest date range you can.
Affinsy only needs a stable per-customer identifier for segmentation. You can use a customer number or a hashed email instead of a raw address if you prefer to keep PII out. If you plan to export segments to an email tool later, keep real email addresses in the data.
Your next bundle is alreadyin your order history.
Export your PrestaShop orders and see the first report in minutes.
Order data from: Affinsy for Shopify · Affinsy for WooCommerce · Affinsy for Shoper · Affinsy for Haravan · Affinsy for Shopee · Affinsy for Magento
Segments out to: Affinsy for Klaviyo · Affinsy for MailerLite · Affinsy for Omnisend
