Google Analytics logo

Weigh quote requests by estimated deal size

Each quote request sends a generate_lead event with a value attached, so pages bringing bigger requests stand out from pages bringing many.

When this happens

New submission on your quote request form

Do this

Send a GA4 generate_lead event with product interest and an estimated value as parameters

One-directional. A submission triggers the action — nothing is written back into your form.

Counting quote requests treats a small repair job and a year-long project as the same conversion. For anything sold by proposal, that number sends budget towards the pages producing the most requests rather than the best ones.

The fix is to give the event a value. B2B sellers and agencies convert the budget band into a number inside the Zap, send it as value with a currency, and the acquisition report starts ranking landing pages by what the requests are worth instead of how many arrived.

Setting it up

  1. 1

    Publish the quote request form in formformform with "Estimated Budget" as a set of bands rather than an open number. Bands are easier to answer honestly and far easier to convert into a value.

  2. 2

    Decide what each band is worth before building anything. A mid-point per band is enough, since the point is to rank pages rather than forecast revenue.

  3. 3

    Copy the Measurement ID from Admin → Data Streams and create a Measurement Protocol API secret for this Zap.

  4. 4

    Create the Zap with formformform as the trigger app, New Submission as the event, and the quote request form selected.

  5. 5

    Insert a Zapier Formatter step with a lookup table that turns each "Estimated Budget" band into the number you agreed, with a fallback of zero for anything unmatched.

  6. 6

    Add the Measurement Protocol action, set the event name to generate_lead, and pass value from the formatter output together with a currency parameter such as GBP or EUR. GA4 ignores a value that has no currency beside it.

  7. 7

    Map "Service Type" into a product_interest parameter and "Project Timeline" into a lead_timeline parameter, then register both as event-scoped custom dimensions.

  8. 8

    Send one test request in each band, check the value in Realtime, then mark generate_lead as a key event and turn the Zap on.

What maps where

Using the Quote Request Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.

Form fieldGoogle Analytics
Estimated BudgetConverted by a Zapier lookup table into the numeric value on the generate_lead event
Service Typeproduct_interest event parameter, registered as an event-scoped custom dimension
Project Timelinelead_timeline event parameter, so near-term work can be reported apart from next year's
Email AddressHashed into user_id if you use one; the address stays out of Google Analytics and goes to the CRM in a separate step
Project DescriptionNot sent — free text has no place in an event parameter, so it travels to the CRM with the rest of the request

Variations worth knowing

Weight by fit as well as budget

Read "Service Type" for the work you actually want more of and build the value from both halves: the band gives the size, the service gives a multiplier. Do the arithmetic in a Zapier formatter step, since formformform has no calculated fields.

Send the same request to your CRM

Google Analytics receives a weighted count and nothing else. Add a CRM action to the same Zap carrying "Full Name", "Phone Number" and "Project Description", so the salesperson has the request in full while the reporting side stays anonymous.

If something isn't arriving

The value column stays at zero

Two usual causes: the lookup table returned nothing because a band label was edited on the form and no longer matches, or the currency parameter is missing and GA4 dropped a value it could not denominate. Add a fallback row to the lookup and confirm currency is sent on every event.

One large request distorts the whole report

Cap the top band at a realistic mid-point rather than the biggest number anyone has ever typed. A single outlier in an open-ended band will out-weigh a month of ordinary requests and point next quarter's budget at whichever page happened to catch it.

Frequently asked questions

Is the value in the event real revenue?

No, and it should not be read that way. It is a weighting so reports can rank requests by likely size. Revenue belongs in your accounting or CRM records; this number exists only to compare landing pages and campaigns against each other.

Should I use the ecommerce reports instead of an event value?

You can send a purchase-style event with items, but a quote request is not a sale. Keeping generate_lead with a value avoids filling the ecommerce reports with money that has not been agreed, let alone invoiced or collected.

Can formformform take the payment once a quote is accepted?

Yes. Add products and priced options to the form, then collect payment through secure hosted checkout with Stripe, PayPal, or Square. Payment status is tracked alongside the response.

Related automations

Build the form first

The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.

Start free