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
| Category | Lead 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
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.