Skip to content

Contact

Get in touch

Questions about how something here works, or an idea for the next experiment — both welcome.

This form now delivers

Every message is saved to the site inbox first, so a mail outage cannot lose it. The success message says whether the notice reached a real inbox or the dev server console.

0 / 2000 characters — at least 20 needed.

How this worksShow

The message is written to the inbox table inside the request, and the notification is queued in the outbox and sent through the same transport as account email — a provider when a key is configured, the console otherwise — so nothing depends on the mail call succeeding in the moment. One schema refuses a short message or a malformed address, and the same schema runs again on the server, because a form is not a security boundary. The form that takes photos is the quote request, not this one.

Before you try it

What it needs

RESEND_API_KEYWithout them: Messages print to the server console in full, links included.

Mode right now

FallbackThis deployment runs the plain path, so what you try here costs nothing and reaches no provider.

A safe failure to try

Send with a message under twenty characters: the server refuses it field by field, and nothing is written to the inbox or queued for sending.

Read the code:src/app/contact/actions.tssrc/lib/inquiries/rules.tssrc/lib/mail.ts