Lead values

VibeAds attaches a conversion_value to every form_submission and phone_call_click dataLayer event. The value is per-category, defaulted from industry benchmarks. Smart Bidding uses these values to optimize for lead worth, not just lead count.

Lead values per category

CategoryLead value
Roofer$800
Painter$600
Moving$600
Lawyer$500
HVAC$500
Real estate$500
Electrician$400
Christmas lighting$400
Plumber$350
Landscaper$350
Auto repair$350
Dentist$300
Insurance$300
Junk removal$300
Pest control$250
Cleaner$200
Generic / custom$300

Categories not in the table use the generic $300 fallback.

What these values do

  • Smart Bidding signal. When the Google Ads conversion tag fires from GTM, it sends conversion_value. Smart Bidding (especially Max Conversion Value and Target ROAS) uses this to differentiate leads worth more from leads worth less.
  • ROI dashboard. Estimated revenue per campaign = lead count × close rate × lead value. Visible on the campaign Analytics tab.
  • Budget calculator. The public Budget Calculator uses these values to estimate expected revenue for a given budget.
  • Agent benchmarks. Diagnostic rules compare campaign performance against category-typical CPA = lead value × close rate (defaults to 30% close rate).

How they were derived

Each value reflects the typical average ticket size for a first job in that category, NOT the lifetime value. We intentionally underweight recurring revenue here because:

  • Smart Bidding values should match what you have evidence for, not what you hope for
  • Inflated values lead to over-bidding and wasted spend
  • Lifetime revenue gets captured separately via Predictive LTV on the Jobber paid-invoice upload (Max only)

Values were derived from industry surveys (HomeAdvisor lead cost data, Servpro estimates, Reddit r/HomeServices benchmarks) and tuned against early-customer paid-invoice averages.

Overriding the default

Per-campaign lead value override is on the roadmap but not shipped yet. Today the value is per-category, applied consistently across all your campaigns in that category.

Workaround: edit the funnel HTML directly via the landing-pages editor (Max only) to set a differentconversion_value in the form_submission dataLayer push. The agent picks up the new value on the next sync cycle.