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.
How it works
Three steps to production forms.
Prepare delivery
Create a FormsFort form, set its notification destination, and copy the public access key.
Create a Liquid include
Save the markup as _includes/contact-form.html and render it from the page or layout that needs it.
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 %} --> Migration
Migration checklist.
Move an existing form in minutes without rebuilding markup.
Create a FormsFort form and copy the public access key.
Save the markup as _includes/contact-form.html.
Render the include with {% include contact-form.html %} on the contact page.
Keep the action at https://api.formsfort.com/submit and use method=POST.
Leave Liquid responsible for templating only; do not add a Ruby submission handler.
Run jekyll build, deploy _site, and send a production-domain test.
Related Resources
Keep building from here.
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.