Affinsy for PrestaShop

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

01 · How it works

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.

Rule · #4 of 200Moderate
Salvia 'Caradonna' → Lavandula 'Hidcote'
Support
10.4%
Confidence
67%
Lift
2.9×
Revenue through the pair$84.6k
01 · Support
Support

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.

Rule · #4 of 200Moderate
Salvia 'Caradonna' → Lavandula 'Hidcote'
Support
10.4%
Confidence
67%
Lift
2.9×
Revenue through the pair$84.6k
02 · Confidence
Confidence

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.

Rule · #4 of 200Moderate
Salvia 'Caradonna' → Lavandula 'Hidcote'
Support
10.4%
Confidence
67%
Lift
2.9×
Revenue through the pair$84.6k
03 · Lift
Lift

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.

Numbers from the live sample report →

Beyond the same basket,what else the report sees.

01 · Adaptive support
Rules with evidence behind them

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.

02 · Purchase order
What customers buy first

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.

03 · Replenishment
Products bought on a cycle

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.

Affinsy report — replenishment table: 64 products with a repeat cadence, each with its reorder cycle and range, consistency meter, repeat rate, buyers, reorders and estimated revenue, with totals for buyers before, in, and past their reorder window
In window
$4.6M
665 buyers due to reorder right now
02 · Getting data in

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.

Export line items with SQL Manager
CSV export
  1. In the back office, open Advanced Parameters, then Database, then SQL Manager. Create a new query and paste the one below.
  2. Replace the ps_ prefix if your shop uses a different one (it is set at install time and shown on the same Database screen).
  3. 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.
Line-item export with Shopify column names
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;
valid = 1 keeps orders PrestaShop counts as paid and drops cancelled or abandoned ones. Product names in order_detail carry the combination ("T-shirt - Size : M"), so variants show up as separate products; map Product SKU to product_reference if you want them grouped. Only Name, Created at, and the Lineitem columns are required for a first run.
Stream new orders to a webhook
Webhook
  1. Copy your signed webhook URL from the Affinsy dashboard.
  2. 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.
  3. New orders stream in automatically from then on, no scheduled export to remember.
Uses PrestaShop's own hook system, so nothing runs inside Affinsy and no back-office credentials are shared.
Push over the API
REST API
  1. Create a dataset and authenticate with your API key.
  2. POST orders to /api/v1/data/orders from your pipeline, one by one or in batches.
  3. Trigger runs and pull results over /api/v1/reports, or get a webhook when a run finishes.
Built for agencies that plug Affinsy into an existing data pipeline.Read the API docs
03 · What you get

Two reports and a plan,from one order history.

Affinsy report — executive summary revenue waterfall: captured revenue, winnable cross-sell, replenishment due, total potential
On the table
$3.5M
+25% on captured revenue
01 · Market Basket Analysis
What sells together

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.

02 · RFM Segmentation
Who your customers are

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.

03 · Test backlog
What to do about it

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.

Browse the live sample report →Segment exports come as formatted CSVs ready for Klaviyo, Omnisend, MailerLite, Mailchimp, HubSpot.
For agencies

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.

5 team seats10 client datasetsDaily scheduled reruns
See how agencies use Affinsy →
04 · Playbooks

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.

01
Packs
Bundle candidates

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.

02
Accessories
Product-page recommendations

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.

03
RFM export · CSV
Email by segment

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.

04
Replenishment audience
Reorder reminders

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.

Affinsy report — ranked association rules table with tags, trend sparkline, score, lift, confidence, support, revenue through the pair and AOV delta, with substitutes and out-of-stock products hidden
Bark mulch → Compost
$619.2k
revenue behind the top rule, 1.1× lift
05 · Questions

PrestaShop specifics

Why SQL Manager instead of the Orders export?

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.

Why alias the columns to Shopify names?

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.

My tables are not called ps_orders.

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.

What is market basket analysis?

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.

Which algorithm does Affinsy use?

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.

How do I run market basket analysis on PrestaShop data?

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.

How many orders do I need for useful results?

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.

What about customer privacy?

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.

Affinsy for PrestaShop

Your next bundle is alreadyin your order history.

Export your PrestaShop orders and see the first report in minutes.