splitforms.com

Contact form · Ghost

Contact form for Ghost blog — no plugin.

Paste one HTML card into any Ghost page and every message lands in your inbox and dashboard — no plugin, no theme edit, no members portal.

  • 500 free / mo
  • No plugin
  • 2-min setup
A contact form pasted into a Ghost HTML card, submitting to the splitforms hosted backend

No plugin

Plain HTML in a Ghost card — nothing to install or keep updated.

Spam filtered

A honeypot and form_loaded_at time-trap screen bots before your inbox.

Instant email

Every submission is stored and emailed to you within seconds.

Copy-paste ready

Add a contact form to Ghost with one HTML card.

Drop this into a Ghost HTML card, replace YOUR_ACCESS_KEY, and publish. That's the whole integration — no plugin, no theme edit, no server.

Get your free access key
ghost-html-card.html
<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>

Setup

How to add a contact form to a Ghost blog.

No theme edit, no plugin. Paste one HTML card and publish — these are the five steps, whether it goes on a page or a post.

Get your free access key

Create a free splitforms account at splitforms.com/login and copy your access key from the dashboard. The Free plan includes 500 submissions/month, no credit card.

Open the HTML card in Ghost

In Ghost Admin, edit any page or post, click the + button, and add an HTML card.

Paste the form code

Paste the form HTML above into the HTML card and replace YOUR_ACCESS_KEY with your real access key.

Keep the spam-trap script

Leave the small <script> tag under the form in place — it timestamps the page load (form_loaded_at) so splitforms can reject bot submissions that arrive too fast.

Publish

Publish the page. Submissions now land in your splitforms dashboard and your inbox — email notifications are free on every plan.

Why Ghost needs this

Does Ghost have a built-in contact form? No.

Ghost is a publishing platform first — its data model is built around posts, tags, and memberships, not lead capture. The closest thing in stock Ghost is the members/subscription portal, which registers free or paid subscribers, not general reader messages. Rather than fork your theme or run a server just to handle one POST request, most publishers paste an HTML card pointed at a hosted form backend like splitforms — nothing to maintain, and it works on every Ghost host, including managed Ghost(Pro).

  • No plugin, no theme edit — plain HTML in a Ghost card
  • Survives theme switches and Ghost updates untouched
  • Beyond memberships — messages from readers, advertisers, collaborators
A Ghost contact form submission routed to your inbox, dashboard, Slack, and Notion

Spam control

How do you stop spam on a Ghost contact form? Built in.

The code above ships two traps: a 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 — so most Ghost blogs never need a CAPTCHA at all.

  • Honeypot field bots fill and humans never see
  • Time-trap rejects sub-human submission speeds
  • 6/min per-IP rate limit — no CAPTCHA required
Spam bots blocked before a Ghost contact form submission reaches your inbox

Beyond email

Can Ghost contact form submissions go to Slack or Notion? Yes.

On Pro ($5/mo) and above, connect the native Slack, Notion, Google Sheets, Airtable, Discord, Telegram, WhatsApp, or Mailchimp integration — or add a generic webhook, signed with HMAC-SHA256 — and every submission is forwarded the moment it arrives. Want a separate list that isn't tied to Ghost membership? A newsletter signup form collects addresses straight into your dashboard.

  • Native Slack, Notion, Sheets, Airtable, Discord & more
  • Signed webhooks (HMAC-SHA256) — no Zapier account needed
  • Free plan still emails every submission to your inbox
Ghost contact form submissions forwarded to Slack, Notion, and Google Sheets

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

Ghost contact form questions.

View all FAQs
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 (on paid plans, from $5/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, Pro is $5/month for 5,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 above 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 Pro ($5/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.

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