Hugo
Hugo writes HTML and stops. There is no runtime to handle method="POST". A partial or shortcode holds the markup. smote receives the post.
<form action="https://smote.sh/f/FORM_ID" method="POST"> <input name="email" type="email" required> <textarea name="message" required></textarea> <input type="hidden" name="_redirect" value="https://yoursite.com/thanks"> <button>Send</button> </form>
Put the form in layouts/partials/contact.html and call {{ partial "contact.html" . }} from a layout. If editors paste forms into Markdown, make it a shortcode in layouts/shortcodes/contact.html and write {{< contact >}}. Keep the form id in hugo.toml under [params] if you want one place to change it.
The same public/ folder works on GitHub Pages, Cloudflare Pages, Netlify, or a bucket. Netlify Forms are a Netlify-only rewrite — leave them. Why.
Also: GitHub Pages · Astro · Jekyll · Cloudflare Pages · Any static site