Skip to content

GA4. B2B quote form leads. Attribute wholesale inquiries in paid campaigns.

What this means for your store

Wholesale buyers rarely check out like retail shoppers. When someone submits a trade quote or dealer application, GA4 expects generate_lead - not purchase. Set value to finance's estimated deal worth (average order × close rate). Tag lead_type and form_id so trade quotes do not blend into newsletter signups in reports.

Scenario on a real storefront

OfficeCraft sells commercial desks on Shopify Plus. Google Ads sends traffic to "Request trade pricing." After the form passes server validation, fire once on the thank-you page or from your backend:

// Thank-you page - wholesale quote accepted (HTTP 200)
gtag('event', 'generate_lead', {
  currency: 'USD',
  value: 1450.00,           // avg closed deal × win rate
  lead_type: 'b2b_quote',
  form_id: 'trade_pricing_v2',
  company_size: '51-200',   // register custom param in Admin first
});

// GTM dataLayer - trigger on form success, not field blur
dataLayer.push({
  event: 'generate_lead',
  lead_type: 'b2b_quote',
  form_id: 'trade_pricing_v2',
  value: 1450,
  currency: 'USD',
});

// Pitfall: do not fire on page load - only after validated submission

What to do next

  • Mark generate_lead as a key event and import it to Google Ads for B2B prospecting campaigns.
  • Split Explorations by form_id - trade quote vs sample kit vs dealer onboarding.
  • Send the same lead_id to HubSpot or Salesforce so closed-won deals reconcile with GA4.

Bottom line

B2B quote forms belong on generate_lead with a realistic value. Fire once per accepted submission. Keep lead_type separate from consumer waitlists.