How it worksFeaturesPricingDocs
Dashboard

Add a working contact form

Static sites can't process a form on their own. Fylo Forms gives each site an endpoint that receives submissions, filters spam, emails you and keeps the leads in your dashboard. Pro and Business plans.

.md

Set it up

  1. Open Forms in the dashboard, choose the site and click Enable. You get a snippet like this:
<form id="fylo-form" method="POST" action="https://fylo.host/api/forms/YOUR_KEY">
  <input type="hidden" name="fylo_ts" value="">
  <input type="hidden" name="fylo_redirect" value="">
  <div style="position:absolute;left:-9999px;" aria-hidden="true">
    <label>Website</label>
    <input type="text" name="fylo_website" tabindex="-1" autocomplete="off">
  </div>

  <input type="text" name="name" placeholder="Your name" required>
  <input type="email" name="email" placeholder="Your email" required>
  <textarea name="message" placeholder="Your message" required></textarea>
  <button type="submit">Send</button>
</form>
<script>
(function () {
  var f = document.getElementById("fylo-form");
  if (f && f.elements["fylo_ts"]) { f.elements["fylo_ts"].value = Date.now(); }
})();
</script>
  1. Paste it into your page where the form should appear and upload the site again (Replace File).
  2. Submit a test message. It arrives by email and appears under Forms → Leads.

Each site has one form endpoint. You can use the same snippet on several pages of that site.

Make it yours

<script>
document.getElementById("fylo-form").addEventListener("submit", function (e) {
  e.preventDefault();
  var f = e.target;
  fetch(f.action, { method: "POST", body: new FormData(f) })
    .then(function (r) { return r.json(); })
    .then(function (d) { f.innerHTML = d.ok ? "<p>Thanks — we will be in touch.</p>" : "<p>Something went wrong. Please try again.</p>"; });
});
</script>

Where leads go

Spam protection

Three layers run before a lead is counted: rate limiting per sender, a hidden honeypot field that only bots fill in, and a time check that rejects forms sent faster than a person could type. Caught submissions are kept out of your inbox and don't count against your monthly limit. Bots always see a normal success response, so they don't learn to adapt.

Limits

Plan Leads per month
Free, Starter
Pro 1,000
Business 3,000

The counter resets each month and is shown on the Forms tab. When the limit is reached, further submissions are rejected (the endpoint answers quota_exceeded) until the next month or an upgrade, so keep an eye on the meter if a campaign is running.

Your visitors' data

You decide what your form collects and why; Fylo stores it for you along with the sender's IP address and country (used for spam protection). Tell your visitors in your own privacy notice. Details: Privacy Policy and Terms.

From an AI app

With the MCP server connected, "add a contact form to my portfolio site" enables the form, places the snippet in the page and republishes; "any new leads this week?" reads them back.

Try it on your site

Everything here is in your dashboard. The free plan needs no card.

Open the dashboard
Copied