User Experience Stack Exchange is a question and answer site for user experience researchers and experts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

A friend asked me to make a loyalty card app for their store, so that the customer gets something for free for every n-th purchase.

What is the best way to do this that can not be faked by the customer?

  • The customer scans a QR code in the store with his phone?
  • The clerk scans a QR code on the customers's phone with a web camera?
  • Other ways?

The point is that it must be very easy (ie. a good user experience) for the customers to do this.

Suggestions that add something fun to the experience would be interesting too, like taking a photograph of the clerk and a wall calendar in the background, just to pull a wild idea.

share|improve this question
If you search for "qr code generator", you get back a lot of results. A user who is serious about getting fake purchase credits will have no trouble doing so. From a UX perspective, this is a sound choice. If your concern is with security, you're probably better off talking to someone with a security background. – cimmanon Oct 10 '13 at 19:31
No, security is not a high priority, though it shouldn't be dead easy to fake a purchase. Second, I'm not asking specifically for a QR solution. I'm asking how the purpose (counting purchases) can be done in general? In a fun way, if possible. – forthrin Oct 10 '13 at 20:12
You still have to have something you can reasonably be able to program. QR or bar codes make sense because they are easy to generate, decode, and validate. A picture of a clerk and a calendar? Not so easy to validate. – cimmanon Oct 10 '13 at 20:23
Why the arbitrary choice of an app, when the simple Card-and-ten-stamps systems would work perfectly well - and does so for several famous coffee chains? – RedSirius Nov 18 '13 at 16:01
I've seen this done with a QR code on a stand kept below the counter. You had to ask for the code, and the clerk was responsible for not letting you scan unless you bought something. – Yamikuronue Nov 18 '13 at 19:35

There's no need to over-engineer a loyalty system - there is a really cheap and simple app for loyalty bonuses at every n-th purchase:

Card and ink!

enter image description here

A simple web search for 'Loyalty Stamps' will give you a wide choice of stamps to choose from. The main benefit of keeping is simple is that you avoid ALL of the downsides of trying to use technology (development costs, bugs, exclusion of customers without smartphones, to name but a few).

share|improve this answer
This is by far the best solution unless you are planning on taking full advantage of digital technology (i.e., tracking user purchases and data mining them to offer personalized rewards, etc.) – Joshua Barron Nov 18 '13 at 16:42

A QR code or an EAN bar code or something similar is fine, but in order to provide validation so it can't be faked, you need some server-side processing which links the user to his purchase.

The rest of this answer is out of scope in terms of UX, but here goes anyway...

The till receipt generates a QR code which contains data like the till receipt number. The app adds the phone identity and contacts the store server (via a web URL, perhaps). The store's server validates the till receipt (valid number which has been issued and not uploaded before) and stores the customer's purchase using the phone identity to identify the customer.

When the customer claims his free gift, use the server-side records to validate that he's entitled to it.

The crucial part for security is that nothing is left in the control of the user. Everything is on the store's servers. The only part which the user has any control over is whether he scans the code on the right phone, or at all.

A standard store loyalty-card scheme which is handled by the checkout clerk does the same thing: the customer hands over his card and the record of his purchases is held by the store along with his card number. All that is in the control of the customer is whether he hands his card over for his purchases to be recorded against it.

share|improve this answer

Whatever you do, don't go for the second solution.

Scanning a QR code off a phone display is hard. Different types of display have different resolution, brightness, reflectivity, polarization, etc. Using a web camera to recognize the image from a backlit phone display is a very different beast from recognizing the same image printed on paper or other non-emitting surface. If you try to implement it, you will have to invest lots of time for it to work well. I wouldn't even recommend it for large projects due to its brittleness and error proneness; implementing it in a quick solution is just impossible.

You might want to look into technologies beyond QR. NFC could be an option, but doesn't have much penetration yet.

share|improve this answer

protected by Community May 31 '14 at 10:39

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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