# Contact flow and 404 (/docs/start/guides/contact-and-404)

> A form, its sent page and a 404 for any Site, built like Ledgerhouse's intake, and what a static host does with a form post.

Every Site needs three pages no visitor asks for by name: the form that takes an inquiry, the page that thanks them, and the page an unknown address lands on. Ledgerhouse, a two-partner bookkeeping firm, takes new clients through an eight-field intake this way.

## Prerequisites

- A Site's `nav` and `footer`, from [Build a landing page](https://next.mdxui.dev/docs/start/guides/landing-page).
- Somewhere to receive a post, such as the Worker in [Ship a Site](https://next.mdxui.dev/docs/start/ship).

**File: pages/intake.json**

**File: pages/intake/sent.json**

**File: pages/404.json**

**File: Result**

The result, as this site renders it: https://next.mdxui.dev/pages/ledgerhouse/intake.json

## Ask for what you need

[`cta-form`](https://next.mdxui.dev/docs/sections/cta-form) takes one to eight fields. Each has a lowercase `name`, a type of `text`, `email`, `select` or `textarea`, a label of 16 characters and a placeholder of 32; a select lists up to 12 options. The button label runs to 24, and a note under it to 80.

## Send the post somewhere that answers

The form renders `method="post"` to its `action`, with no script. A static host answers only GET and HEAD, so a post to a file is never received. Route the `action` to a function: on Cloudflare, `worker.ts` from [Ship a Site](https://next.mdxui.dev/docs/start/ship) forwards each field and answers with a redirect to the sent page. The worked Sites on these docs are static files, so their forms do not send.

## Thank them

The sent page is an [`article`](https://next.mdxui.dev/docs/showcase/templates/article) page: the nav, a [`page-head`](https://next.mdxui.dev/docs/sections/page-head) with a title of 64 and a lede of 200 that says what happens next, and the footer. Give it `meta.noindex`, so no search engine lists it.

## Catch every lost address

The 404 record is a `page-head` and a `closing` with a way back, between the nav and the footer. A Site without one does not build: `ship.ts` stops on a missing `404.json`, and the host serves the page with status 404.

## Result

The Result is the form under each Theme. Below, the 404 page of every worked Site, each in its own Brand.

## Next steps

  - [Ship a Site](https://next.mdxui.dev/docs/start/ship): The Worker that receives the post.
  - [cta-form](https://next.mdxui.dev/docs/sections/cta-form): One field to eight, under every Theme.
  - [contact](https://next.mdxui.dev/docs/showcase/templates/contact): Every worked contact page.

