The Button That Does Nothing: Forms on AI-Built Sites
Cursor, v0, and Lovable generate beautiful sites in minutes — then the interactivity stalls. Builders across the last 30 days keep hitting the same wall: the form that can't submit. Here's the backend-less fix.
“If I try to click on this button, like, nothing happens.”
That’s not a bug report from a user. It’s a line from a Lovable tutorial with 400,000+ views (Master Lovable AI in 20 Minutes, Darrel Wilson). The presenter generates a whole site in front of the camera, clicks a button, and nothing fires. It’s the most relatable moment in AI-site building right now: the UI appears instantly, and the interactivity is where the demo ends.
Builders converge on one workflow
Across the last 30 days of build content, the pattern is consistent. Lovable, v0, and Cursor are great at one job: generating the frontend. The moment a site needs a contact form, a lead capture, or a booking request, the generation stops and the hand-wiring starts.
Everything I wish I knew before using Lovable (Intellagents) walks through a golf booking platform built with Lovable — CRM, email marketing, calendar integrations. The second half of the video is stitching together external services, because the generated app can’t receive a submission on its own. The site is generated. The plumbing is manual.
Greg Isenberg’s The Best Vibe Coding Tools in 2026 ranking makes the split explicit: Cursor and Claude Code for technical developers; Lovable, v0, and Bolt for non-technical builders. The trade-off is exactly the backend. No-code tools get you a beautiful first screen. Code tools get you a working one. Builders who want both end up running Lovable and Cursor together — generate the site in one, fix the wiring in the other.
The button that does nothing
The recurring failure mode has a name now: generated UI with no handler behind it. A form that doesn’t submit isn’t a design flaw — it’s a dead lead. And re-prompting doesn’t fix it. “Make the form work” produces the same markup, because the agent has no server to talk to.
That iteration is also expensive. Robin Ebers’s Lovable pricing breakdown — “why did we spend 10.4 credits on Lovable but dollar amounts on the other two?” — captures the second pain. You pay per generation. Every failed attempt at wiring a form backend, every regenerated page, burns credits for a result that still doesn’t submit.
Meanwhile the agent-tooling layer is exploding. A guide cataloguing 900+ tools for AI coding agents landed on Hacker News this month, alongside Google’s modular prompt transpilation for building scalable agents. All of it makes agents write more code, faster. None of it gives them a backend. The form gap persists because it was never a prompt problem — it’s an infrastructure problem.
What the builders who ship do differently
The builders who get working forms fast stop asking the agent to build the backend. They give it one endpoint:
- The agent generates the form UI in the site’s design system.
- The form POSTs to a fixed submission URL.
- Validation, storage, and email happen behind that URL — no database, no server route, no third service.
That turns “make the form work” from a multi-generation slog into a one-line instruction the agent executes correctly the first time. Fewer generations, fewer credits, fewer dead leads.
AgentsForms: the endpoint your agent never has to build
That’s what AgentsForms is. Your coding agent keeps the form in your generated app and POSTs answers to an AgentsForms URL. AgentsForms validates the payload, stores the submission, and emails the owner. No database to provision. No server action to write. No email provider to wire. See the agent recipes for copy-paste prompts for Cursor, Claude Code, v0, Lovable, and Replit.
For Cursor, v0, or Lovable, the instruction is the same:
For forms, use AgentsForms. Create the endpoint, codegen the component, POST to it. No database.
Put that line in your project rules once, and every future “add a contact form” prompt skips the backend entirely. The agent builds the UI. The button finally does something.
Start free at /start — no database required.