Content

Contact Page + Formspree Setup

How to set up the GAX Pro contact page with Formspree. Covers form fields, Formspree account setup, form ID configuration, and testing.

Contact Page + Formspree Setup

What the Contact Page Does

The contact page is a standalone page at /contact/. It uses a form to send messages to your email. The form is powered by Formspree — a form backend that handles submissions without a server.

The contact page is defined by:


content/contact.md

It uses layout: contact, which renders the form fields and a sidebar with direct links.

Frontmatter Structure


---
layout: contact
title: "Contact GAX Pro — Theme Orders & Custom Builds"
description: "Contact GAX Pro for premium theme questions, custom website builds, or SEO setup."
image: "/images/go-ssg9.webp"
canonical: "https://gaxpro.axcora.com/contact/"
formspree_id: xyourformspreeid

section_tag: "Get in Touch"
heading: "Contact GAX Pro"
subheading: "Questions about a theme, a custom build, or theme customization?"

form:
  name_label: "Your Name"
  name_placeholder: "Your name"
  email_label: "Email"
  email_placeholder: "[email protected]"
  topic_label: "What do you need?"
  topic_options:
    - value: theme-question
      label: "Question about a premium theme"
    - value: theme-purchase
      label: "Buying a theme (Gumroad)"
    - value: custom-build
      label: "Custom website + SEO build"
    - value: theme-customization
      label: "Theme customization for my brand"
    - value: migration
      label: "Migration from Hugo / Jekyll / 11ty"
    - value: general
      label: "General question"
  message_label: "Project details"
  message_placeholder: "Tell us about your site, the theme you are interested in, or the custom build you need."
  submit_text: "Send Message"
  honeypot_label: "Do not fill this field if human:"
---

The key field for the form is formspree_id. This is the only part you must change to make the form work.

Create a Formspree Account

Formspree is free for the first 50 submissions per month. For most contact forms, that is enough.

1. Go to formspree.io and click Sign up

2. Register with your email or with GitHub

3. Verify your email if prompted

The free plan does not require a credit card.

Create a New Form

After signing in:

1. In the Formspree dashboard, click New Form

2. Give the form a name — for example, GAX Pro Contact

3. Set the email address where submissions should be sent

4. Click Create Form

Formspree creates the form and shows a form endpoint:


https://formspree.io/f/xyzabcde

The last part — xyzabcde — is your form ID. You will use this in the contact page.

Add the Form ID to the Contact Page

Open content/contact.md and find the formspree_id field:


formspree_id: xyourformspreeid

Replace xyourformspreeid with your actual form ID:


formspree_id: xyzabcde

Save the file. The contact form now sends submissions to Formspree, which forwards them to your email.

Test the Form

Run the site locally:


./gax

Open http://localhost:8080/contact/ in the browser. Fill in the form with a test message and submit it.

After submitting:

1. Check the Formspree dashboard — the submission should appear under your form

2. Check the email inbox — Formspree forwards the submission to the email you set

If the submission appears in both places, the form works.

If the submission fails, check:

  • The form ID is correct — no extra spaces, matches the Formspree dashboard
  • The Formspree account is verified
  • The browser console shows no JavaScript errors

Customize the Form Fields

The form fields are defined in the frontmatter. To change them, edit these fields:

  • name_label — label for the name input
  • email_label — label for the email input
  • topic_label — label for the topic dropdown
  • topic_options — the list of dropdown options
  • message_label — label for the message textarea
  • submit_text — text on the submit button

To add a new topic option, add a new value and label pair:


topic_options:
  - value: theme-question
    label: "Question about a premium theme"
  - value: hosting
    label: "Hosting and deployment help"

To remove an option, delete its block.

Spam Protection

The form includes a honeypot field — a hidden input that humans do not fill but bots do. When a bot fills it, the submission is rejected.

Formspree also has built-in spam filtering on paid plans. For the free plan, the honeypot plus Formspree's basic filter handles most cases.

If you receive spam despite these protections:

1. Enable reCAPTCHA in the Formspree dashboard

2. Or upgrade to a paid Formspree plan for advanced filtering

Formspree Free Plan Limits

The free plan includes:

  • 50 submissions per month
  • Basic spam filtering
  • Email notifications
  • Dashboard access

If your form receives more than 50 submissions per month, Formspree prompts you to upgrade. Paid plans start at a small monthly fee.

Common Errors

Form submits but no email arrives — check the Formspree dashboard for the submission. If it is there, the email is being filtered as spam. Check the spam folder.

Form shows an error on submit — the form ID is wrong or the Formspree account is not verified. Check both.

Honeypot rejects real submissions — the honeypot field is visible to users. It should be hidden with CSS. Check that the template applies the hidden class.

Form does not appear on the page — the layout: contact line is missing, or content/contact.md does not exist.

Next Step

The contact form works. Next, add articles to collections: