phoneContact

Crimson includes a dedicated Contact page with a clean two-column layout:

  • Left column: support email + social links

  • Right column: contact form (optional—only shown when a form endpoint is configured)

Note that the contact form is designed to work with a third-party form service (like Formspree) so submissions can be delivered to your email.

Contact Page in Crimson

Routes and URL

Crimson enables the Contact page using a template route in routes.yaml:

This maps the URL /contact/ to the theme template file contact.hbs. Template routes are the standard Ghost way to map a custom URL to a theme template.


How the Contact page layout works

Two-column layout (default)

When a CONTACT_ENDPOINT is provided, the Contact page displays:

  • Left column: social links + support email

  • Right column: contact form

Contact Page with Contact Form

Single-column layout (when the form is disabled)

If no contact endpoint is configured:

  • The contact form is hidden

  • The page becomes single column (only the left column is shown)

Contact page without Contact Form
circle-check

Configure the Contact email

Crimson pulls the “Contact email” from your Ghost Portal Support email address.

Why this matters

Ghost Portal uses a default noreply address unless you change it. Ghost explicitly recommends setting a real support email so members can reach you.

In a fresh install, that default “noreply…” address can cause your Contact page email to look wrong (often showing just “noreply”). So set a proper support email first.

How to change the Support email address

  1. In Ghost Admin, open Signup portal

  2. Click Customize

  3. Open the Account page tab

  4. Update the Support email address

  5. Save

Open Portal settings in Ghost
Add the Support email address and save

Ghost confirms the Account tab contains the Support email address setting, and that it’s publicly available inside the Portal interface.

Recommended: Use a real inbox like [email protected] (or a helpdesk email), not a noreply address.


Configure the Contact form

Crimson’s Contact form is powered by a form endpoint. Crimson recommends using a third-party service like Formspree and adding the endpoint so you can receive submissions.

What is the endpoint?

It’s the URL where the form will send data (usually a POST request), for example:

  • a Formspree endpoint - E.g. https://formspree.io/f/abc123efg456

  • your own API endpoint (advanced)

Behavior when it’s not set

If CONTACT_ENDPOINT is an empty string (''):

  • the form is hidden

  • the Contact page becomes single-column (social/email only)

circle-check

Crimson’s Contact page supports:

  • Facebook + X (Twitter) via Ghost’s built-in Social accounts settings

  • Other networks via Crimson Code Injection variables (YouTube, Instagram, WhatsApp, TikTok, Threads, LinkedIn)

To set Facebook and X links, use Ghost’s Social accounts:

  1. Ghost Admin → Settings → Social accounts

  2. Add your Facebook URL

  3. Add your X (Twitter) URL

  4. Click Save

Crimson reads these variables from Ghost Admin → Settings → Code Injection → Site Header.

circle-check

Rules to remember

  • If a social link variable is '', that icon is hidden.

  • If CONTACT_ENDPOINT is '', the contact form is hidden and layout becomes single-column.

  • These values must be set before theme scripts load (the Code Injection page already explains the required window.GLOBAL pattern).

Variables used by Crimson for the Contact Page


Troubleshooting

chevron-rightContact page shows only one columnhashtag

Cause: CONTACT_ENDPOINT is empty. Fix: Add a valid endpoint (then the form column will appear).

chevron-rightEmail shows as ‘noreply’ or looks incorrecthashtag

Cause: Portal support email is still the default noreply. Fix: Set Support email address in Portal → Account tab.

chevron-right/contact/ is a 404 errorhashtag

Cause: routes.yaml wasn’t uploaded or route is missing/incorrect. Fix: Upload routes in Settings → Labs → Routes and confirm the route exists.

chevron-rightForm submits but I don’t receive messageshashtag

Common causes:

  • endpoint is wrong (paste error)

  • your form provider requires verification/activation

  • messages are going to spam

  • your endpoint blocks requests (CORS / rate-limits) if it’s your own API

circle-exclamation

Last updated