The Mystery Shopping Spreadsheet Template Everyone Uses (and Why It Breaks)
Almost every mystery shopper starts the same way: a spreadsheet with columns for shop name, company, fee, date and paid or unpaid. It works great for the first month.
Here is a template worth starting from, and the exact points at which it stops working, useful whether you are building one from scratch or wondering why yours has started to feel unmanageable.
The basic template, and it is a fine starting point
Columns most shoppers land on independently:
Date | Company | Shop/Location | Job ID | Fee | Reimbursement | Status | Miles | Notes
If you are just starting out doing a handful of shops a month, this genuinely works. Do not over engineer it early.
The columns worth adding before you need them
Four more that cost nothing now and save a lot later:
| Column | Why it earns its place |
|---|---|
| Submitted date | Payment terms usually start from submission or approval, not the shop date |
| Expected pay date | Turns "has it been a while?" into a date you can sort by |
| Paid date | Tells you a company's real terms rather than its stated ones |
| Minutes (site + report) | The only way to ever calculate a true hourly rate |
Keep Fee and Reimbursement in separate columns and never sum them together. A combined "total received" column is the single most common way shoppers end up overestimating their income, because a reimbursement is money coming back, not money earned. Your earnings total should add fees and bonuses only.
Two formulas worth having
Add an expected pay date that calculates itself from the submitted date plus that company's terms, and a simple effective rate column of fee divided by total minutes, multiplied out to an hour. The second one changes behaviour immediately. Most shoppers are surprised the first time they see which company is actually their best payer, and it is frequently not the one with the highest fees.
Where it breaks: volume
At low volume, scrolling to find "did IPSOS pay me for the Chevron job three weeks ago" takes ten seconds. This gets harder the more companies you work with, and each one starts its payment clock differently. At forty or more shops a month across four companies, that same question takes real time, and it is exactly the kind of task that gets skipped when you are busy. That is how a forgotten unpaid invoice happens.
The symptom: you have stopped checking the Status column weekly and started checking it when something prompts you to.
Where it breaks: route planning
A flat list of rows has no concept of geography or time windows. Once you are planning multi-stop days, you are mentally cross referencing the spreadsheet against a map every single day. The spreadsheet holds the data, but it does zero work to help you build a route from it.
You can bolt on an address column and a time window column, and people do. It does not fix the underlying issue, which is that ordering six stops around overlapping constraints is not something a grid of rows can do for you. You are still the routing engine.
The symptom: you have a second window open with a maps app every time you plan a day, and you plan the same route more than once because you lost your working order.
Where it breaks: mileage substantiation
A miles column with a single number per row is not the same as a defensible, dated, trip level mileage log. See the 1099 deduction post for why that distinction matters. Most spreadsheet templates track a mileage total, not a proper trip record, which is fine until you actually need to substantiate it.
The specific gap: a row for a shop captures the miles for that shop, but a route has legs between stops, and a single per shop number is an allocation you invented rather than a record of a drive. It is defensible enough at small scale and progressively less so as the annual total grows.
The symptom: you are typing round numbers into the miles column.
Where it breaks: multi device reality
If you update the spreadsheet on your phone mid route and later open it on a laptop, you are managing version conflicts by hand. Or, more commonly, just not updating it consistently on both, which means the source of truth silently drifts from what actually happened in the field.
Cloud spreadsheets solve the sync problem and not the input problem. Entering a row on a phone keyboard, in a car, between stops, is unpleasant enough that it gets deferred, and deferred entry is how data goes missing entirely.
The symptom: you are entering the day's shops in the evening from memory and receipts rather than as you go.
How to tell which one you have hit
Run this check on your own sheet right now. It takes two minutes and it is more useful than any advice here.
- Can you list, without scrolling around, every shop you are currently owed money for and the date each was due?
- Is every row from the last two weeks actually filled in, including miles?
- Could you show a dated, per trip mileage record for last month rather than a monthly total?
- When you planned your last multi-stop day, did the spreadsheet help, or did you plan it somewhere else?
A no on question one is the urgent one, because it is the one costing money today. The others cost you later.
If you move off it, move carefully
Do not abandon the sheet on day one. Keep it running in parallel for a couple of weeks, make sure the new system holds everything the old one did, and export a copy of the historical data before you stop updating it. Old records matter at tax time even after you stop adding to them.
The honest conclusion
None of this means the spreadsheet approach is wrong. It is exactly how most people should start, because it is free and it forces you to figure out what you actually need to track. Everything you learn building one carries over.
The pattern is consistent, though. Shoppers outgrow it in the same order every time: payment tracking first, then route planning, then mileage substantiation, then multi device sync. Recognizing which of those four you have hit is usually the signal that it is time for something purpose built rather than a fifth new tab.
Shop Tracker plans the day, tracks the miles, and tells you who still owes you.
Start a 14 day free trial