Only 1 page on your site touches money
Every lead, every demo request, every "are you hiring?" message my SaaS gets flows through one HTML form. The rest of my site is decoration.
If that form breaks for 24 hours, I lose 100% of my inbound pipeline.
I shipped my own /api/contact handler across 6 different projects over 4 years before I clued in. Wired up Nodemailer or Resend. Hit it once in dev. Watched the email land. Shipped it. Moved on.
That endpoint then sat untouched for months while my SaaS quietly leaked leads.
THE SILENT FAILURE LIST
Things that have actually broken my contact form in production:
- SMTP credentials rotated by my email provider. Endpoint returned 200, email never sent
- Resend free tier hit 3,000 emails. Submissions 3,001 through whenever-I-noticed disappeared
- A dep upgrade changed how multipart/form-data parsed. iPhone submits returned 415, desktop worked fine
- DNS MX record swap during a Cloudflare migration. Mail delivered straight to spam for 11 days
- A bot script hammered my form 4,000 times. Real leads got buried under noise. I stopped opening the inbox
- Vercel cold start timeout on the first submission of the day. User retries, gives up
Each of these felt instant when it broke. Each took me days or weeks to notice. Nobody complains about a form that ate their message. They assume you ghosted them.
THE THING NOBODY MEASURES
Your error tracker does not catch this. Sentry needs an exception. A silent 200 with a missing email is not an exception.
Your uptime monitor does not catch this. The endpoint responds 200. The page loads. Green dashboard, broken revenue.
You catch it when a customer DMs you on Twitter asking why you never replied. By then you have lost months.
WHAT A PRODUCTION CONTACT ENDPOINT ACTUALLY NEEDS
Sit down and write the list. I did this on a napkin in 2024 and got embarrassed.
1. Delivery receipt (did the email actually leave?)
2. A dashboard that shows every submission, regardless of whether the email arrived
3. Spam filter that does not throw CAPTCHA at humans
4. Rate limiting per IP per endpoint
5. Notification redundancy (email plus Slack or Telegram, so if one breaks you still see it)
6. Audit log (timestamps, IP, user agent)
7. Replay (when an email goes missing, can you retrieve and re-send it?)
8. Auto-responder for the submitter (proves to them you got it)
You can build all 8 yourself. I have. It is 60+ hours of work and 100% of your time maintaining it for the next 3 years. Every framework upgrade can break it. Every infra change can break it. Every email provider edge case can break it.
Or you pay $0 to $9 a month and someone else owns it.
THE STACK CHOICE
Pick any hosted form service that gives you a dashboard. Formspree, Basin, Web3Forms, Getform, FormTo (the one I built). The brand matters less than the fact that you can SEE submissions arriving instead of trusting that emails went out.
I built formto.dev because none of the existing tools had self-host plus custom SMTP plus a dashboard I wanted to look at every morning. Honestly, any of them beats your DIY /api/contact handler from 2022.
HOW TO TEST RIGHT NOW
Open your live site. Fill out your contact form. Use a Gmail account you do not normally use.
Did the email arrive? Did it land in inbox, not spam? Did it arrive in under 60 seconds? Was the from-address sane?
If you cannot confidently say yes to all four, you have a leak.
When was the last time you tested your contact form in production, not your dev environment?