Contact Page
The Contact page in Core is a regular Ghost page. There is no special template or route required.
Recommended setup#
The easiest option is to use Formspree with an HTML card.
- Create a page with the slug
contact - Create a form in Formspree
- Copy your Formspree endpoint
- Paste this form into an HTML card and replace the
actionvalue with your endpoint - Publish the page and test one submission
<form action="https://formspree.io/f/your-form-id" method="POST" target="_blank" style="border: 0; padding: 0;">
<label for="name">Your Name</label>
<input name="name" id="name" type="name" />
<label for="email">Your Email</label>
<input name="email" id="email" type="email" required />
<label for="message">Your Message</label>
<textarea name="message" id="message" required></textarea>
<button type="submit">Send message</button>
</form>
Do not leave action="https://formspree.io" as-is. Formspree gives you a custom form URL that you need to paste into the form.
Alternative setup#
- Create a page with the slug
contact - Add your copy and an HTML form using an HTML card
- Add the page to your navigation if needed
Example form markup:
<form action="https://example-form-endpoint.com" method="POST">
<label for="name">Name</label>
<input id="name" name="name" type="text" required>
<label for="email">Email</label>
<input id="email" name="email" type="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Send</button>
</form>
Third-party form services#
Instead of handling submissions yourself, you can connect the form to a third-party service such as Formspree, Web3Forms, Basin, or Getform.
If you already use an external CRM or automation tool, point the form action to that service endpoint instead of building a custom backend.