Contact form
Add a working contact form to Signal's Contact page with a Formspree (or any JSON) endpoint, reason chips, and a graceful mailto fallback when JavaScript is off.
Signal's Contact page pairs your own "reasons to get in touch" with a working message form. Create a page slugged contact (see Page templates); the page body becomes the left column, and the form sits on the right.
Set the form endpoint
The form posts to a JSON form endpoint — Formspree works well — that you provide via a meta tag in the Contact page's Code Injection. It's never hardcoded in the theme.
Create your form endpoint (e.g. a new Formspree form) and copy its URL.
Open the Contact page in Ghost, go to Page settings → Code injection, and add this to Page header:
<meta name="signal-contact-form" content="https://formspree.io/f/XXXXXXXX">Save the page. The form now submits to your endpoint, with an inline success or error message — no page reload.

Contact page - Editor view

Contact page - Code injection

Reason chips
The form includes quick reason chips so messages arrive pre-labelled: Pitch a guest (the default), Sponsorship, Press, and General. The chosen reason is sent along with the message.
The mailto fallback
The left column is your page body — write it as a few "reasons" with email links (Ghost's product or button cards work well). If a visitor has JavaScript off, or you haven't set an endpoint yet, the form simply doesn't intercept and those email links remain the way to reach you.
Straight quotes only
Paste the meta tag into a plain-text field (or Ghost's Code Injection box directly). If an editor turns the quotes into "smart quotes", HTML won't read the tag.
Related
- Page templates — create the Contact page.
- Social links — the social icons shown alongside your reasons.
Membership
Signal's membership features — the Subscribe page with your Ghost tiers and a donate button, Portal sign-in, the newsletter signup, and members-only episodes.
Code injection
Restyle any part of Signal with a few lines of CSS in Ghost's Code injection. Learn the stable data-* hooks, what's safe to target, and how to scope rules.