[ Widget ]
A website feedback widget that ends in a pull request
Most feedback widgets fill an inbox. This one hands each message to an AI coding agent, which makes the change in your repository and opens a pull request for you to review.
Updated
What the widget does
The widget adds a button labelled [ feedback ] to the bottom right corner of your site. A click opens a small panel with a text field. The visitor writes what should change, in up to 2,000 characters, and sends it.
The message does not wait in an inbox. A coding agent clones your repository into an isolated sandbox, makes the change and opens a pull request on GitHub. You read the diff, then merge it or close it.
Add it with one line
<script src="https://www.feedback2code.dev/widget/YOUR_WIDGET_ID" async></script>The dashboard shows this snippet with your own widget ID once you have connected a repository and named the domains the widget may run on. There is no package to install and no build step.
Step-by-step guides for common setups:
- Next.js –
app/layout.tsx - React –
index.html - Vue and Nuxt –
nuxt.config.ts - Astro –
src/layouts/Layout.astro - Static HTML –
index.html - WordPress –
functions.php - Shopify –
layout/theme.liquid
What your visitors see
- A button fixed to the bottom right of the page. It follows the visitor's system setting for light or dark colours.
- A panel with two tabs. Submit holds the text field and a character counter. Local History lists what this visitor sent earlier from the same browser, each with a status.
- A short confirmation after sending. Nobody has to sign up or log in to leave feedback.
The widget renders inside an iframe, so your stylesheet and its own styles cannot affect each other.
What happens after someone clicks send
- The feedback is saved and shows up in your dashboard with the status coding.
- A sandbox starts and clones the repository. The agent reads the code, makes the change and commits it to a new branch.
- The branch is pushed and a pull request is opened. The status turns to awaiting review, and you get an email if you left notifications on.
- You review the pull request on GitHub. After you merge it, the status turns to merged. If the agent could not finish, the status is failed.
The sandbox has no general internet access. Outbound connections are limited to an allowlist: GitHub, the npm registry, Linux package mirrors and the services the agent itself needs. While the agent works, it has no GitHub credentials. A separate step pushes its branch and opens the pull request, and nothing is deployed.
What a submission contains
| Item | Details |
|---|---|
| Feedback text | Plain text, up to 2,000 characters. |
| Page | The address and path of the page the widget was loaded on. |
| Not included | Screenshots, annotations, video, console logs or session recordings. |
On sites that change pages without a full reload, the widget keeps the address of the first page. Ask reporters to name the page if it matters.
You decide where it runs
Each repository has a list of authorized domains. The widget only accepts feedback from those domains and their subdomains. Add example.com and it works on www.example.com and staging.example.com as well.
On shared hosts such as vercel.app, netlify.app or github.io, authorize your own subdomain and not the hosting domain as a whole. Otherwise any project on that host could send feedback to your repository.
Plans and limits
| Free | Pro | |
|---|---|---|
| Price | $0 | $20 per month |
| Feedback submissions | 10 per 30 days | 100 per 30 days |
| Repositories | Unlimited | Unlimited |
| Agent and pull requests | Included | Included |
| Email when a pull request is opened | Included | Included |
| Also in Pro | – | Priority sandbox execution, Custom agent instructions, Page path context tracking |
The 30 days are a rolling window. Every submission counts, including a test you send from localhost. The full list of plan features is on the pricing section of the home page.
Where it fits and where it does not
Good fit
- Client sites in maintenance, where requests are small and frequent: a headline, a colour, a broken link, a layout glitch on mobile.
- Documentation and marketing sites kept in a repository.
- Internal tools, where colleagues know exactly what they want changed.
Not a fit
- Feedback that needs a picture. There are no screenshots or annotations. Tools built for that are listed on the comparison page.
- Content that lives in a database or a CMS. The agent only changes files in the repository.
- Vague wishes and large features. “Make it more modern” gives the agent nothing to work with. One concrete change per message works best.
- Code hosted anywhere other than GitHub.
The code is public
You can read how the widget and the agent work in the public repository. It is published for transparency. The licence is proprietary, so it is not open source and cannot be self-hosted.
Questions and answers
Is the feedback widget free?
There is a free plan with 10 feedback submissions per 30 days on unlimited repositories. The agent and the pull requests are included. The Pro plan costs $20 per month and allows 100 submissions per 30 days.
Does the widget work on any website?
It works on any site where you can add a script tag. For the agent to implement feedback, the code of the site has to be in a GitHub repository that you connect.
Can visitors attach screenshots?
No. Feedback is written text of up to 2,000 characters. The widget also records the address of the page it was loaded on.
Will a change go live without me?
No. The agent opens a pull request and stops there. Nothing is merged or deployed until you do it.
Who can send feedback?
Anyone who sees the widget. It only accepts feedback from the domains you authorize, so you decide where it works, for example only on a staging site that your client uses.
Is feedback2code open source?
No. The source code is public on GitHub so you can read how the widget and the agent work, but the licence is proprietary and there is no self-hosted version.