Plain HTML and static hosts
Paste the action into a .html file or any static deploy that can render form markup.
GitHub Pages, Cloudflare Pages, Netlify, Vercel
Paste one URL into your form and receive submissions straight to your inbox. No server. No plugin. No gated features.
Free to start · No credit card required
html.contact receives the form post, stores the submission, applies source and spam checks, then sends email from your dashboard settings.
/f/hc_pub_REPLACE <form action="https://html.contact/f/hc_pub_REPLACE" method="POST">
<label for="email">Email</label>
<input id="email" name="email" type="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Send</button>
</form>Paste the action into a .html file or any static deploy that can render form markup.
GitHub Pages, Cloudflare Pages, Netlify, Vercel
Render the same native form from your component. No client SDK or backend route is required.
Astro, Next.js, Nuxt, React, Vue
Tell the builder to keep method="POST" and put only the public hc_pub_ endpoint in browser code.
Lovable, Bolt, Replit, v0, Cursor, Claude Artifacts
Use the builder's custom form action when it lets you set the POST endpoint directly.
Webflow, Framer, Carrd, WordPress, Shopify
Other form tools give you a free endpoint, then gate attachments, routing, recipients, exports, and API access. html.contact gives you the real setup from the start. Same backend. Different volume.
Build, test, and ship the real setup before accepted volume becomes a billing question.
Your form stays plain HTML. We handle the backend.
Get a unique form URL in your dashboard.
Use it as the action in any HTML form.
Form submissions go straight to your inbox.
"As a backend engineer, of course I could set up email. But html.contact makes it so fast and I prefer having everything organized in one place."
No server. No plugin. No backend code.