Blog · November 1, 2026 · 6 min read

How to add a feature request form to your website

You want visitors and customers to tell you what to build next. There are two ways to do it: a plain form that sends each request to you, or a voting board where everyone can see the requests and vote. Here’s how to set up each, which one suits you, and what to tell an AI builder so you get the one you meant.

A form or a board?

A form is private: each request goes to you and nobody else sees it. A board is public: requests are listed, visitors vote on the ones they want, and you mark them as planned or done.

A formA voting board
Who sees requestsOnly youEveryone who visits
The same idea twiceArrives again, and you merge them by handPeople find it and vote instead
How many want itYou count emailsThe vote count
Telling people it shippedYou email each person, if they left an addressThe status changes on a public roadmap
SpamYour form service’s filterApproval before ideas go public, plus the service’s limits
SetupA form and a form serviceA script tag or a hosted page

Start with a form if only you need to read the requests, you expect a handful a month, or they often include private details. Use a board once the same requests keep arriving, or when you want customers to see that you listen.

Option 1: a simple feature request form

Ask three things, and keep only the first one required:

  • What would you like us to add? One line, so requests are easy to scan.
  • What would it help you do? This is the useful part: the problem behind the request often has a simpler answer than the feature asked for.
  • Email, optional. Only if they’d like a reply or to hear when it ships.

If your site has no server (a static site, Webflow, Framer or most AI-built sites), point the form at a form service. Formspree, Web3Forms and Netlify Forms (for sites hosted on Netlify) all have free plans; each filters spam and emails submissions to you. Replace YOUR_FORM_SERVICE_URL with the address it gives you:

<form action="YOUR_FORM_SERVICE_URL" method="POST">
  <label>What would you like us to add?
    <input name="request" required maxlength="120">
  </label>
  <label>What would it help you do?
    <textarea name="details" rows="4"></textarea>
  </label>
  <label>Your email (optional, if you'd like a reply)
    <input name="email" type="email">
  </label>
  <!-- Honeypot: hidden from people, filled in by bots.
       Use the field name your form service's docs give. -->
  <input name="website" type="text" tabindex="-1" autocomplete="off" style="display:none">
  <button type="submit">Send request</button>
</form>

Put the form on its own page, such as /feature-requests, and link to it from your footer or help menu. Reply to people who leave an email; a short “thanks, it’s on the list” makes them far more likely to send the next idea.

Signs a form is no longer enough

  • You keep getting the same request and can’t tell how many people asked.
  • You copy requests into a spreadsheet to count and sort them.
  • Customers ask “is this on your roadmap?” and you have nowhere to send them.
  • You ship something and can’t easily tell the people who asked for it.

That’s what a voting board is for. It also changes who does the sorting: visitors find an existing idea and vote, instead of sending it again.

Option 2: a feature voting board

A hosted board gives you the list, the voting, an approval step for new ideas and a public roadmap, without a database or admin screens of your own. Canny, Featurebase, UserNote and several others do this; they differ mostly in price and in whether voters have to sign up.

With UserNote, it’s one script tag on every page. It adds a Feedback button that opens the board, and visitors can suggest and vote without creating an account:

<script src="https://getusernote.com/widget.js" data-workspace="ws_YOUR_BOARD_ID" defer></script>

You get an email for each new idea, approve ideas before they appear (on by default), and mark them Planned, In progress or Completed to update the roadmap. The free plan covers one board and up to 50 ideas.

Asking an AI builder for one

Ask Lovable, v0, Bolt or Cursor for “a feature request form” and you’ll most likely get exactly that: a form, saving to a new database table or sending email. That’s fine if a form is what you want. Say so, and ask for the parts it would otherwise leave out:

Add a feature request form on its own /feature-requests page, linked from the footer. Fields: what they’d like us to add (required, one line), what it would help them do (optional), and their email (optional). Send each submission to my form service at YOUR_FORM_SERVICE_URL; don’t build a database for it. Add a hidden honeypot field to stop spam bots, and show a thank-you message after sending.

If you want voting and a public roadmap, the word “form” will lead it astray. Ask for a board instead, and tell it to install a service rather than build one, or it will build its own (I tried this in Lovable: it works in minutes, but leaves out approval, spam limits and notifications). This is the prompt for UserNote; replace the board ID with yours from the dashboard:

Add the UserNote feedback widget to this site, so visitors can suggest features, vote on them and see our public roadmap. UserNote is a hosted service: don't build any feedback storage, voting or admin screens yourself. My UserNote board ID is ws_YOUR_BOARD_ID. 1. Add a floating Feedback button to every page. Put this script tag once in the shared layout, just before </body>: <script src="https://getusernote.com/widget.js" data-workspace="ws_YOUR_BOARD_ID" defer></script> In a React or Next.js app with package.json, use the npm package instead: npm install usernote, then render <UserNote board="ws_YOUR_BOARD_ID" /> (import { UserNote } from 'usernote/react') once in the root layout. In Vue or Svelte, call mount({ board: 'ws_YOUR_BOARD_ID' }) (import { mount } from 'usernote') once when the app starts. 2. Add a /roadmap page that shows the public roadmap, and link to it from the main navigation or footer. With the script tag: <div id="roadmap"></div> followed by <script src="https://getusernote.com/widget.js" data-workspace="ws_YOUR_BOARD_ID" data-mode="inline" data-target="#roadmap" data-view="roadmap" defer></script>. With the npm package: <UserNote board="ws_YOUR_BOARD_ID" inline view="roadmap" /> in React, or mount({ board: 'ws_YOUR_BOARD_ID', target: element, view: 'roadmap' }) in Vue or Svelte. In a single-page app (React, Vue, Svelte), use the npm package for this page: a script tag rendered by a component doesn't run. 3. If the site sets a Content Security Policy, allow https://getusernote.com in script-src and connect-src. Docs: https://getusernote.com/llms.txt

The short version

If only you need to read the requests, add a three-question form and point it at a form service. Once requests repeat and people ask what’s planned, switch to a board, so they can vote and follow your roadmap. And when you ask an AI builder, say which one you want.

Disclosure: I build UserNote, one of the boards mentioned here. It has a free plan with no time limit; Pro is a flat $19/month.