Guide

Free contact form for a static website

A static website contact form does not need a server on your host.

Short answer: Yes, a static website can have a contact form. A free contact form for a static website posts from the browser to Formgong. Hugo, Astro, Gatsby, Jekyll, Eleventy, Netlify, Vercel, GitHub Pages and plain HTML need no server. Paste the form and swap the access key. On the free plan, email is a daily digest and Telegram is instant.

Copy the form

Formgong team ·

Put this form on the page. The action is the real Formgong endpoint. The access key is the public key from your dashboard, not a mail password. botcheck is the honeypot. _lang picks the language of the thank-you page and the errors.

On the free plan, email is a daily digest to one address. It goes out the next morning at 08:00 in your time zone and covers the previous day. Telegram is instant on every plan, including Free. Pro and Business email each lead. Paid billing is not open yet. Pro is listed at $9 a month or $86 a year. Business is $15 a month or $144 a year. Checkout is a waitlist.

HTML
<form action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="en">
  <label>Name <input type="text" name="name" required></label>
  <label>Email <input type="email" name="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <input type="text" name="botcheck" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px" aria-hidden="true">
  <button type="submit">Send</button>
</form>

Add it to the site you already publish

Static hosts serve files. They do not run PHP when a visitor clicks Send. The form in the browser calls Formgong, so the host stays a folder of HTML.

  1. Create a form in Formgong and copy the access key. It starts with fk_.
  2. Paste the HTML form into the page your static host already serves.
  3. Replace fk_your_access_key. Leave access_key, _lang and botcheck in the form.
  4. Publish the same files you already publish. The browser posts the form. No PHP and no function.
  5. Send a test on the live URL. Connect Telegram in Formgong if you want a phone alert.

A mailto: action opens the visitor's mail app. It does not give you an inbox, and many browsers block it. It is not a contact form you can rely on.

Stay on the page with fetch

The HTML form above works with JavaScript off. If you want to stay on the page, post the same fields with fetch.

Send FormData. Do not set Content-Type yourself. The browser must set the multipart boundary. Send Accept: application/json so the reply is JSON. Disable the button while the request runs, so a second click does not create a second lead.

Check response.ok and result.success. Then call form.reset(). On the free plan the email is still the daily digest. The lead is in the inbox either way. Telegram is instant.

fetch example
const form = document.querySelector("form");
form.addEventListener("submit", async (event) => {
  event.preventDefault();
  const button = form.querySelector("button");
  button.disabled = true;
  try {
    const response = await fetch("https://formgong.com/submit", {
      method: "POST",
      headers: { Accept: "application/json" },
      body: new FormData(form),
    });
    const result = await response.json();
    if (response.ok && result.success) form.reset();
  } finally {
    button.disabled = false;
  }
});

Notes for each host

GitHub Pages

GitHub's docs, checked on 6 October 2026, call GitHub Pages a static site hosting service. It takes HTML, CSS and JavaScript from a repository, optionally runs a build, and publishes a website. It does not give you a form inbox. Put the form in the page and post it to Formgong. Jekyll sites have a Jekyll contact form guide. The GitHub Pages contact form article walks through the same idea.

Cloudflare Pages

Cloudflare's Pages tutorial, last updated 21 April 2026, adds an HTML form by posting to a form service. You do not write server-side code for the contact form. There is no Formgong page for Cloudflare. Use the HTML contact form and the same snippet on this page. The tutorial itself uses Formspree. That is a fair choice if you want Formspree's plugins and accept 50 free submissions a month.

Netlify

If the site stays on Netlify and email or Slack is enough, Netlify Forms can be the simpler product. Checked on 6 October 2026, submissions are free and unlimited on credit-based plans, and only for sites hosted on Netlify. That change is dated 14 April 2026. Accounts opened before 4 September 2025 are legacy plans: 100 submissions per site each month. JavaScript forms need a hidden static copy. There is no native Telegram. The Netlify contact form guide, the Formgong vs Netlify Forms page and the Netlify Forms alternative roundup split those cases.

Vercel

The Vercel contact form guide on this site says Vercel has no form inbox. A static export cannot use Server Actions. Next.js documents that limit. A Route Handler plus an SMTP key is the usual extra, and you only need it when the submit must change your own database. The form on this page does not need that.

Where to put the form

Each generator has its own place for the HTML, and its own limit. Open the guide for the tool you use.

Form backends for a static site

These rows were read from each service's public page on 6 October 2026. Prices are USD list prices. We build Formgong, so the first row is ours. The last column is where that service is the better fit.

Public pages, checked 6 October 2026. Prices in USD, as of Oct 2026.
ServiceFree planEmail on freeTelegramWhere they win
Formgong300 a month, unlimited forms, 1 recipient, 30-day retentionDaily digest at 08:00 next morning, previous dayInstant, every planTelegram on free, EU storage, any host
SimpleForm100 a month, 3 forms, 7-day storageEmail per submission. The homepage says “Get emails instantly.”Not named on the homepageInstant email on the free plan, any static host
Formspree50 a month, 30-day archive, 0 GB file uploadsEmail is part of the product. This page does not quote a digest rule.Yes on the free column of the plans pagePlugins, team plans, and paid uploads of 10 files at 25 MB each
Web3Forms250 a month, unlimited forms, 30-day historyEmail is the free path. Integrations are paid.Pro only, on the docs page checked todayA larger free history window on paid plans, and 5 GB of files on Pro
Forminit1 form, 100 a month, file upload, 100 MB storageThe pricing page says instant email alertsNot listed on the pricing pageFile upload on the free plan, with instant email
Netlify FormsUnlimited on credit-based plans, Netlify hosting onlyEmail notifications. No native Telegram.NoPrice, if the site already lives on a credit-based Netlify plan and email or Slack is enough

SimpleForm wins the cell Formgong loses on purpose. Our free plan does not email each lead. Theirs does, at 100 submissions a month, three forms and seven days of storage. File uploads there start on Pro, at $9 a month, with a 5 MB cap per file. Agency is $29 a month. Over the limit, their FAQ says the extra POST returns 402 and is not stored.

Formspree's plans page lists Free at $0 and 50 submissions a month. Personal is $15 a month or $120 a year. Professional is $30 a month or $240 a year. Business is $90 a month or $720 a year. The free column shows 0 GB of file uploads. A feature note on the same page says you can accept up to 10 files of 25 MB each. That is a real win once you are on a paid plan. The first plan column marks Discord, Slack and Telegram as Yes, and leaves Airtable blank. Later columns mark Airtable Yes. Data may be processed in the United States and other countries, which their privacy policy already says. Formgong stores submissions in Cloudflare D1 with EU jurisdiction.

Web3Forms' llms.txt, last modified 30 September 2026 and fetched today, lists Free at 250 a month. Starter is $49 a year for 5,000, with no file uploads. Pro is $15 a month or $149 a year for 10,000, with file uploads, autoresponders and 5 GB. Agency is $39 a month or $399 a year for 20,000. The same file says infrastructure is on AWS and calls the service GDPR friendly. It does not say the inbox is in the EU. The Telegram doc says the integration is a Pro feature. An older line on some pages said Starter. The doc we opened today says Pro, so this page says Pro.

Forminit's pricing page title says starting at $19 a month. The yearly view we opened shows Pro as $16 a month and $190 billed yearly, for 5 forms and 5,000 submissions. Free includes one form, 100 submissions, file upload, 100 MB of storage and instant email alerts. That free file upload is where Forminit wins. Formgong accepts PDF, JPEG and PNG only, up to 3 files, 5 MiB each and 10 MiB combined. Free storage is 100.0 MiB, Pro is 1.0 GiB and Business is 5.0 GiB. Uploads also need a verified email and your Turnstile site key. The Telegram alert does not attach the file.

Netlify Forms win when you are already on Netlify and you do not need Telegram or a form that moves to another host. Do not pick Formgong because you want a higher free cap. Credit-based Netlify plans are already unlimited. Legacy accounts opened before 4 September 2025 still have 100 submissions per site each month. That is a billing fact, not the pitch on this page.

Formgong's free plan is 300 submissions a month. Spam does not count toward that limit. At the limit there is a 20% grace, then submissions are held until you upgrade or the month resets. There is no overage charge. One recipient on Free. Per-message email starts on Pro. The lead is in the inbox even when email is only the digest.

Questions

Can a static website have a contact form?

Yes. The page stays a static file. The browser posts the fields to Formgong, which stores the lead. Telegram is instant. On the free plan, email is a daily digest.

What is a free contact form for a static website?

A form you paste into HTML, with no PHP and no server of your own. Formgong's free plan includes 300 submissions a month, unlimited forms, a daily email digest and instant Telegram.

Does it work on GitHub Pages, Netlify and Vercel?

Yes. Those hosts only serve the page. The POST goes to Formgong. You can move the same form to another host without rewriting it.

Do I need a serverless function?

No, not for a contact form. Add a function only when the submit must change your own database or check a signed-in user.

Is email instant on the free plan?

No. Free sends one digest the next morning at 08:00 in your time zone, for the previous day, to one address. Telegram is instant on every plan. Pro and Business email each lead.

Sources

Checked on 06.10.2026 against these public pages: Gatsby: building a contact form, GitHub Pages and Jekyll, Eleventy docs, Netlify Forms usage and billing, Netlify pricing update, 14 April 2026, Next.js static exports, GitHub Docs: What is GitHub Pages?, Cloudflare Pages: add an HTML form with Formspree, Formspree plans, Web3Forms llms.txt, Web3Forms: Telegram integration, SimpleForm, Forminit pricing, Netlify legacy pricing plans.

← Formgong