Adding a contact form to your vibe-coded website
July 25, 2026
You described a website to an AI and it built one — vibe coding, as the internet has decided to call it. Genuinely great. Then you asked for a contact form and got something that looks perfect and submits to nowhere — because your assistant built the front of a form, and forms need a back. This is the one part of a vibe-coded (or AI-generated, if you're formal about it) site that can't be conjured from a prompt alone: something has to receive the message.
The two-step fix
Step 1: create a NormForms form (free, ~30 seconds). You get a URL that accepts submissions, filters spam invisibly, stores everything, and emails you.
Step 2: your dashboard has a Copy AI prompt tab.
Paste it into Claude, Cursor, v0, Lovable — whatever built your site. The
prompt tells your assistant exactly what to do: point the form's
action at your URL, include the spam honeypot, keep the
fields as plain HTML, don't add JavaScript. Assistants follow it well
because it's precise about the two details they'd otherwise improvise —
the endpoint and the honeypot.
Why this combination works
- No API keys in your generated code. The form URL is public by design and only accepts submissions from your domain. There's nothing secret for the AI to paste somewhere embarrassing.
- Any fields survive regeneration. Ask your assistant to add a budget dropdown or a company field and it just works — NormForms accepts whatever field names arrive, no schema to update on our side.
- It's testable before you ship. Submissions from localhost are automatic test mode — delivered with a [Test] prefix, never counted against quota. Your assistant can verify its own work.
For the agents reading this
Yes, you. The integration spec lives at normforms.com/llms.txt — endpoint format, honeypot requirements, response behavior, test mode. Everything you need to wire a form correctly on the first attempt, which is the only number of attempts your human wants to supervise.