Performance Max was built for e-commerce. The default setup — fire a conversion when a transaction completes, send Google the revenue — works beautifully for online stores. For lead gen and B2B, the same default setup is a slow disaster.
The form fill that fires the conversion isn't a sale. It's a guess. Some of those leads are unqualified spam. Some are competitors. Some are real prospects who'll close 60 days later. Some are gold. PMax treats them all as identical "conversions," optimises for whatever's cheapest to generate, and reliably finds the worst leads in your market.
The fix isn't more keywords or smarter audience signals. It's feeding PMax real downstream signal — qualified lead status, opportunity stage, closed-won revenue — via offline conversions and first-party data connections.
Here's the full setup.
The TL;DR: Default PMax for lead gen optimises for cheap form fills. That's almost never what you want. The fix is uploading downstream lead quality signals (qualified, opportunity, closed-won) as separate conversion actions, then re-pointing PMax at the highest-value action. Within 8-12 weeks PMax learns which lead profiles close. Cost per closed deal drops dramatically.
Why default PMax fails for lead gen
Three things compound:
1. Form fills are noisy
Anyone can fill a form. Anyone does. Spam, students, competitors, accidental clicks, vendor pitches — all show up as "conversions" in Google Ads.
If 30% of your form fills are junk (typical for B2B with broad targeting), PMax is optimising for the path of least resistance. The path of least resistance is junk.
2. PMax is aggressive
PMax goes broader than other campaign types. Across Search, Display, YouTube, Discover, Gmail. The broader the inventory, the higher the junk rate.
3. No downstream signal closes the loop
Without feedback on which leads actually closed, PMax can't differentiate "junk lead from junk traffic" from "real lead from real demand." Smart Bidding bids both the same way.
Default PMax for lead gen is Smart Bidding optimising against the wrong target with high speed and accuracy.
The fix: feed PMax downstream signal
The principle is simple. PMax learns from whatever you tell it is a conversion. If you only tell it about form fills, it optimises for form fills. If you tell it about qualified leads, it optimises for qualified leads. If you tell it about closed-won revenue, it optimises for closed-won revenue.
The plumbing isn't hard. Most lead gen accounts skip it because nobody set up the pipeline.
Here's the stack.
Step 1: Define your lead stages
Map your funnel. Typical B2B looks like:
- Lead — form submitted. Anyone.
- MQL (Marketing Qualified Lead) — passed initial qualification (correct industry, company size, contact info real).
- SQL (Sales Qualified Lead) — sales has confirmed buying intent, scheduled a discovery call.
- Opportunity — proposal stage, real budget conversation.
- Closed-won — deal closed, revenue counted.
Each stage has a conversion rate from the previous one. Typical SaaS B2B:
- Lead → MQL: 30-50%
- MQL → SQL: 30-50%
- SQL → Opportunity: 30-50%
- Opportunity → Closed: 20-30%
Net Lead → Closed: usually 1-5%.
Step 2: Create separate conversion actions in Google Ads
In Google Ads, create a conversion action for each stage:
Lead_Submitted(fires from website form).MQL_Qualified(uploaded from CRM via offline conversion).SQL_Confirmed(uploaded).Opportunity_Created(uploaded).Closed_Won(uploaded, with deal value).
Each conversion action gets configured separately. Initially, mark all as conversion actions but only set the most downstream one (Closed_Won or Opportunity_Created) as a key event for Smart Bidding.
This is the core insight: PMax bids on key events. By making the key event a downstream event, you redirect Smart Bidding's attention away from form fills and toward real value.
Step 3: Capture GCLID at form submission
For offline conversion uploads to work, you need to tie each form submission to the original Google Ads click. The mechanism is the GCLID (Google Click Identifier).
In your form (or via GTM):
```javascript // Capture gclid from URL on page load, store in cookie function getQueryParam(name) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(name); }
const gclid = getQueryParam('gclid'); if (gclid) { document.cookie = gclid=${gclid}; path=/; max-age=${902460*60}; samesite=lax; }
// At form submission, attach to the form data document.querySelector('#lead-form').addEventListener('submit', function(e) { const gclidValue = document.cookie.match(/gclid=([^;]+)/)?.[1]; if (gclidValue) { const input = document.createElement('input'); input.type = 'hidden'; input.name = 'gclid'; input.value = gclidValue; this.appendChild(input); } }); ```
The form submits with the GCLID attached. Your CRM stores it alongside the lead record.
Step 4: Upload offline conversions when leads progress
When a lead moves from one stage to the next, upload the corresponding conversion to Google Ads via the API or a bulk file upload.
Each conversion upload needs:
- The original GCLID (or Wbraid/Gbraid for app conversions).
- The conversion action (MQL_Qualified, SQL_Confirmed, etc.).
- The conversion time.
- The conversion value (for Closed_Won, the actual deal value).
Most CRMs (HubSpot, Salesforce, Pipedrive) have either native Google Ads offline conversion sync or can be wired up via Zapier, Make, or Fivetran.
For higher-volume accounts, the Google Ads API offline conversion upload is the cleanest path — set up a nightly job that queries the CRM, finds leads that progressed, and uploads the corresponding conversion.
Step 5: Use First-Party Data Connect (where available)
Google launched First-Party Data Connect (formerly Salesforce Data Cloud integration, expanding to other platforms) which gives a managed pipeline from CRM to Google Ads.
If you're on Salesforce, HubSpot, or another supported platform, this can save weeks of dev work. Configure the connection, map lead stages to Google Ads conversion actions, and the platform handles the uploads.
Check the current list of supported CRMs in Google's data connections documentation.
Step 6: Re-point Smart Bidding at the downstream event
In your Performance Max campaign:
- Settings > Conversion goals.
- Override account-level goals for this campaign.
- Set the conversion goal to use only the downstream conversion action you care about (e.g.,
Opportunity_CreatedorClosed_Won).
This tells PMax to optimise for opportunities, not form fills. Smart Bidding will start adjusting bids based on which clicks produce real downstream conversions.
Re-pointing PMax at the downstream event is the moment the campaign starts working for real. Everything before is plumbing.
Step 7: Allow 8-12 weeks for learning
PMax needs significant conversion volume to learn against a new signal. Form fills happen often. Opportunities happen rarely. The learning period is longer because the signal is sparser.
During the learning period:
- Expect cost per form fill to go up (PMax stops chasing cheap leads).
- Expect form fill volume to drop (junk traffic gets filtered out).
- Watch for opportunity volume to stabilise or grow within 8-12 weeks.
- The final metric to judge: cost per opportunity or cost per closed deal.
Patience here is mandatory. Cutting the campaign at week 4 because form fill cost went up is the classic mistake.
Use case: a SaaS company with the classic "lots of leads, no revenue" problem
A composite based on patterns from a few accounts.
A mid-market B2B SaaS was running PMax with Lead_Submitted as the only conversion. Generating ~200 leads/month at £45 CPL. Sales team was drowning in unqualified leads. Only ~5% of leads ever became opportunities. Cost per opportunity: ~£900.
We rebuilt the conversion stack:
- GCLID capture wired into the form.
- HubSpot integration for offline conversion uploads of MQL, SQL, Opportunity stages.
- New conversion actions in Google Ads for each stage.
- Re-pointed PMax at
Opportunity_Createdas the only key event.
Months 1-2 (learning period):
- Form fills dropped from 200/month to 130/month.
- Cost per form fill rose from £45 to £72.
- Sales team complained. We held the line.
Months 3-4 (signal kicking in):
- Form fills stabilised at 110/month — but quality was visibly different.
- MQL rate rose from 30% to 58%.
- Opportunity creation rate from MQL rose from 20% to 41%.
- Sales team's pipeline quality was unrecognisable.
Month 6:
- Cost per opportunity: £380 (down from £900).
- Closed-won revenue attributed to PMax: 2.4x the previous period.
- Total ad spend: the same.
Same campaign type. Same budget. Different signal. PMax went from "lead spam machine" to "opportunity generator" in three months.
Common mistakes
- Setting all conversion actions as key events. Smart Bidding ends up averaging across all of them. Pick one downstream action.
- Not capturing GCLID at form submission. Without it, offline conversion uploads can't match back to clicks.
- Uploading offline conversions too late. Most platforms have a 90-day window for click-to-conversion. If your sales cycle is longer than 90 days, you'll miss conversions. Extend the attribution window in Google Ads.
- Cutting the campaign during the learning period. Form fill cost will rise. Hold the line for 8-12 weeks. Judge on opportunity / closed-won cost, not form fill cost.
- Skipping conversion value on closed deals. Send the deal value with the
Closed_Wonconversion. Smart Bidding can then optimise for value-weighted opportunities, not just opportunity count. - Not having sales feedback in the loop. If sales updates a lead's stage in the CRM and that doesn't trigger a Google Ads upload, the signal never reaches PMax.
Bottom line
PMax for lead gen with default settings is broken by design. The defaults optimise for form fills. Form fills aren't revenue.
- Map every stage of your funnel from lead to closed-won.
- Create separate Google Ads conversion actions for each stage.
- Capture GCLID at form submission and store it with each lead.
- Upload downstream conversions (MQL, SQL, Opportunity, Closed) via offline conversion uploads or First-Party Data Connect.
- Re-point PMax's key event to the most downstream action you can support.
- Give it 8-12 weeks to learn against the new signal.
The accounts that do this properly find PMax for lead gen surprisingly effective. The ones that leave it on form-fill defaults find PMax a disaster and quietly turn it off. Same product. Different signal.
Stop optimising for the wrong end of the funnel.
Sources and further reading:
