Quote requests your team can actually work
Budget, timeline, and scope arrive as sortable columns; Status and Owner are columns your team fills in. Quotes stop dying in the inbox.
The workflow
A quote request is a lead with money attached, and the inbox is where it goes to be forgotten. The request arrives, someone means to reply, someone else assumes they did, and a week later the prospect has hired whoever answered first.
The sheet version gives the request a row and the row a lifecycle. The form on your site posts to a permanent endpoint; the submission is screened, mapped, and appended; and the team works the sheet: newest requests at the bottom, unworked requests visible in a filter, every request owned by a named person. Delivery goes straight to Google Sheets or Excel Online - no middleman - with retries and a delivery log, as laid out on how it works.
Suggested columns
Split the header row into what the prospect sends, what marketing wants, and what the team maintains:
- Name, Email, Company, Service, Budget, Timeline, Details - the request. Budget and Timeline come from dropdowns, so they sort and filter cleanly.
- utm_campaign and gclid - attribution columns, because quote requests are exactly the conversions ad budgets exist to buy. With the
sl.jsembed these are captured from the landing URL and persisted across the visit; the pattern is detailed in capture gclid in forms. - Submitted At - response-time truth.
- Status (New / Contacted / Quoted / Won / Lost), Owner, Quoted Amount, Quoted On - the working columns. The form never writes these; the team always does.
The form markup
Dropdowns beat free text for anything you plan to sort by later:
<form action="https://sheetlinkforms.com/f/your_token" method="POST">
<input name="name" placeholder="Name" required>
<input name="email" type="email" placeholder="Work email" required>
<input name="company" placeholder="Company">
<select name="budget">
<option>Under $2,000</option>
<option>$2,000 - $10,000</option>
<option>$10,000+</option>
</select>
<select name="timeline">
<option>As soon as possible</option>
<option>This quarter</option>
<option>Exploring</option>
</select>
<textarea name="details" placeholder="What do you need?"></textarea>
<input name="_slhp" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px">
<button type="submit">Request a quote</button>
</form>
<script src="https://sheetlinkforms.com/sl.js" data-token="your_token"></script>The honeypot input catches crude bots; the embed adds AJAX submit and the attribution capture. Field names map to your headers automatically, punctuation and case aside.
Working the sheet
The habits that separate a pipeline from a list:
- The triage view. A filter where Status is empty is the queue. The team rule worth having: nothing sits in that view overnight - even "Contacted" with a two-line acknowledgment beats silence, since speed of first response is the variable you control most directly.
- Owner means owner. One name per row. Unowned requests are the ones that die.
- Sort by Budget when triaging. Dropdown values make this a one-click prioritization the inbox could never do.
- Compute your win rate.
=COUNTIF(status_range, "Won") / COUNTA(status_range)in a corner cell. Segmented by utm_campaign, this tells you which campaigns buy customers rather than form fills.
Spam considerations
Quote forms draw a particular nuisance: human and semi-human sales spam - link-stuffed "we can redesign your website" pitches - alongside the usual bots. The content heuristics (link stuffing, disposable email domains) at normal strictness handle most of it, the honeypot takes the bots, and per-form rate limits absorb bursts.
The quarantine rule earns its keep here more than anywhere: a five-figure request written in broken English from a free email address looks a lot like spam and sometimes is a real buyer. Suspicious submissions are held for one-click review, never dropped - approve delivers the row. Reviewing the quarantine takes seconds; explaining a silently vanished customer is harder. Full defenses are in the spam protection guide.
FAQ
Can several people work the sheet at the same time?
Yes - it is a normal Google Sheet or Excel Online workbook, so simultaneous editing, comments, and filter views all behave as usual. The Owner column keeps parallel work from colliding.
How do I know which ad campaign a quote request came from?
Load the sl.js embed and give the sheet utm and gclid columns - the values are captured from the landing URL, persisted across pages, and appended at submit. The gclid guide walks through it.
Should budget be a dropdown or a free-text field?
Dropdown. Prospects fill it more readily than a blank money box, and the sheet can sort and filter on it. Free-text budgets produce a column of "depends" - true, but not workable.
What happens if a real request gets flagged as suspicious?
It waits in quarantine, visible in the dashboard, and one click approves it - the row then delivers to the sheet normally. Nothing except a filled honeypot is marked spam outright, and nothing is silently dropped.
Related: Lead capture for ad landing pages · A contact form that lands in a sheet · One endpoint per client site