The form design decides the response rate, not the code
A feedback QR code points at a form. Generating the code takes seconds; the reason most feedback codes collect almost nothing is what sits on the other side of the scan.
The numbers are unforgiving. Every additional question loses respondents, and the loss compounds. A one-question form gets responses from people who would never have started a ten-question one, and the drop-off between question five and question ten is brutal because respondents can see the progress bar and calculate the remaining cost.
Ask for the minimum that will change a decision. If you would not act differently based on the answer to a question, delete it. Most feedback forms are padded with questions nobody will ever read the answers to.
A form that people finish
One screen, no scrolling where possible. A form that fits on a phone screen looks like a 20-second task; one that scrolls looks like a form.
Lead with the easiest question. A rating scale or a set of tap targets gets people invested. Starting with a text box loses the majority immediately.
One open text box, at the end, optional. This is where the useful material comes from — the specific complaint, the name of the staff member who helped, the thing you had not thought of. Making it optional means people who have nothing to add still submit the rest.
No account, no login, no email required to start. Any authentication wall costs you most of your respondents. If you need contact details for follow-up, ask at the end and make it optional.
Say how long it takes on the printed card. "3 questions, 20 seconds" outperforms "share your feedback" substantially, because it removes the open-ended commitment.
Do not ask for what you already know. If the code is on table 6, encode the table number in the URL rather than asking. If the code is at branch 4, same. Pre-filled context is both more accurate than what respondents type and one fewer question.
Pre-filling context through the URL
Most form platforms accept URL parameters that pre-populate hidden fields, which turns one form into many:
https://forms.example.com/feedback?location=bristol&point=till-2
Google Forms uses a ?usp=pp_url&entry.123456789=value pattern; Typeform, Jotform and Microsoft Forms each have their own hidden-field mechanism. Print a different code for each table, room, branch or machine and you get segmented data for free, with no extra effort from the respondent.
This is the single highest-leverage thing you can do with feedback codes, and it is the thing most people skip. Feedback that says "the service was slow" is nearly useless; feedback that says "the service was slow, from the code at table 6 on Friday evening" is actionable.
Anonymous or identified?
This is a real trade-off, not a default.
Anonymous gets you more responses and more honest ones, particularly on anything sensitive — staff surveys, complaints, questions about a person. The cost is that you cannot follow up, cannot verify, and cannot resolve an individual's problem.
Identified lets you close the loop, which is often more valuable than the data. A customer who reports a problem and gets a personal reply frequently becomes more loyal than one who never had a problem.
The workable middle is optional contact details at the end: "If you'd like us to get back to you, leave your email." People with a resolvable problem usually will; people who just want to vent will not, and both are useful.
If you promise anonymity, honour it properly. Do not collect IP addresses, do not use a form that timestamps in a way that identifies a single customer at a quiet table, and say plainly what you do collect.
Where to put it, and when
Placement is timing, and timing determines both volume and sentiment.
At the moment of completion — as the bill arrives, as a job finishes, at checkout. Highest response rate, and the experience is fresh.
On the receipt is the classic choice and among the weakest. The receipt goes into a pocket and is looked at, if ever, when the moment has passed.
On the product or packaging works for post-purchase feedback where the useful judgement comes days later.
At the point of the problem is underrated: a code on a machine, a lift, a bathroom, a hotel room. It routes a complaint to someone who can act on it, before it becomes a public review. This is arguably the best return on a feedback code — it intercepts problems while they are still fixable.
Staff-adjacent placement. A member of staff mentioning the card while handing it over converts several times better than the card alone. Where you can build that into the routine, do.
The technical checks
- Test on mobile, signed out, on cellular data. Many forms are built and tested on a desktop and are painful on a phone.
- Confirm no login is required. Google Forms in particular defaults to restricting responses within an organisation, which silently blocks every external respondent.
- Check accessibility. Real labels on fields, sufficient contrast, and a form that works with a screen reader. A feedback form that excludes disabled users is collecting biased data as well as being inaccessible.
- Set up notifications so responses reach someone. A feedback form nobody reads is worse than no form, because it collects complaints and appears to ignore them.
- Print at 3 cm minimum, matte finish, tested in the room's actual lighting.
- Use a redirect on your own domain —
yourbrand.com/feedback— so you can change form platform later without reprinting anything, and so the code stays coarse regardless of how long the form URL is.
Closing the loop is the part that pays
Collecting feedback is easy and mostly worthless on its own. The value comes from three things:
- Acting on it visibly. A sign saying "you said the coffee was cold, so we changed the machine" is the strongest evidence that responding is worthwhile, and it lifts future response rates.
- Replying to people who left contact details, quickly. This is where a complaint becomes retention.
- Reviewing the aggregate regularly, not just the outliers. One furious response is noise; twelve mentions of the same thing is a finding.
If nobody in the organisation owns the responses, do not print the code.
Frequently asked questions
How many questions should the form have?
As few as will change a decision — often one or two, plus an optional comment box. Every additional question loses respondents, and the loss compounds. If you would not act differently based on an answer, remove the question.
Which form platform should I use?
Any that produces a mobile-friendly form with no login requirement — Google Forms, Typeform, Jotform, Microsoft Forms all work. Check accessibility and hidden-field support, and route the code through your own domain so you can switch platforms later without reprinting.
Should feedback be anonymous?
Anonymous gets more responses and more candour, especially on sensitive topics, but you cannot follow up. The practical compromise is an optional contact field at the end — people with a resolvable problem usually fill it in. If you promise anonymity, honour it properly.
Can I tell which table or location the feedback came from?
Yes, and you should. Most form platforms accept URL parameters that pre-populate hidden fields, so a different code per table, room or branch gives you segmented data with no extra work for the respondent — and more accurately than asking them.
Why does my Google Form ask people to sign in?
The response setting is restricted to your organisation. Turn off the "Restrict to users in [your domain]" option, then test the link in a private browsing window while signed out to confirm.
Where should the code go?
At the moment of completion — with the bill, at checkout, as a job finishes — or at the point of a potential problem, such as on a machine or in a hotel room. Receipts are the most common placement and among the least effective, because the moment has passed by the time anyone looks.
Can I change the form after printing the code?
Yes, if the code points at a redirect on your own domain rather than the form platform's URL directly. That also keeps the code coarse, since form URLs are often long.