Articles · App ExamplesUpdated September 2026

A mystery shopper app is only as good as the evidence it brings back.

Most of what a mystery shopper app collects gets argued about the moment it lands. The shopper says nobody offered the loyalty card, the queue was four deep and the promo end was half empty. The area manager says that is not what Tuesday looked like. If the answer does not carry a capture time, a location and a photo, there is no way to settle it, and a programme you are paying for quietly turns into opinion. The same failure runs through merchandising apps, where a shelf photo with no time on it proves nothing at all.

This page covers what a visit has to bring back, how to write questions that two different shoppers answer the same way, how to choose which sites get visited and when, and what a secret shopper app has to handle around pay, receipts and faces the staff have started to recognise.

Score a visit and see what a critical item does

The short version

A shop report is evidence, not a review.

Two things decide whether a visit programme is worth running. Whether each answer can be tied to a place and a moment, and whether two shoppers sent to the same store on the same morning would come back with nearly the same score. Miss the first and nobody can act on a finding, because it can simply be denied. Miss the second and your scores are comparing shoppers rather than stores.

Everything else, the routing, the reporting pack, the dashboard, sits downstream of those two. A field audit app that gets them right with a plain list of questions beats a polished one that gets them wrong.

What a visit has to bring back

The unit of record is not the score. It is one answer, carrying the question it answers, the site, the shopper, the moment of capture and, where it matters, a photograph. Store those as fields on the answer rather than as a PDF assembled at the end. A finding you cannot filter by site and date is a finding nobody will ever act on.

Photographs are where the record quietly loses its value. An image file can carry EXIF metadata, including the moment of capture, and the camera API in a React Native and Expo project will hand it to you if you ask: the option is documented as whether to also include the EXIF data for the image, and the object that comes back is described as one that may include various fields based on the device and operating system. Read that second phrase carefully. Device dependent means you cannot promise a particular field will be there.

Metadata is fragile as well as optional. A resize, a re-encode, an export into a report or an upload that strips metadata for privacy can each hand you a picture with no capture time on it. So write your own timestamp and your own coordinates into the record at the moment of capture, next to the question and the shopper, and treat whatever survives inside the file as a bonus rather than as the proof.

On whether a generated build does this out of the box, here is what we actually saw. Newly's own documentation has no camera page, no location page and no sensors page. The only camera reference anywhere in it is the cloud simulator, which can feed your computer webcam into the device camera and let you drop a JPEG, PNG or MP4 into the device photo gallery. That is useful for testing a screen and it is not evidence of anything, because a photo captured that way is a picture of your desk. Timestamped and geotagged capture is available in the framework the project is written in, but we did not confirm it end to end in a shipped build, so treat it as unverified until you install the app on a real phone and look at what the saved record holds.

Expo, Camera API reference, takePictureAsync options

Questions two shoppers would answer the same way

Was the store clean is not a question, it is a prompt for an opinion, and opinions do not compare across people or across months. Were all open checkouts free of litter during the visit is a question. Every item on the form needs an observable trigger, a threshold and a small answer set: yes, no, not applicable, with a photo required on a no.

Thresholds are what make a score reproducible. Greeted within 30 seconds of walking in. Offered the add-on before payment was taken. Shelf price matched the till price on three named lines. The shopper is not asked to judge anything, only to report what happened, and the free text box stops being the report and becomes the explanation attached to a no.

Weighting is the other half of it. A form where every item is worth the same turns a real risk into a rounding error: a store that missed an age check and did everything else beautifully can still score 92. Mark a handful of items as critical, and let a critical failure cap the visit and notify someone the same day instead of waiting for the weekly pack.

The checklist engine underneath is the same one a field inspection app needs. The difference is cover. Your shopper is being served as a customer, so the form has to be answerable one handed, in under a minute, and it must not announce on screen what it is.

Try it

Score one visit

Tap an item to flip it between pass and fail. One of them is critical, and a critical failure should not cost a few points.

Visit failed

The points add up to 50, but a critical item failed, so the visit fails and someone hears about it today.

Who gets visited, how often, and chosen how

A visit the manager saw coming measures preparation. Random and unannounced is not a detail of the programme, it is the programme, and the selection rule belongs in the app rather than in the head of whoever books the visits.

The strictest version of this is written into regulation. States taking the substance abuse prevention and treatment block grant have to run annual, random, unannounced inspections of tobacco outlets, over the counter and vending machine, conducted so as to provide a probability sample of outlets, and report the results each year. The rule sets a performance objective of an inspection failure rate no higher than 20 percent. You may only be checking whether the coffee was hot, but the shape is worth copying: a sample rather than a favourite branch, unannounced, the same protocol every time, and a number that gets reported rather than admired.

The list being sampled is a list of sites, and it has to be one list. Each site needs the id your other systems already use, an address, opening hours and who runs it. If your locations live in Shopify, that is the same record a store locator app for shopify reads, and keeping one canonical site list saves a reconciliation every time a store moves or closes.

Coverage beats volume. Four visits spread across four branches tell you more than twelve visits to the one store that is easy to reach, so order the queue by longest since last visit and let the app refuse a site that was shopped last week.

45 CFR 96.130, random unannounced inspections of tobacco outlets

Paying shoppers and keeping the panel honest

A visit usually costs two kinds of money: a fee for the work and a reimbursement for whatever the shopper had to buy. Keep them as separate fields, because they are reported differently and approved differently. The reimbursement needs a receipt photo and an amount, and that receipt is also the strongest evidence you will get that somebody was in that shop at that hour, which is reason enough to require it even when the purchase is a coffee.

Panels rot in predictable ways. The same person shopping the same branch every month gets recognised, and a recognised shopper measures the greeting they get rather than the greeting a stranger gets. Hold last visited by site and by shopper, block a repeat inside a window in the app rather than in somebody's spreadsheet, and exclude anyone who has worked at that site or has a relative there.

Then there is turnaround. A report that arrives eleven days later is history, not a finding. Set a deadline in hours from the visit, let a reviewer send a report back with a reason instead of silently correcting it, and keep both versions. The corrected report is the answer, and the original is how you show later what changed and why.

What each way of running visits actually gives you

ApproachAnswer tied to a time and placeTwo shoppers score alikeUsable with no signal in storeYour own questions and weights
Paper form emailed back laterNoNoYesYes
A generic online formcapture time onlyNoNoYes
Mystery shopping agencyYesYesYeswithin their template
Retail audit platformYesYesYesmostly, at a price per site
An audit app you buildYesif the questions are written wellYesYes

Building one around your own programme

Retail audit platforms are priced per site and shaped around a question template that suits most retailers. The fit breaks in ordinary places: a question only asked where there is a fridge, a weight that differs by region, a reimbursement rule that changes per campaign, two brands audited in one shop on one visit, a critical item you want to define yourself. Agencies solve the panel problem well and the flexibility problem slowly, because every change to the form is a change request.

Newly is an AI app builder. You describe the app, including your question set and the evidence each answer has to carry, and it writes a real React Native and Expo project you own, runs it on a cloud iPhone or Android simulator while it builds, and uploads iOS builds to App Store Connect and TestFlight using your own Apple Developer account. The Deploy tab has an Android section: one press builds, signs and uploads to Google Play internal testing, and it also builds a standalone release APK you can download and install on a phone directly. Plans start at $25 a month, there is no free plan, and there are no built-in payments, so shopper fees still go out however you pay people today. Code is pulled one way: install with npm i -g @newly/cli, then run newly pull with your project id.

Before any of that, settle what the app does in a shop with no signal. The back corner of a big store, a basement unit in a mall and a rural forecourt are exactly where the photo gets taken and exactly where the upload fails, and an app that loses a visit there will lose the trust of the panel in a fortnight.

Questions people ask about mystery shopper apps

It is the tool a shopper uses during an unannounced visit to record what happened: a fixed set of questions with defined thresholds, photos and receipts attached to individual answers, and a score that can be compared with the same store last quarter. The point is not the form. The point is that each answer carries enough context, the site, the shopper, the moment, for someone to act on it later.

Describe the visit your shoppers actually do

Write down the questions, the evidence each answer has to carry and the rule for who gets visited next, then build the app around that instead of around somebody else's template.

Start building