Guides
Step-by-step guides: add a working form to any site
Answer-first tutorials for connecting HTML, WordPress, React, Next.js, Vue, Svelte, Astro, Hugo, Jekyll, Webflow, Framer and AI-built sites to a form backend — plus spam, Sheets, Slack and Discord recipes.
HTML
HTML form without a backend
Make a plain HTML contact form send emails without PHP, Node or a server — by pointing it at a hosted form backend. Copy-paste code included.
Learn moreNext.js
Next.js contact form
Add a working contact form to a Next.js App Router site without writing a route handler, server action or email integration. Works with static export.
Learn moreReact
React contact form
A copy-paste React contact form component that sends submissions to your inbox via a form backend — no Express server, no EmailJS keys in the browser.
Learn moreWordPress
WordPress form without a plugin
Add a fast, spam-protected contact form to WordPress with a Custom HTML block — no Contact Form 7, WPForms or SMTP plugin required.
Learn moreAstro
Astro contact form
Add a working contact form to a static Astro site with zero JavaScript — or as an island with inline success messages.
Learn moreVue
Vue contact form
A Vue 3 single-file component that submits to a hosted form backend with loading, success and error states — no server needed.
Learn moreNuxt
Nuxt contact form
Add a contact form to Nuxt 3 or 4 that works with nuxt generate and static hosting by posting directly to a form backend.
Learn moreSvelte
Svelte & SvelteKit contact form
A Svelte 5 contact form component using runes that submits to a hosted form backend — works with adapter-static.
Learn moreHugo
Hugo contact form
Add a working contact form to a Hugo static site with a partial and a shortcode — no server, no JavaScript required.
Learn moreJekyll
Jekyll contact form
Add a contact form to a Jekyll site (including GitHub Pages) with an include file and a form backend.
Learn moreGitHub Pages
GitHub Pages contact form
GitHub Pages only serves static files. Here's how to add a working, spam-protected contact form anyway.
Learn moreWebflow
Webflow form backend
Send Webflow form submissions to FormSubmit for webhooks, Slack and Google Sheets — while keeping your Webflow design.
Learn moreFramer
Framer form backend
Use a Framer code component to send form submissions to FormSubmit — emails, Slack, Sheets and webhooks without Framer form limits.
Learn moreGatsby
Gatsby contact form
Add a contact form to a Gatsby site without Gatsby Functions by posting directly to a form backend.
Learn moreEleventy
Eleventy contact form
Add a contact form to an Eleventy site using global data and a Nunjucks include, powered by a hosted form backend.
Learn moreNetlify
Netlify static site form
Use FormSubmit instead of or alongside Netlify Forms for static sites — framework-agnostic, with webhooks, Sheets and spam protection on every plan.
Learn moreVercel
Vercel site form
Add a contact form to any Vercel-hosted site — static or Next.js — without serverless functions, email providers or databases.
Learn moreAI builders
Forms for AI-built sites
AI website builders generate beautiful forms that don't send anywhere. Here's how to connect them to a real backend with one prompt.
Learn moreFile uploads
File upload form (HTML)
Accept resumes, images and documents through a plain HTML form — stored privately and linked in your email — with no backend code.
Learn moreGoogle Sheets
Form to Google Sheets
Automatically add every website form submission as a row in Google Sheets — using only the drive.file permission, no Zapier required.
Learn moreSlack
Form to Slack
Post every contact form, lead or support request to a Slack channel in real time using an Incoming Webhook and FormSubmit.
Learn moreDiscord
Form to Discord
Get a Discord embed in any channel whenever someone fills your website form — perfect for communities, game studios and open-source projects.
Learn moreSpam
Stop form spam
A practical, layered approach to form spam — honeypots, timing checks, content filters, allowlists and captchas — and how to set each up.
Learn moreYour form backend is 60 seconds away
Sign in with Google, create a form, paste the endpoint. Free forever for small sites — no credit card.