Hugo generates static HTML, so a contact form just needs somewhere to post to.
<form action="https://forms.elimbi.com/submit" method="POST">
<input type="hidden" name="access_key" value="{{ site.Params.formdropKey }}">
<input type="hidden" name="subject" value="New message from my site">
<input type="hidden" name="redirect" value="https://example.com/thanks">
<input type="text" name="name" required>
<input type="email" name="email" required>
<textarea name="message" required></textarea>
<input type="checkbox" name="botcheck" style="display:none">
<button>Send</button>
</form>Add formdropKey = "..." under [params] in your config and include the partial with {{ partial "contact.html" . }}.
access_key — your key (required).email — if present, FormDrop sets it as Reply-To so you can answer directly.subject — optional email subject.redirect — optional thank-you page URL for plain HTML posts.botcheck — hidden honeypot; if a bot fills it, the submission is silently dropped.Every other field is included in the email and saved in your dashboard log. Send Accept: application/json to get a JSON reply instead of a redirect.
Yes: 250 submissions/month and unlimited forms on the free plan. Pro is $9/mo for 10,000/month.
Not currently — FormDrop handles text fields. Link to a file share instead.
The plain HTML form version does; the fetch version needs JS.