Most loyalty advice you'll read is platform-agnostic: earn points, set tiers, send reminders. Useful, but it skips the part that actually decides whether a loyalty program ships or stalls — how it bolts onto PrestaShop specifically. PrestaShop has long offered an official Customer loyalty and rewards module — historically bundled, now distributed through Addons, so depending on your version it may already be installed, may need installing, or may have been superseded by a newer official or third-party replacement. When it's in play it converts points into real vouchers through the order-status system, and it has hard limits that surprise people the day they need a second earning rule. This guide is about that machinery: the official Customer loyalty and rewards module, where its settings live, how points become spendable money, where it runs out of road, and how store credit and customer groups fill the gaps. For the strategy of whether to run a points program and how generous to be, we'll point you to the right sibling rather than rehash it here.
Last updated: June 2026.
The official loyalty module — check whether you have it

PrestaShop's official module is called Customer loyalty and rewards (its technical name is loyalty). Depending on your version it may already be installed or may need adding from Addons — check Modules → Module Manager and search "loyalty"; if it isn't there, install the official module (or a maintained replacement suited to your PrestaShop version). Once enabled, a Configure button gives you the entire program on one screen. Under the hood the module persists its settings as standard configuration keys, which matters for one practical reason: the program is portable — settings travel with a database export, and nothing lives in theme files that an upgrade can clobber. The exact key and table names vary by module and version, so don't rely on a fixed list of PS_LOYALTY_* names; if you ever need to read or migrate the values directly, inspect the installed module to see which keys it actually writes.
The configuration screen is short and worth knowing line by line, because each field maps to a customer-facing behaviour:
- Ratio — how much spend earns one point and what one point is worth on redemption. This is two numbers: "1 point for every X spent" and "1 point = Y discount". Set them together; the customer never sees the raw point count as money unless you make the conversion legible (more on that below).
- Minimum amount a generated voucher must reach before a customer can spend it — stops one-cent vouchers cluttering accounts.
- Voucher category restriction — you can restrict which categories the generated voucher is spendable on ("vouchers created by the loyalty system can be used in the following categories"). Note this governs redemption, not earning; a separate toggle in the same screen is what stops points accruing on already-discounted lines.
- Voucher details — the text printed on the discount the customer redeems, and whether tax is included in the point calculation.
- Point award states — the order statuses at which points move from "pending" to "available," and the status that cancels them. This is the part most merchants miss, so it gets its own section.
How points actually become spendable money
This is where PrestaShop's loyalty model differs from the generic "points balance" mental model, and where it's genuinely clever. Points don't sit in an abstract wallet. When a customer's order reaches the status you nominated as the "validation" state, the module generates a real cart rule — a voucher — worth the cash equivalent of their accumulated points, and the customer redeems it at checkout like any other discount code. In other words, loyalty points in PrestaShop are a delayed voucher generator riding on top of the order-state machine.
The lever you control is which order statuses trigger that conversion. By default the module ties point validation to a "Payment accepted" or "Delivered"-style state, and ties cancellation to "Cancelled" / "Refunded." So what does that mean for you? If you award points the instant an order is placed, you'll mint vouchers for orders that later get cancelled or charged back, and clawing them back is awkward. If you award them only on "Delivered," points feel slow to a customer who paid two minutes ago. The honest middle ground for most stores is to validate points on "Payment accepted" and let the cancellation state automatically trim the balance — which the module does for you when an order moves to a refund status. Set this under the module's configuration, in the order-state selectors, and test it with a real order pushed through your actual status flow before you announce the program.
One consequence worth flagging: because redemption produces a standard PrestaShop cart rule, everything you already know about cart rules applies — minimum order amounts, per-customer limits, currency restrictions, and the fact that the voucher shows up in Catalog → Discounts like any other. That's reassuring for agencies: there's no parallel discount engine to reason about.
Points vs store credit — and why PrestaShop blurs the line
The current post's instinct is right — "you have €7.50 to spend" motivates more than "you have 750 points." PrestaShop gives you two distinct mechanisms here, and they're not interchangeable:
| Loyalty points (loyalty module) | Store credit / vouchers | |
|---|---|---|
| What it is | Earned automatically on qualifying orders; converted to a voucher on order validation | A discount/credit you grant directly — manually, on a refund, or via a cart rule |
| Where it lives | The installed loyalty module stores point history in its own tables and typically redeems through a generated voucher/cart rule | Catalog → Discounts (cart rules); refund credit on the customer record |
| Customer sees | A points balance in their account's "My loyalty points" page | A cash-value voucher code, or credit auto-applied at checkout |
| Best for | Automatic earn-on-spend that scales without you touching each order | Refunds-as-credit, one-off goodwill, "spend €5 thanks for waiting" |
| Limit to know | One earning ratio, store-wide; no native tiers or bonus-point rules | Manual unless you build cart-rule automation; can sprawl if ungoverned |
PrestaShop's refund workflow can also hand value back as credit rather than cash — depending on your version and the refund options shown, processing a partial or full refund can generate a credit slip or a voucher the customer spends next time instead of a card refund that walks out the door. The exact wording and toggles differ between back-office versions, so verify what the refund screen on your target shop actually offers; where it's available it's a retention tool hiding inside the refund process, and most stores ignore it. If you want the psychological "money not points" framing the current advice recommends, the cleanest route is to keep the points ratio simple and always display the converted cash value in your account templates — show "€7.50 in rewards" next to the point count, not instead of it.
Building tiers PrestaShop can actually enforce
Here's an honest limit: the native loyalty module has one earning ratio. There is no Bronze/Silver/Gold inside the loyalty module, no "1.5x points for Silver," no per-tier thresholds. If you want tiers, you build them with the tool PrestaShop does give you natively — customer groups (Customers → Groups).
A customer group in PrestaShop carries its own price display, its own catalog-level discount (a flat percentage reduction across categories), and can gate which carriers, payment methods and category content a customer sees. So a workable tier system looks like this:
- Bronze — the default group every registered customer lands in. Earns standard loyalty points. No group discount.
- Silver — a group with a small catalog discount and access to a free-shipping carrier rule. Customers who pass a spend threshold get moved here.
- Gold — a larger group discount, an always-free-shipping rule, and early access to a "new products" category restricted to that group.
The catch PrestaShop won't solve for you: moving customers between groups isn't automatic in core. You either promote them by hand (fine for a few VIPs), or you use a module that watches lifetime spend and reassigns the group. This is exactly the line where the native tooling stops and a purpose-built module earns its place — automatic group promotion based on rolling spend, plus the dashboard to see who sits where, is exactly what our Loyalty + Credit Revolution module does — it watches lifetime spend and reassigns the group for you, adds the bonus-point campaigns and store-credit handling the native module lacks, and keeps the data and automation inside your own back office rather than syncing customer spend out to a third party. Whichever route you choose, decide the strategy first — how many tiers, how generous — and we've made the case for keeping that deliberately small and honest in loyalty programs for small stores.
Where the native module runs out — and what to add
The native loyalty module is genuinely good at one thing: automatic earn-on-spend that converts to vouchers without you babysitting orders. It does not do, out of the box:
- Bonus-point campaigns — "double points this weekend," "extra points on this category for a week." You'd have to change the global ratio and remember to change it back.
- Points for non-purchase actions — reviews, account creation, birthdays, social shares. The core module only counts spend.
- Tier logic — covered above; that's customer groups plus glue.
- Expiry with reminders — vouchers can carry an expiry date, but the "your points expire in 30 days" nudge email isn't part of the loyalty module.
Two of those gaps are really email problems, and they belong to siblings, not here. The expiry nudge and the "you've earned a reward, come spend it" prompt are classic lifecycle emails — set them up the same way you'd build any automated sequence, covered in post-purchase emails, and reach for a marketing-automation platform like Klaviyo if you want triggers wired into the flow. Klaviyo's PrestaShop integration syncs customer and order data out of the box, but point-balance and tier-status triggers aren't automatic — they only work if those fields/events are actually synced, which usually means confirming the integration carries them or adding custom integration work to push them. The "win back the customer whose points are about to lapse" angle is its own discipline — see win-back emails.
Rewarding non-purchase behaviour, and turning loyal customers into a referral channel, is a different system entirely — don't try to bend loyalty points into it. That's covered properly in referral programs for PrestaShop.
Making the program visible inside PrestaShop
A loyalty program nobody sees is wasted database rows. PrestaShop gives you specific surfaces to make it visible, and they're worth wiring up deliberately rather than hoping the customer finds the account page:
- The account hub. The loyalty module adds a "My loyalty points" link in the customer account (via
displayCustomerAccount) (My account block). Confirm it actually renders in your theme — custom themes sometimes drop module-injected account links. - The order confirmation page. "You earned X points with this order" belongs on the order-confirmation controller, where attention is highest. This is theme-template territory (the order-confirmation hook), so an agency can place it precisely.
- The cart / checkout. "You'll earn X points" near the total, and "You have €Y in rewards — apply now" when a voucher is available. Anything that touches the checkout step deserves care, because the checkout is the most expensive page in the store to break.
- Email. Every touch above also has an email equivalent, and email is the channel that does the heavy lifting for retention — the reasoning is in email marketing for online stores.
Measuring whether it's paying for itself
A loyalty program is a discount you're choosing to give, so treat it like an investment, not a feature. Don't judge it on three weeks of data. Before launch, record a baseline; after launch, compare the same numbers over a meaningful window — at least a full purchase cycle for your category, which for most stores means months, not days:
- Repeat-purchase rate — the number the program exists to move. Members should reorder more than they did before.
- Member vs non-member AOV and frequency — PrestaShop's customer group filtering makes this segmentable if your tiers map to groups.
- Redemption rate — if nobody redeems, the reward is too distant or too quiet; if everyone redeems instantly, you're just discounting. The voucher list under Catalog → Discounts shows generated-vs-used at a glance.
- Customer lifetime value — the only metric that ultimately settles whether the discounts paid off.
How generous to be, where the margin line sits, and which discount mechanics actually change behaviour rather than just costing you money — that's a strategy question we answer in discount strategies that actually work. Here, the PrestaShop-specific takeaway is narrower and more useful: you already have a competent loyalty engine in core, it works by minting vouchers off your order statuses, its one real blind spot is tiers (which you solve with customer groups) and campaign flexibility (which you solve with a module or your email tool). Set the order-state triggers correctly, show the cash value not just the points, and measure over a real purchase cycle — and the program stops being a footer link nobody clicks and starts being a reason customers come back to your store instead of shopping around.
(Disclosure: Loyalty + Credit Revolution linked above is a module we build and sell; Klaviyo Integration is also ours.)
Frequently asked questions
Does PrestaShop have a built-in loyalty program?
Yes — the official Customer loyalty and rewards module (technical name loyalty), historically bundled and now distributed through Addons. Depending on your version it may already be installed, may need adding, or may have been superseded. Check Modules → Module Manager and search "loyalty." When it's in play it's genuinely competent at one thing: automatic earn-on-spend that converts to vouchers without you babysitting orders.
How do loyalty points become money the customer can spend?
Points don't sit in an abstract wallet. When an order reaches the order status you nominated as the validation state, the module generates a real cart rule — a voucher worth the cash equivalent of the accumulated points — and the customer redeems it at checkout like any discount code. In effect, PrestaShop loyalty points are a delayed voucher generator riding on the order-state machine, which is why the voucher then behaves like any other cart rule (minimum amounts, per-customer limits, visible under Catalog → Discounts).
Which order status should validate points?
For most stores, validate on "Payment accepted" and let the cancellation/refund state trim the balance automatically. Award points the instant an order is placed and you'll mint vouchers for orders that later cancel or charge back; wait until "Delivered" and points feel slow to a customer who paid two minutes ago. Set this in the module's order-state selectors and test it with a real order pushed through your actual status flow before announcing the program.
Can the native loyalty module do Bronze/Silver/Gold tiers?
No — it has exactly one earning ratio, store-wide, with no per-tier thresholds or bonus rules. You build tiers with customer groups (Customers → Groups), each carrying its own catalog discount, carrier and category access. The catch is that core won't move customers between groups automatically based on spend; that's where a purpose-built module that watches lifetime spend and reassigns the group earns its place.
Should I show points or cash value to customers?
Cash value — "€7.50 in rewards" motivates more than "750 points." The cleanest route is to keep the points ratio simple and always display the converted cash value in your account templates, shown next to the point count rather than instead of it. Surface it where attention is highest too: the "My loyalty points" account page (via displayCustomerAccount), the order-confirmation page, and near the cart total.
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.