Lead systems
What should a contractor quote form ask?
Every extra field costs you requests, and every missing field costs you time on the phone. A good quote form asks only what you need to respond well, works on a phone, and makes sure someone actually follows up.
The minimum fields
Ask for what you need to make first contact, and nothing more:
- Name
- Phone or email, and how they prefer to be reached
- Service needed (repair, replacement, inspection, other)
- Property location, at least the town or ZIP code, so you know it is inside your service area
A short form is easier to finish. You can collect the rest on the first call.
Optional details and photos
A short optional message box and an optional photo upload can make the first conversation more useful, especially for repairs where a photo shows the problem. Keep them optional so they do not block someone who just wants a callback.
Make it work on a phone
Most homeowners will fill this out on a phone. Use large tap targets, the right keyboard for each field (a number pad for phone), clear labels that stay visible, and error messages that say exactly what to fix. Google’s web.dev forms course covers these patterns in detail.
Confirmation and routing
After submitting, show a confirmation that says what happens next and how soon, and send the request somewhere it cannot be missed: an email that reaches a person who owns the follow-up, ideally with a record you can review. A form that submits but is never read is worse than no form. Our lead systems work focuses on this routing and follow-up step.
A concrete example: our contact form
Our contact form requires a name, email address, and message. Phone, project type, and text-message consent are optional. It is built for website project inquiries; a contractor form should adapt those fields to the service and property information needed for the first response.
- A missing name or message produces a request to add those details; an invalid email produces a specific email error.
- While the request is being sent, the form shows a sending state and disables the submit button to prevent another click.
- After the server accepts the request, the form clears and shows: “Message sent. I’ll reach out within 24 hours.”
- If the server rejects the request or the connection fails, the form keeps the entered details and shows an error so the visitor can retry.
The website records a completed-lead event only after an accepted request. The analytics event includes the page, inquiry source, and project type; it omits the visitor’s name, email, phone, and message. This describes the current implementation. Production event receipt and delivery to the person handling the inquiry still need their own verification.
For a contractor, agree on a response window the team can meet and check delivery with a clearly marked test inquiry before launch. A photo-upload field needs upload handling and storage as well as a visible input; our form currently has no upload field. The web.dev form guide explains submission behavior and file-upload requirements.
Handling spam
Use quiet protection such as a hidden honeypot field or rate limiting before adding puzzles that frustrate real customers. Review what gets filtered so genuine requests are not blocked.
A sample form
This is an illustrative layout with fictional example answers, not real lead data:
| Field | Required | Example |
|---|---|---|
| Name | Yes | Sample Homeowner |
| Phone | Yes | (555) 555-0100 |
| Service | Yes | Roof repair |
| Town or ZIP | Yes | Lebanon, MO |
| Photos | No | One photo of ceiling stain |
| Notes | No | Leak after last storm |
See how this fits a full site in our contractor website design service, or in the roofing page map.