Contact Form for Ghost Blog — No Plugin Needed

Ghost CMS has no built-in contact form — only a members/subscription portal for paid sign-ups — so there's no way for readers to message you out of the box. splitforms fixes that: paste one HTML form into a Ghost HTML card that posts to https://splitforms.com/api/submit, and every message lands in your dashboard and inbox within seconds. No theme edit, no plugin, no member portal required.

contact-form.html

This is what your Ghost readers will see

Try it — fill it out and hit send. Real working form.

What happens next ⚡

  • 📥Submission received — stored in your searchable dashboard
  • 📧Email notification — delivered to your inbox instantly
  • 🛡️Spam filtered — AI classifier + honeypot, no CAPTCHA
  • 🔗Webhook fired — optional: forward to Slack, Discord, Sheets
  • ↩️User redirected — to your thank-you page
Response time
14ms
median edge latency across 14 regions
Get Free Access Key →

500 submissions/month free · No credit card

How to Add a Contact Form to a Ghost Blog (Step by Step)

  1. Get your free key at splitforms.com/login — Free plan, no credit card, 500 submissions/month included
  2. In Ghost Admin, edit any page or post
  3. Click the + button and add an HTML card
  4. Paste the form code below (replace YOUR_ACCESS_KEY)
  5. Keep the small <script> tag under the form — it sets a timestamp that pairs with the honeypot to block spam bots
  6. Publish — submissions arrive in your dashboard and inbox (email notifications are free on every plan)
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="hidden" name="subject" value="New message from Ghost blog">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <label>Name</label>
  <input type="text" name="name" required>

  <label>Email</label>
  <input type="email" name="email" required>

  <label>Topic</label>
  <select name="topic">
    <option value="editorial">Editorial</option>
    <option value="advertising">Advertising</option>
    <option value="collab">Collaboration</option>
  </select>

  <label>Message</label>
  <textarea name="message" rows="4" required></textarea>

  <!-- Honeypot: must stay empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Send</button>
</form>
<script>
  document.getElementById('form_loaded_at').value = Date.now();
</script>

Why Ghost Doesn't Have a Native Contact Form

Ghost is built around publishing and paid memberships, not lead capture. The closest thing to a "form" in stock Ghost is the members/subscription portal, which handles paid or free member sign-ups — not general reader messages, advertising inquiries, or bug reports. Search Ghost's own docs for "contact form" and you won't find one built in. The standard fix is an HTML card pointed at a hosted form backend like splitforms: because the form posts straight from the visitor's browser to splitforms, nothing touches your Ghost theme files, so it survives every theme switch and Ghost version upgrade.

Ghost Contact Form vs. Newsletter Signup — What's the Difference

Ghost's membership system already handles newsletter subscribers — visitors sign up as free members and get your posts by email. A contact form is a different need: it lets readers, advertisers, or collaborators message you directly, without becoming a member. You can run both side by side. If you want a separate email list that isn't tied to Ghost membership, a splitforms newsletter signup form template collects addresses straight into your dashboard, and a webhook can forward them into Mailchimp or another list tool.

Send Ghost Contact Form Submissions to Slack, Notion, or Your Inbox

Every splitforms plan, including Free, emails you the moment a submission arrives — no setup beyond your access key. If you want submissions routed further, Starter ($1/mo) adds webhooks and one-click integrations: connect Notion, Airtable, or Google Sheets so every message becomes a row or page automatically, or point a webhook at Slack, Discord, Telegram, or a generic endpoint. Webhooks fire once, signed with HMAC-SHA256 (a sha256= prefix on the signature header), with an 8-second timeout — there's no automatic retry, so make sure your receiving endpoint responds quickly. See the full list of integrations or read the webhook docs.

FAQ

How do I add a contact form to a Ghost blog?

Edit any Ghost page or post, switch to the HTML card, and paste an HTML form that points to a hosted form backend like splitforms (action="https://splitforms.com/api/submit"). No Ghost theme edit or plugin required — publish the page and the form is live.

Does Ghost have a built-in contact form?

No. Ghost ships a members/subscription portal for paid and free member sign-ups, but no native contact form. Most publishers add one with an HTML card pointed at a hosted form backend, since building a working submit handler in Ghost's theme layer isn't practical for most sites.

Can I use this for newsletter signups on Ghost?

Yes, but it's a separate thing from Ghost's own memberships. Ghost's built-in members feature already handles subscribers who get your posts by email. A splitforms form is for a different list — for example, occasional announcements — and Mailchimp has a native 1-click integration; other tools connect via a generic webhook (Starter, $1/mo).

Is a contact form for Ghost really free?

Yes. splitforms' Free plan includes unlimited forms, 500 submissions/month, spam filtering, the dashboard, and email notifications to your inbox — no credit card. If your blog outgrows that, Starter is $1/month for 1,000 submissions plus webhooks and integrations, and Pro is $5/month for 5,000.

Will a hosted contact form break when I switch Ghost themes?

No. The form is plain HTML sitting in an HTML card — it posts directly from the visitor's browser to splitforms and never touches your theme files. Switching themes, updating Ghost, or moving hosts doesn't affect it, and there's no plugin to keep updated.

How do I stop spam on a Ghost contact form?

The code below includes two built-in traps: a botcheck honeypot field that must stay empty (bots fill every field; real visitors never see it) and a form_loaded_at timestamp that flags submissions sent faster than a human could type. splitforms also rate-limits at 6 submissions per minute per IP and applies server-side content heuristics automatically, so most sites don't need a CAPTCHA at all.

Can Ghost contact form submissions go to Slack or Notion instead of just email?

Yes, on Starter ($1/mo) and above. Connect the native Slack, Notion, Google Sheets, Airtable, Discord, Telegram, WhatsApp, or Mailchimp integration in your dashboard, or add a generic webhook, and every submission is forwarded the moment it arrives — no Zapier account needed for those native ones.

Publishing Somewhere Else Too?

The same HTML-card-plus-hosted-backend approach works anywhere you can paste HTML — see the guides for Notion sites, Squarespace, and static site generators. Full API details, including file uploads and rate limits, are in the splitforms docs.

Add a form to your Ghost blog

Free, 500 submissions/month, no plugin.

Get your free access key →

Questions? Email hello@splitforms.com