# Contact Feature Spec

## Current Implementation

### Public flow

- Public contact page exists at

`/contact`

- Form fields:
  - name
  - email
  - phone
  - company
  - message
- Submission uses a server action
- Success redirects to

`/success`

### Protection

- Validation uses

`zod`

- Optional Cloudflare Turnstile verification
- Optional rate limiting by IP window

### Delivery

- Messages are sent by SMTP through

`nodemailer`

- Recipient configuration comes from admin settings
- Messages are not persisted in the database

### Admin controls

- SMTP settings page
- Test email action
- Contact protection settings page

## Risks

- Contact history is lost if email delivery succeeds but later needs auditing
- Rate-limit counters are stored in

`AppConfig`

which mixes operational and business configuration

## Recommended Improvements

- Store contact submissions if the business needs pipeline visibility
- Add spam and abuse observability
- Add structured delivery error reporting
