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 > mainCloudflare, 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