How can I create a 'loyalty scheme' where customers are awarded with 5 pence for every £ spent, to be used on furture purchases. The rewards will be saved up until the user decides to redeem them against an order.

I have looked for a few solutions but cannot seem to find a way to make this work.

Any suggestions?

3 Answers 3


This may be too much overhead for your system of point usage, but check out the Commerce Userpoints module. It integrates Commerce with the Userpoints module, which should handle most of what you're after.

  • Hi, I've managed to get the userpoint module working but there is just one thing I need help with. I only want to add userpoints on products bought and NOT Shipping, but the Userpoint module calculates everything at checkout including shipping. Any help will be greatly appreciated. Thanks Commented Mar 12, 2015 at 16:31

User Points module is the best suited for you.

However there is one Customer Loyalty and Retention Management which we developed to get Loyalty and Retention Management to next level, we offer REST APIS to integrate your system to it.

Pegke loyalty platform solution, is a robust real-time, fully customizable and scalable solution that offers security and privacy standards required and is seamless to any business.


What you're looking for is typically implemented using the User Points module (that's obvious, and already mentioned in the prior answers).

However, by ALSO using the Goals module (disclosure: I'm its maintainer) you can have the Rules module take care of granting the appropriate number of userpoints. The advantage of using the Goals module, is that you can keep track of all sorts of events that are happening asynchronously (which you cannot do by only using Rules and its events).

So with that it seems that your question (challenge) is reduced to finding a way to configure the appropriate set of Goals and related Tasks. For a basic introduction about Goals, have a look at:

Moreover, it would be straight forward to implement some special reward(s) for something like frequent buyers. Here is what it would take:

  1. Goal = "New customer", with only 1 Task = "Buy 1 product" (say with machine name = buy_product).
  2. Goal = "Silver customer", with Task = "Buy 10 products, on 10 different days, in a timeframe of 3 months".
  3. Goal = "Gold customer", with Task = "Buy 100 products, on 25 different days, in a timeframe of 12 months".

The interesting part of this is that you'd only have to write 1 rule (related to that machine name = buy_product) to keep track of the progress of any user to become a new/silver/gold customer (check the video for a similar sample).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.