FormsFort

Hosting

FormsFort hosting guide for static hosts, server-side submissions, environment checks, and staging drills.

Hosting

Deploy static forms with production controls. Browser-first submissions work from static hosting. Backend submissions need explicit form-level sender IP safelists and observability evidence.

Supported hosts

Vercel

Static browser forms work without server code. API routes or server actions need paid/manual server IP safelists.

Netlify

Use static HTML forms or browser fetch. Netlify Functions are backend submissions and should use exact sender IP controls.

GitHub Pages

Use the plain HTML form path or client-side JSON fetch from the deployed domain.

Cloudflare Pages

Browser submissions work from Pages; Workers that submit server-side need a sender IP safelist or worker egress control.

DigitalOcean

App Platform static sites use browser submissions. Droplets and app backends should use sender IP safelists.

AWS

S3 and CloudFront sites can post directly from the browser. Lambda/API Gateway submissions are server-side traffic.

Self-hosted sites

Configure exact allowed domains for browser traffic and exact sender IPs for backend traffic.

Staging environments

Use separate forms and access keys so load tests, captcha settings, and suppression changes cannot affect production.

Vercel static deploy

The Web3Forms-style Vercel path is a static form deployed from Git. Use browser submissions unless you intentionally route through a backend with a paid/manual sender IP safelist.

1. Create the HTML or framework page with a FormsFort form.
2. Commit it to a Git repository.
3. In Vercel, create a new project and import the repository.
4. Deploy the project.
5. Open the deployed URL and submit the form.
6. After a successful test, add the deployed domain to the form allowed-domain list.

Netlify static deploy

Netlify works the same way for browser forms. Netlify Functions are backend traffic and should be used only when the form has server-side controls enabled.

1. Create the HTML form and confirm every field has a name.
2. Push the site to a Git repository.
3. In Netlify, create a new site from Git.
4. Connect the repository and deploy.
5. Submit the published form and verify the FormsFort response.
6. Add the Netlify production domain and any custom domain to allowed domains.

GitHub Pages

GitHub Pages is a pure static host, so plain HTML forms and client-side fetch submissions work without a server.

git init
git add index.html
git commit -m "first contact form"
git branch -M main
git remote add origin YOUR_REPOSITORY_URL
git push -u origin main

# Repository settings:
# Pages > Deploy from branch > main

Cloudflare, DigitalOcean, and AWS

Use the static-site model for Cloudflare Pages, DigitalOcean App Platform static sites, S3, and CloudFront. Workers, Functions, Droplets, Lambda, and API Gateway submissions are backend traffic.

Static host:
- Submit directly from the browser.
- Add the deployed domain to the form allowed-domain list.
- Keep the public access key in the rendered page.

Backend or function:
- Use a paid/manual entitlement.
- Add exact sender IP controls where the platform supports stable egress.
- Forward only expected fields and preserve X-Request-Id for support.

Production checks

Before launch:

  • Verify the recipient email
  • Submit from the deployed production URL
  • Enable allowed domains for exact production hostnames
  • Add captcha for exposed/high-traffic forms
  • Keep server-side submissions disabled unless IP safelisted
  • Run delivery workers for email, webhooks, uploads, and Google Sheets

On this page