> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vulpy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Contact form and submissions in Payload

> The storefront contact form uses a math captcha and stores submissions in the Payload contact-submissions collection as a read-only inbox.

The Vulpy storefront includes a contact form, typically on a `/contact` page. Submissions are stored in the Payload `contact-submissions` collection and are read-only in the admin. This page covers how the captcha works, where to view submissions, and how to extend the form.

<Tip>
  **Ask Fox to review and adjust.** Fox can list recent submissions, add fields, and wire notifications.

  Try prompts like:

  * "Show me the latest contact submissions."
  * "Add a phone-number field to the contact form."
  * "Send new submissions to my Slack webhook."
</Tip>

## How the form works

When a shopper fills out the contact form, the storefront sends the data to Payload. Each submission creates a document in the `contact-submissions` collection.

## Math captcha

The form is protected by a math challenge served at `GET /api/contact/captcha`. The endpoint returns a problem and a token signed with HMAC using `PAYLOAD_SECRET`. The shopper must solve the problem and post the answer along with the signed token. The server verifies the signature before accepting the submission.

<Note>
  If you rotate `PAYLOAD_SECRET`, in-flight captcha tokens will invalidate. That is expected behavior. Shoppers can refresh the page to get a new challenge.
</Note>

## View submissions

To read contact submissions:

1. Open the Payload admin at `localhost:3000/admin` in dev (or your live admin URL).
2. Navigate to **Contact Submissions** in the sidebar.
3. Open any submission to see the name, email, message, and timestamp.

The collection is read-only by design. You cannot edit or delete submissions from the Payload admin UI.

<Warning>
  Contact-submissions is read-only in the admin by design. If you need to reply, forward the message via your email tools. If you need an archive workflow, add a custom field (for example, a status tag) through the collection config and manage it there.
</Warning>

## Extending the form

You can add fields to the contact form by editing the Payload collection config for `contact-submissions`. For guidance on customizing Payload collections, see [/customize/payload-schema](/customize/payload-schema) and the [Payload collections docs](https://payloadcms.com/docs/configuration/collections).

<CardGroup cols={2}>
  <Card title="Payload Schema" href="/customize/payload-schema">
    Customize Payload collections, globals, and fields for your Vulpy storefront.
  </Card>

  <Card title="Content" href="/shop/content">
    Manage pages, posts, and media with Payload CMS in Vulpy Commerce.
  </Card>
</CardGroup>
