Jekyll

Contact form for Jekyll without a backend.

Jekyll's Liquid templates produce static files in _site; they do not process requests after deployment. Put a reusable include in the site, post standard HTML to FormsFort, and deploy the generated files anywhere.

Start paid plan Book free migration

How it works

Three steps to production forms.

01

Prepare delivery

Create a FormsFort form, set its notification destination, and copy the public access key.

02

Create a Liquid include

Save the markup as _includes/contact-form.html and render it from the page or layout that needs it.

03

Publish _site

Run jekyll build and upload _site. The static host only serves files; FormsFort handles the browser's POST.

Setup

Jekyll Liquid include with contact form

<!-- _includes/contact-form.html -->
<form action="https://api.formsfort.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">

  <fieldset>
    <legend>Send a question</legend>

    <label for="jekyll-name">Your name</label>
    <input id="jekyll-name" name="name" type="text" autocomplete="name" required>

    <label for="jekyll-email">Reply-to email</label>
    <input id="jekyll-email" name="email" type="email" autocomplete="email" required>

    <label for="jekyll-topic">Topic</label>
    <select id="jekyll-topic" name="topic" required>
      <option value="">Choose a topic</option>
      <option value="support">Support</option>
      <option value="partnership">Partnership</option>
    </select>

    <label for="jekyll-message">Question</label>
    <textarea id="jekyll-message" name="message" rows="5" required></textarea>
  </fieldset>

  <input type="checkbox" name="botcheck" style="display:none">
  <button type="submit">Send question</button>
</form>

<!-- Render from a page or layout with: {% include contact-form.html %} -->
Start paid plan

Migration

Migration checklist.

Move an existing form in minutes without rebuilding markup.

01

Create a FormsFort form and copy the public access key.

02

Save the markup as _includes/contact-form.html.

03

Render the include with {% include contact-form.html %} on the contact page.

04

Keep the action at https://api.formsfort.com/submit and use method=POST.

05

Leave Liquid responsible for templating only; do not add a Ruby submission handler.

06

Run jekyll build, deploy _site, and send a production-domain test.

FAQ

Common questions.

Can Liquid process a submitted Jekyll form?

No. Liquid runs during the Jekyll build and _site contains static HTML. A hosted endpoint such as FormsFort must accept the POST after deployment.

Will this work on GitHub Pages or another static host?

Yes. Any host that serves the generated _site files can display the form. Submission delivery goes to FormsFort rather than the Jekyll host.

Should the access key be a Jekyll secret?

Use the public FormsFort access key in the rendered form. Do not put admin credentials, webhook secrets, or private API tokens in Liquid or browser code.

Can the include be used on multiple Jekyll layouts?

Yes. Render the same include wherever needed; each rendered form can use the same endpoint and access key while FormsFort records the page submission.

Stop managing form servers.

Create a production form endpoint, migrate your first form free, and scale when you are ready.

Start paid plan Book free migration