A first-time visitor and a customer making their tenth purchase need very different things from your store — one needs reassurance the package will actually arrive, the other needs a reason to keep coming back. A wholesale buyer pricing a pallet has nothing in common with a retail shopper buying a single unit. Yet most PrestaShop stores show all of them the identical front page, the same prices, and the same blast of "20% off everything" email. Customer segmentation is the discipline of grouping customers by what they have in common and then treating each group as if you noticed. The good news for PrestaShop owners: a lot of the machinery to do this is already sitting in your back office, unused.
This guide is specifically about acting on segments inside PrestaShop — which customers to split out, and the exact back-office tools (Customer Groups, Cart Rules, SQL Manager, segment-specific carrier and payment rules) that let you treat them differently. It is not about how to find your segments mathematically: if you want to score customers by recency, frequency and spend, that is RFM analysis, and it is the natural first step before you build the groups below.
Segmentation is not favouritism — it is relevance
The instinct that stops merchants segmenting is a fair one: it feels like playing favourites. It isn't. Segmentation doesn't mean some customers get a worse store; it means each customer gets the version of your store that fits where they are in the relationship. A new buyer gets reassurance and onboarding. A loyal buyer gets early access and a thank-you instead of a generic discount they'd have got anyway. A dormant buyer gets a reason to look again. Same store, different doors. So what does that buy you? Higher email open rates because the message is actually relevant, fewer margin-destroying discounts handed to people who would have bought at full price, and a clear, defensible reason behind every promotion you run — instead of "discount everything and hope."
The segments worth building first
You do not need a dozen segments. Most PrestaShop stores get the bulk of the benefit from four or five, defined by purchase behaviour rather than guesswork:
| Segment | Rough definition | What they actually need | The mistake to avoid |
|---|---|---|---|
| New (first order) | 1 completed order, recent | Reassurance, onboarding, a reason to make order #2 | Selling them harder before they trust you |
| Returning | 2–5 orders | Effortless repeat buying, discovery of products they haven't seen | Treating them like strangers every time |
| Loyal / VIP | 6+ orders or high lifetime value | Appreciation, early access, status — not constant discounting | Giving them the same coupon a first-timer gets |
| At-risk / dormant | No order in 90–180 days | A genuine reason to come back before they're gone | Waiting until they've already churned |
| Wholesale / B2B | Bulk quantities, tax-exempt, trade buyers | Tiered pricing, net-of-VAT display, minimum orders | Showing them retail prices and consumer UX |
Notice these overlap with lifecycle stages on purpose. The loyal-vs-at-risk split in particular is where the money is — keeping an existing customer is far cheaper than acquiring a new one, which is the whole argument for measuring customer lifetime value and for taking retention seriously once the first order lands.
Customer Groups: PrestaShop's built-in segmentation engine
The foundation is already in your back office under Shop Parameters → Customer Settings → Groups (in PrestaShop 1.6 it lived under Customers → Groups). Every install ships with three default groups — Visitor, Guest and Customer — and the PS_CUSTOMER_GROUP setting controls which one new registrations land in. You create your own groups (VIP, Wholesale, At-risk) right there with Add new group.
A group is far more than a label. Per group you can set:
- A price-display rule — show prices tax-included or tax-excluded. This single setting is what makes a clean B2B experience possible: your Wholesale group sees net prices, your retail Customer group sees gross, on the same catalogue.
- A category-wide discount — a standing percentage off chosen categories for everyone in the group, applied automatically with no coupon code. This is how a loyal group gets a permanent edge without you lifting a finger each month.
- Module and category visibility — under Authorized groups on a category, and per-module hook permissions. You can hide entire categories (a trade-only range, an early-access drop) from everyone except one group.
A customer can belong to several groups at once, with one marked as their default group (which decides the price display they see). You assign membership manually on each customer's profile in Customers, and the underlying link lives in the prefixed customer_group table, usually ps_customer_group — useful to know when you want to move people in bulk (more on that under SQL Manager below).
Cart Rules: turning a group into an offer
A group decides who; a Cart Rule decides what they get. Under Catalog → Discounts (labelled Cart Rules in 1.6/1.7; Discounts in PrestaShop 8/9), every voucher has a Conditions tab with a Limit to a single customer field and a group restriction. Set the group, and the offer is invisible and unusable to anyone outside it.
That is the whole mechanism behind segment-specific promotions, and it covers the realistic cases without any add-on:
- Loyal-only reward — a Cart Rule limited to your VIP group, optionally auto-applied (leave the Code field blank so the rule applies automatically to every eligible cart) so they never have to hunt for a code. The separate Highlight tickbox doesn't auto-apply anything; it just surfaces the voucher as a suggestion on the cart and checkout.
- Win-back for dormant buyers — a single-use, time-limited Cart Rule restricted to your At-risk group, sent in a re-engagement email. Set a real expiry date so it creates urgency and doesn't leak.
- First-order nudge — a small voucher limited to the new-customer group to convert order #1 into order #2.
- Free shipping by segment — Cart Rules can grant free shipping rather than a percentage, which often feels more generous to the customer for less margin cost than a discount.
Two settings save you grief here: Total available and Total available for each user on the Conditions tab cap how many times a rule can be redeemed, and the Priority field controls the order in which rules are applied — to stop several rules from stacking unintentionally, use the compatibility settings, usage limits and restrictions, not Priority alone. Set these deliberately, or a "loyal only" reward quietly becomes "everyone who shares the code."
SQL Manager: building behavioural segments PrestaShop can't see by default
Groups and Cart Rules are powerful, but they don't automatically know who spent the most or who went quiet — you have to put people into the right group first. PrestaShop has no built-in "auto-tag my best customers" button, so the honest path is to query the data and assign groups from the answer. The tool for this ships with the platform: Advanced Parameters → Database → SQL Manager, which runs read queries against your live database and exports the result to CSV.
A query like the following surfaces your highest-spending customers in a given window (adjust the prefix ps_ to match your install and the table/date as needed):
SELECT c.id_customer, c.email, COUNT(o.id_order) AS orders, SUM(o.total_paid_real) AS spent, MAX(o.date_add) AS last_order FROM ps_customer c JOIN ps_orders o ON o.id_customer = c.id_customer WHERE o.valid = 1 GROUP BY c.id_customer ORDER BY spent DESC;
Swap the ORDER BY for last_order ASC and you have your dormant list — the people whose most recent valid order is oldest. From that CSV you assign the customers to your VIP or At-risk groups, and from then on every group-restricted Cart Rule and price rule above applies to them automatically. This is exactly the recency/frequency/spend logic that RFM analysis formalises — SQL Manager is simply where you run it without a data degree.
SQL Manager only reads; it will not write groups back for you. If running queries and re-importing groups every month sounds like a chore you'll abandon by February, that's the honest reason to reach for reporting tooling that keeps the segments current for you. Our Financial Revolution module surfaces order, customer and revenue breakdowns from the same data without writing SQL by hand, so the "who's loyal, who's slipping away" view stays in front of you instead of being a query you keep meaning to re-run. So what? The segment work stops being a one-off spreadsheet and becomes a standing part of how you run the shop.
Email is where segmentation pays off fastest
The single highest-return use of segments is email, because relevance is the entire game there. The same offer sent to "everyone" gets ignored; sent to the right segment it gets opened. New customers get a "here's how to get the most from your first order" message; loyal customers get genuine early access; at-risk customers get the win-back voucher you built above. If you use PrestaShop's newsletter or customer export — or a dedicated newsletter module — the customer-group structure feeds straight into whatever sending tool you use, so the segments you defined here become the lists you actually mail. Just check the export carries the right consent fields, since which subscription and consent data you get depends on your PrestaShop version and installed modules, and only properly opted-in contacts should be mailed. The mechanics of building those flows — welcome series, win-back sequences, timing — sit in the retention strategy playbook rather than here.
Segmentation beyond marketing
Once you've drawn the lines, they pay off in places that aren't promotions:
- Catalogue and merchandising. Look at what your loyal group actually buys and make sure those lines are always in stock and easy to find. Group-restricted category access lets you run a genuine "VIP early access" drop using only the built-in Authorized groups setting — no add-on.
- Shipping and payment. Carriers in PrestaShop can be restricted by group (a carrier's Group access tab), and so can payment modules under Payment → Preferences. That's how you offer net-30 or a freight carrier to wholesale buyers only, while retail customers never see options that don't apply to them.
- Support. A long-standing customer with a problem is worth more patience than a first-timer testing the limits of your return policy — not unfairness, just recognising that an established relationship has value worth protecting. This is the practical side of why support quality matters.
- Post-purchase flow. Someone on their sixth order does not need the "how to navigate our store" email a first-timer gets. Skipping it signals you're paying attention — the broader post-purchase experience is the place to design that fork properly.
Start with two groups, not twelve
The failure mode of segmentation is over-engineering it — twenty groups, nobody maintains them, the whole thing rots. Don't. Create one VIP group and one At-risk group, populate them with two SQL Manager queries, attach a single Cart Rule to each, and run it for a quarter. That alone — recognising your best customers and catching your slipping ones before they're gone — captures most of the available upside. Refine when you've learned which segments respond to which offers. The goal isn't perfect segmentation; it's progressively better targeting, built on tools you already own, that makes each customer feel like you noticed them.
Comments
No comments yet. Be the first!
Be the first to ask a question or share useful feedback.
Leave a comment
Share a question, an installation detail, or feedback that could help another reader.