All resources
Static site forms

Request a Quote Form: Examples & Best Practices (2026)

How to build a request-a-quote form that converts: which fields to include, a copy-paste example, industry templates, and best practices for better quotes.

The ShipMyForm team

· 5 min read

A request-a-quote form is a short form that collects just enough about a job — what the customer needs, plus a qualifier or two like budget, quantity, or timeline — for you to reply with a price or an informed follow-up. It sits between a contact form (which only opens a conversation) and a full checkout (which needs a fixed price), and it's how service businesses, agencies, contractors, wholesalers, and custom-product sellers turn high-intent visitors into real leads.

This guide covers exactly what to put on one, a copy-paste example you can ship today, templates for common industries, and the best practices that get you more — and better-qualified — quote requests.

What to put on a request-a-quote form

Every field falls into one of three buckets. Keep the first two, be ruthless with the third.

Essential — how to reach them and what they want:

  • Name
  • Email (and phone, if you quote by call)
  • What they need a quote for (service or product)

Qualifying — what lets you actually price the job:

  • Budget range
  • Quantity or scope
  • Timeline / deadline
  • A details box for context

Optional — only if it changes the quote:

  • Company name (B2B)
  • File upload for specs, drawings, or reference photos
  • Delivery location, dimensions, materials, and other job-specific fields

The test for any field: would I price this job differently, or respond differently, without the answer? If not, cut it. Every extra field lowers completion, and a quote form's whole value is getting the request in the first place.

A copy-paste request-a-quote form

Point a normal HTML <form> at a hosted form endpoint and you have a working quote form — no server, no API route. Replace YOUR_FORM_ID with the ID from your form backend:

html
<form action="https://shipmyform.com/f/YOUR_FORM_ID" method="POST">
  <!-- How to reach them -->
  <input type="text" name="name" placeholder="Your name" required />
  <input type="email" name="email" placeholder="Work email" required />
  <input type="text" name="company" placeholder="Company (optional)" />

  <!-- What they need -->
  <select name="service" required>
    <option value="" disabled selected>What do you need a quote for?</option>
    <option>Web design</option>
    <option>SEO</option>
    <option>Branding</option>
    <option>Something else</option>
  </select>

  <!-- Qualifiers: ranges people will actually pick -->
  <select name="budget" required>
    <option value="" disabled selected>Estimated budget</option>
    <option>Under $1,000</option>
    <option>$1,000–$5,000</option>
    <option>$5,000–$10,000</option>
    <option>$10,000+</option>
  </select>

  <select name="timeline" required>
    <option value="" disabled selected>Timeline</option>
    <option>ASAP</option>
    <option>1–3 months</option>
    <option>3–6 months</option>
    <option>Just exploring</option>
  </select>

  <textarea name="details" placeholder="Tell us about your project" required></textarea>

  <!-- Spam trap (hidden) + where to send them after submit -->
  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="display:none" />
  <input type="hidden" name="_redirect" value="https://your-site.com/thanks" />

  <button type="submit">Request a quote</button>
</form>

Every field's name (name, email, budget…) becomes a field you receive by email. The hidden _gotcha field is a honeypot — bots fill it, humans don't. _redirect sends people to your thank-you page after submitting. Don't want to hand-write the markup? Generate it with the free contact form generator and adjust the fields.

For jobs that need specs, add a file input — the backend stores the upload and links it on the submission:

html
<input type="file" name="attachment" />
Set expectations right by the button:

A single line like "We reply with a quote within 1 business day" next to the submit button measurably reduces abandonment. High-intent buyers hesitate when they don't know what happens next — tell them.

Request-a-quote form examples by industry

The essentials stay the same; the qualifiers change. Here's what actually matters per use case:

  • Agency / consulting / services — service needed, budget range, timeline, project details. Budget + timeline are what let you triage and price.
  • B2B / wholesale — company, product(s), quantity, delivery date, shipping destination, and a resale/tax ID if relevant. Quantity is the field that sets the price.
  • Contractors & home services — project type, property address, scope or square footage, preferred start date, budget, and photos (file upload) of the space.
  • Manufacturing / print / custom products — product spec, material, dimensions, quantity, artwork or drawings (file upload), and the deadline.
  • Freelancers — project type, scope, budget, deadline, and links or attachments to examples.
  • SaaS / enterprise pricing — company size (seats), primary use case, current tool, and timeline. This is really a "talk to sales" form wearing a quote-form hat.

Pick the two or three qualifiers that change your price, and leave the rest.

Best practices for higher-converting quote forms

  1. Ask only what you need to quote. Start with contact info, what they want, and one or two qualifiers. You can always ask follow-ups by email — you can't un-scare a visitor who bounced off a 15-field form.
  2. Qualify, don't interrogate. Budget, quantity, timeline, and scope earn their friction because they change the quote. Vanity fields ("How did you hear about us?") don't — move those to after the lead is captured, if at all.
  3. Use ranges and dropdowns for budget and timeline. People won't type a number into a budget box, but they'll happily pick "$5,000–$10,000." Ranges also set expectations and filter out mismatches before you spend time quoting.
  4. Use the right input types. number for quantity, select for options, tel for phone, file for specs. Better data, fewer typos, and mobile keyboards that match the field.
  5. Break complex quotes into steps. A multi-step form feels shorter than one long page and lifts completion for detailed RFQs — show progress so people know it ends.
  6. Confirm instantly. Redirect to a real thank-you page and send an autoresponder ("We got your request and will reply within one business day"). Silence after a quote request reads as "they didn't get it."
  7. Respond fast — speed-to-lead wins quotes. Route every submission to email and Slack so you answer while intent is hot. Studies of inbound leads consistently show the first business to respond wins a disproportionate share of the deals.
  8. Protect against spam without CAPTCHAs. A honeypot plus rate limiting stops most bots invisibly; add Cloudflare Turnstile only if a form gets targeted. Don't make real buyers solve puzzles.
  9. Prefill the context. If the form lives on a specific product or service page, set a hidden field with that page's name so you know what they're quoting without asking.
  10. Be accessible and mobile-first. Real labels, big tap targets, and a layout that works on a phone — where a large share of B2B buyers first find you.
Validate before you submit, not after:

Client-side validation (required, type="email", sensible patterns) catches typos while the buyer is still on the page, so you don't lose a hot lead to an unreachable email address. See how to add form validation.

Build a request-a-quote form without a backend

You don't need a server to receive quote requests. With a form backend like ShipMyForm, you create a form, point your HTML at its endpoint, and every submission is:

  • Stored in an inbox and emailed to you the moment it arrives (route to Slack, Google Sheets, or a webhook too),
  • Spam-filtered with an automatic honeypot and rate limiting — no reCAPTCHA,
  • Complete with file uploads stored for you, so specs and drawings come through, and
  • Safe to ship on a static site — the endpoint is public by design and only accepts submissions from your allowed domains.

That means a fully working, well-qualified quote form on any site — Astro, Hugo, Next.js, Webflow, or plain HTML — without writing or hosting a backend.

Next steps

Frequently asked questions

What should a request-a-quote form include?
At minimum: how to reach the person (name, email, maybe phone), what they want quoted (service or product), and one or two qualifiers you need to price the job — usually budget range, quantity, or timeline. Add a details field for context and, for complex jobs, a file upload for specs or drawings. Anything that doesn't change the quote or your response should be cut.
How many fields should a quote form have?
As few as you can while still being able to produce a quote. For most service businesses that's 4–6 fields: name, email, what they need, budget or timeline, and a details box. Every extra field lowers completion, so only add a field if you'd genuinely price the job differently without the answer.
What's the difference between a contact form and a request-a-quote form?
A contact form opens a conversation; a quote form gathers enough to price a job. Quote forms add qualifying fields — budget range, quantity, timeline, scope, sometimes a file upload — so you can respond with a number (or a fast, informed follow-up) instead of asking a round of basic questions first.
How do I stop spam on a request-a-quote form?
Use a hidden honeypot field and let your form backend rate-limit and score submissions; add an invisible challenge like Cloudflare Turnstile only if a form gets targeted. ShipMyForm runs a honeypot and rate limiting on every submission automatically — no reCAPTCHA puzzles for real buyers.
Can I add a request-a-quote form to a static site?
Yes. Point a normal HTML form at a hosted form backend and it receives the submission, filters spam, stores it, and emails you — no server or API route needed. That works on any static or JAMstack site (Astro, Hugo, Next.js, plain HTML, and so on).

Related guides