A Jekyll contact form that works on GitHub Pages
GitHub Pages can't run server code, so a Jekyll form needs somewhere to send its data. Point it at your Formbold endpoint and each submission goes to your inbox.

The include file
This form. Save it as _includes/contact-form.html, then add {% include contact-form.html %} to any page or layout. Swap in your own form ID for FORM_ID.
Three steps, no plugins
Three steps, no plugins.
Create a form
In the dashboard, hit Create New Form. Naming it after the repo helps once you have a few sites.
Save the include
Paste the form into _includes/contact-form.html with your endpoint in the action attribute.
Test with jekyll serve
Run bundle exec jekyll serve, submit once on localhost:4000 and check Submissions. Then push to GitHub.
Why it builds fine on GitHub Pages
A place for the form to go. Storage, email, spam checks and integrations, with no change to your build.
Works on GitHub Pages
No plugins, so it builds fine with GitHub Pages and its plugin allowlist.
reCAPTCHA with no setup
Because the include is a plain HTML form, Automatic reCAPTCHA needs no keys. Switch it on next to Basic Spam Filter.
File uploads
Starter and higher. The include needs enctype="multipart/form-data" plus a file input with a name.
Thank-you page
On Starter and higher, set a Redirect URL to a page like /thanks/ in your site.
What do Jekyll users ask?
GitHub Pages, Markdown and redirects.
Still have a question?
The docs cover setup, framework guides, integrations and spam protection, step by step.