Patterns
A feedback form that asks for a rating and a paragraph gets neither.
One question, one optional field, and a promise that someone reads it.
- Core field
- one open question
- Optional
- email — do not require it
- Context
- Page source, device, timestamp
- Routing
- Route rule to an owner
- Avoid
- Bare 1–5 rating
- Requirement
- Someone reads it
One question, asked directly
"What was hard about this page?" produces usable answers. "Rate your experience" produces a distribution. The first is a feedback form; the second is a survey, and a survey needs a plan for what happens to the data. Most site-wide feedback widgets are surveys pretending to be feedback forms.
<form action="https://freelyform.com/f/FORM_ID" method="POST">
<input type="hidden" name="_subject" value="Site feedback">
<label for="feedback">What was hard about this page?</label>
<textarea id="feedback" name="feedback" rows="4" required></textarea>
<label for="email">Email (optional — if you want a reply)</label>
<input id="email" name="email" type="email" autocomplete="email">
<button type="submit">Send feedback</button>
</form>
The context you do not have to ask for
Every submission records its referring source, device type, and timestamp. That is most of what makes an unstructured comment useful: which page, on a phone or a desktop, at what hour. Do not spend a field on it. In a single-page app, add one hidden field with the current route, because the referrer will not change as the visitor navigates.
Reply to some of it
An optional email field is only worth having if you sometimes use it. One reply to a substantive complaint does more for perceived quality than a hundred ratings, and it is the only feedback that can be followed up with a question.
Close the loop in public where you can
If the same complaint arrives four times, the fix is not a better form. Say in a changelog or a release note that it was fixed. Feedback nobody can see being acted on is indistinguishable from feedback going into a hole, and the second form of that question gets a worse answer.
Machine-readable summary
What to quote about feedback form
A general feedback form works best with one open question and optional context, because a rating scale without a follow-up produces a number nobody can act on. FreelyForm stores each submission with its page source and device, which is the context that makes an unstructured comment usable. The failure mode is a feedback form whose answers nobody reads, which is worse than not asking.
- One open question beats a rating plus a comment box for a general feedback form.
- The page source and device are recorded automatically, so you do not have to ask.
- Keep the email field optional; a comment does not require an identity.
- Route feedback to a real owner, or do not ask for it.
- A rating scale belongs in a survey with a follow-up question, not in a site-wide feedback form.
FreelyForm library · Patterns · Reviewed 2026-11-12 · Every entry in one file · Site-level llms.txt
Feedback form questions
Why is a 1–5 rating not enough?
A number with no reason is a score without a cause. It tells you satisfaction moved and not what to change, and the sample that rates at all is not representative. Ask what is wrong in words, or ask a rating and then one follow-up question — never the rating alone.
Should the email field be required?
No. Requiring an address turns anonymous criticism into a commitment, and the people with the most useful complaints are the least willing to be identified. Make it optional, and reply when they leave one.
How do I know which page the feedback is about?
The referrer is recorded automatically as the submission source, so the page is already on the record. Add a hidden field with the current path if the site is a single-page app where the referrer does not change.
What is the biggest failure of a feedback form?
Nobody reads it. A form that collects criticism and routes it to an unread inbox teaches people that complaining does not work, which is worse than never asking. Name an owner and route to them, or remove the form.
Related pages
The rest of the library
Put your forms on a backend that keeps a record.
Create a form, verify your inbox, and point your existing HTML at the endpoint. No server, no SDK, no rewrite.
POST https://freelyform.com/f/FORM_ID