You spent good money on your website. It looks sharp. The contact form is right there on the page. Name, email, phone, message, big orange "Send" button.

One problem: nobody is getting your messages.

The form submits. The page refreshes. And the lead? Gone. Into the void. No email. No notification. No follow-up. The visitor thinks they reached you. You think nobody is visiting your site. Both of you are wrong, and you are losing money every single day this goes unfixed.

I discovered this on my own site, pmconsulting.ca. The form looked perfect. Five fields, clean layout, strong call to action. But the backend? Nothing. No handler. No email delivery. Just a form that posted to nowhere.

I fixed it in about five minutes. Here is exactly how.

The Problem: Static Sites Cannot Send Email

If your website is built with static HTML (no WordPress, no server-side code), your contact form has no way to process submissions on its own. HTML can display a form. It can collect the data. But it cannot send an email. That requires a server.

Most website builders know this. Many ignore it. They build a beautiful form, set the action to "#" or leave it blank, and move on. The form looks functional. It is not.

This is more common than you think. I have audited dozens of contractor websites where the contact form either:

If your website is hosted on a CDN like Bunny.net, Netlify, Vercel, or Cloudflare Pages, you are running static files. Your HTML, CSS, and JavaScript are served from edge servers around the world. Fast. Reliable. But unable to process a form submission without help.

The Fix: Three Tools, Five Minutes, Zero Monthly Fees

Here is the stack I used to fix it:

Bunny.net

CDN and hosting. Serves your static site from 100+ global edge locations. Pennies per GB.

Resend.com

Transactional email API. Sends the actual email to your inbox. Free up to 3,000 emails/month.

Netlify Functions

One small serverless function that connects the form to Resend. Free on the starter plan.

Total cost: free. For a contact form that gets 10 to 50 submissions a month, you will never pay a cent.

Step 1: Create a Resend Account and Verify Your Domain

Go to resend.com and create a free account. Add your domain and verify it by adding the DNS records Resend provides. This takes about two minutes and lets you send emails from your own domain, like forms@yourdomain.com.

Your submissions will land in your inbox, not your spam folder. That is the entire point of domain verification. Resend handles the SPF and DKIM records so email providers trust the messages coming from your domain.

Step 2: Build the Serverless Function

This is the piece that sits between your form and your inbox. When someone submits the form, JavaScript on the page sends the data to this function. The function takes that data, formats it into a clean HTML email, and calls the Resend API to deliver it.

Here is what the function does:

The function is about 80 lines of code. It runs on Netlify's free tier. You deploy it once and forget about it.

Step 3: Connect the Form

On the contact page, a small JavaScript block intercepts the form submission, collects the field values, and sends them to the serverless function using a standard fetch request. No page reload. No redirect.

The visitor sees a green confirmation message right on the page: "Message sent. Paul will get back to you within the same business day."

If something goes wrong (network error, API issue), the visitor sees a red message with your phone number as a fallback. Nobody gets stuck on a broken page wondering if their message went through.

What the Email Looks Like

Every submission arrives as a clean, branded HTML email. Dark header with your company name. Table layout showing name, email, phone, trade, and message. The subject line reads "New lead: John Smith (Contact Page)" so you can scan your inbox and spot submissions instantly.

The reply-to is set to the person who filled out the form. You hit reply, type your response, and you are in a direct email conversation with a potential customer. No logging into a dashboard. No checking a third-party tool. The lead is in your inbox where you already live.

Why This Matters More Than You Think

Speed to lead is everything. Research from Harvard Business Review found that businesses responding to a new inquiry within five minutes are 100 times more likely to make contact than those who wait 30 minutes.

If your form submissions are going nowhere, your speed to lead is infinite. You are not responding in five minutes. You are not responding at all.

For contractors especially, this is devastating. A homeowner with a leaking pipe, a failed furnace, or a roof that needs replacing is contacting three or four companies at once. The first one to respond wins the job. If your contact form is broken, you are not even in the race.

The Bigger Picture: Your Website Should Work as Hard as You Do

A contact form is the minimum. If your website cannot reliably capture a lead and put it in front of you within seconds, everything else you are spending money on (SEO, Google Ads, social media, yard signs, truck wraps) is partially wasted. You are driving traffic to a dead end.

This is one of the pillars I build for every contractor client at PM Consulting Inc. Your website is not a brochure. It is a lead capture system. Every page should have a clear path to contact. Every form should deliver. Every submission should trigger a response.

The contact form fix I described here took five minutes. But it is part of a larger system designed to make sure you never lose another lead.

Frequently Asked Questions

Does this work with any static website host, or only Bunny CDN?
This approach works with any static hosting provider. Bunny.net, Netlify, Vercel, Cloudflare Pages, Amazon S3, GitHub Pages. The serverless function runs independently on Netlify. Your static site just needs to send a fetch request to the function URL. The hosting platform does not matter.
Is Resend free?
Resend offers a free tier that includes 3,000 emails per month and one custom domain. For a contact form on a business website, that is more than enough. Most small business sites receive 10 to 100 form submissions per month. You would need 30 times that volume before hitting the free limit.
What happens if Resend goes down?
The form displays a fallback error message with your phone number. The visitor is never left wondering if their message went through. They see a clear message: "Something went wrong. Please call (705) 491-2627 instead." No silent failures.
Can I add more forms on other pages?
Yes. The serverless function accepts a "form_source" field, so you can have forms on your contact page, your landing page, your service pages, anywhere. Each submission tells you which page it came from, so you know what the visitor was looking at when they reached out.
Do I need to know how to code?
The initial setup requires basic comfort with HTML and JavaScript. If you are building static websites, you likely already have this. If you are a business owner who hired someone to build your site, send them this article. The implementation is straightforward.

Stop Losing Leads to a Broken Form

If you are a contractor and you are not sure whether your website forms are actually delivering, that uncertainty alone is a problem. You should know. You should be getting an email in your inbox every time someone reaches out.

I offer a free 20-minute AI Lead Audit where I look at your entire lead capture system: your website, your forms, your response time, your follow-up process. I will tell you exactly where you are losing leads and what it is costing you.