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.