splitforms.com

Contact form · GitHub Pages

GitHub Pages contact form, no backend needed.

GitHub Pages only serves static files, so it has no server to catch a form submission. Point your form at one splitforms endpoint and every message lands in your inbox and dashboard — spam-filtered, free for up to 500 a month.

  • 500 free / mo
  • 5-step setup
  • No backend
A GitHub Pages contact form submitting to the splitforms hosted endpoint

No backend or PHP

GitHub Pages has no PHP runtime or mail server. Your static form posts to one hosted endpoint instead.

Spam filtered

Honeypot, time-trap, and per-IP rate limits screen bots before they ever reach your inbox.

Instant email

Every submission is stored in your dashboard and emailed to you within seconds.

Copy-paste ready

GitHub Pages contact form HTML, ready to paste.

Drop this into index.html, a contact page, or a Jekyll partial, point the action at the endpoint, and add your access key. The whole change is a single attribute — no PHP, no plugin, no build step.

Get your free access key
index.html
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <input type="hidden" name="redirect" value="https://yourdomain.com/thanks" />

  <label>
    Name
    <input name="name" autocomplete="name" required />
  </label>
  <label>
    Email
    <input name="email" type="email" autocomplete="email" required />
  </label>
  <label>
    Message
    <textarea name="message" required></textarea>
  </label>
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
  <button type="submit">Send message</button>
</form>

How to add it

How to add a contact form to GitHub Pages.

Same five steps whether the page is plain HTML or a Jekyll layout — no build plugin, no serverless function, no change to how Pages deploys your site.

Create a free access key

Sign up for splitforms and copy the access key for your form from the dashboard — no credit card required.

Paste the form into your page

Drop the HTML form below into index.html, contact.html, or a Jekyll _includes/contact.html partial. No build step or plugin needed.

Add spam protection

Keep the hidden botcheck honeypot field empty and add a form_loaded_at time-trap field so instant bot fills get filtered before they reach your inbox.

Push to GitHub Pages

Commit and push to your Pages branch as usual. GitHub rebuilds and redeploys the static site automatically — nothing changes on the hosting side.

Test and check your dashboard

Submit the live form once. The entry should appear in your splitforms dashboard and land in your inbox within seconds.

Why an endpoint

Why a GitHub Pages contact form needs an endpoint.

The browser renders your form fine — the problem is the submit. GitHub’s servers have no process to catch the POST, validate it, or email it to you. splitforms receives that request at a hosted HTML form backend, so your repo stays fully static and nothing about how Pages deploys has to change.

  • No PHP runtime or SMTP server to send mail on submit
  • No Jekyll plugin — those run at build time, not on submit
  • No serverless function, database, or deploy pipeline change
A static GitHub Pages form POSTing to a hosted endpoint that routes the message to your inbox

Spam protection

How do you stop spam on a GitHub Pages form?

The page stays fully static — splitforms filters server-side before a submission reaches your dashboard. The hidden botcheck honeypot and the form_loaded_at time-trap catch bots, and per-IP rate limits stop floods. See the full spam protection reference in the docs.

  • Honeypot: the hidden botcheck field must stay empty
  • Time-trap: form_loaded_at flags instant bot submissions
  • Rate limits: 6 / min and 20 per 15 min per IP, then HTTP 429
Server-side spam filtering for a static GitHub Pages contact form

Jekyll & custom domains

Does a GitHub Pages form work with Jekyll and a custom domain?

Your form keeps its existing fields, layout, and styling — only the action URL points at splitforms. The same static HTML works for plain pages, a reusable Jekyll contact form partial, and custom domains alike.

  • Works with plain HTML, Jekyll layouts, and _includes partials
  • Add your custom domain to the form's allowed-domains list
  • Pro ($5/mo) adds signed webhooks and CSV, XML, PDF export
A GitHub Pages contact form working across Jekyll and custom domains via splitforms

How SplitForms works

From form to workflow in 3 simple steps.

Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

Point your form to your unique SplitForms endpoint. That's it.

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Connect your favorite tools and automate everything

SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js. And with Stripe connected, your forms can take payments too.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See plans →

Trusted by indie teams and agencies shipping forms worldwide

PETAL/COKRAFT.DELINEAR-XBUILD.DEVSTUDIO 71MERIDIANFRAME&CO

Testimonials

Loved by developers shipping at every scale.

40 quotes on record — from indie hacks to agency migrations.

Questions

GitHub Pages contact form questions.

View all FAQs
Can GitHub Pages process contact forms?

No. GitHub Pages only serves static files, so it cannot run PHP, Node, Ruby, or a server-side mail handler for each submission. A hosted form backend receives the POST request instead.

Does this work with Jekyll on GitHub Pages?

Yes. Paste the form into a page, layout, or _includes/contact.html partial. The rendered HTML submits to splitforms, so no unsupported Jekyll plugin is required.

Do I need JavaScript for a GitHub Pages contact form?

No. A native HTML form with method POST works on its own. The only exception is the optional form_loaded_at time-trap field, which needs a few lines of script to stamp the load time — everything else works with plain HTML.

How do I stop spam on a GitHub Pages form?

Add the hidden botcheck honeypot field and the form_loaded_at time-trap field, then let splitforms run server-side spam checks and IP rate limiting. That keeps the page static while filtering junk submissions before they reach your inbox.

Is there a free contact form for GitHub Pages?

Yes. The splitforms Free plan includes 500 submissions a month, unlimited forms, owner email notifications, spam filtering, and dashboard storage — no credit card required.

Does a GitHub Pages contact form work with a custom domain?

Yes. If your GitHub Pages site uses a custom domain, add that domain to the form's allowed-domains list in your splitforms dashboard so submissions sent from it are accepted.

Can I redirect visitors to a thank-you page after they submit?

Yes. Add a hidden redirect field with your thank-you page URL, and splitforms sends the visitor there after a successful submission.

What happens if my GitHub Pages form gets spammed with rapid submissions?

splitforms rate-limits submissions to 6 per minute and 20 per 15 minutes per IP address. Requests past that limit get an HTTP 429 response instead of reaching your dashboard.

Simple pricing

Start free. Scale when you need more.

Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, Stripe payments, and higher submission limits.

Free

$0
 

Free forever

Best for testing

For side projects and indie devs.

  • 500 submissions / mo
  • Unlimited forms
  • Email notifications included
  • Honeypot spam filtering
  • Submissions dashboard
  • MCP setup stays free
  • No credit card required

3-Year

$59/ first 3 years
was $99 · save 40% · new-user price

Pay $59. 3 years sorted.

  • 15,000 submissions / mo
  • Unlimited forms
  • Everything in Pro
  • $59 for 3 years, then $59/year
  • Long-term discount
  • Priority support included
  • Vote on the roadmap

No credit card required on Free • Cancel anytime