SheetLink Forms beta

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:

  1. Name, Email, Company, Service, Budget, Timeline, Details - the request. Budget and Timeline come from dropdowns, so they sort and filter cleanly.
  2. utm_campaign and gclid - attribution columns, because quote requests are exactly the conversions ad budgets exist to buy. With the sl.js embed these are captured from the landing URL and persisted across the visit; the pattern is detailed in capture gclid in forms.
  3. Submitted At - response-time truth.
  4. 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:

  1. 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.
  2. Owner means owner. One name per row. Unowned requests are the ones that die.
  3. Sort by Budget when triaging. Dropdown values make this a one-click prioritization the inbox could never do.
  4. 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

Request an invite See the live demo