Same pattern as comments. A form, a URL, a log entry.
The flow
- Visitor fills out contact form →
GET /events/contact/submit?name=...&email=...&message=... - CloudFront logs it. Returns 202. Done.
- You check when you want:
grep contact/submitin the logs.
No email service. No form backend. No third-party widget. No spam filter needed — you read the log when you feel like it.
Why it works
The events endpoint already exists. The CloudFront Function already returns 202. The logs already capture the full query string. Adding a contact form is adding a form. Zero infrastructure.
The email field
It's @pii in the schema. The MCP log reader won't show it. You see it when you grep directly. The visitor trusts you with their email — not your tools.
The journey
prev: moderated-comments Walk thought. Contact form is just comments without the post. Same URL pattern, same logging, same grep workflow. The log is the inbox. □