Why do ad platforms optimize for junk leads?

Because the form fill is the only thing they were told about. Bidding systems find more of whatever event you mark as the goal, and the cheapest form fills often come from people who will never answer the phone. The fix is to send the platforms what happened next in your CRM: which leads qualified, booked, and bought.

Both platforms have a documented path for this, as of October 2026:

Step Google Ads Meta
Capture on the form Google tag with user-provided data, plus GCLID fbclid stored as fbc, or the Meta Lead ID for Instant Forms
Send the outcome Enhanced conversions for leads via Data Manager Conversions API for CRM
Optimize on A “qualified lead” or “converted lead” goal The Conversion Leads performance goal (Instant Forms)
Upload cadence Ideally daily At least once per day

How do you capture click IDs and contact data on the form?

Capture them on every page, store them with the lead, and never modify them. Without the identifier, an upload has nothing to match.

  • Google click ID (GCLID). Auto-tagging must be on. Google’s GCLID setup page provides a script that reads the gclid URL parameter, keeps it in localStorage for 90 days, and fills a hidden form field. Google recommends adding it to every page, not only landing pages. The GCLID is case sensitive.
  • Hashed contact data for Google. Enhanced conversions for leads uses the Google tag to capture hashed email or phone at form submission, then matches your later upload of the same hashed data to the click.
  • Meta click ID. Meta’s fbp and fbc documentation says to read fbclid from the URL query string and format it as fb.1.{timestamp}.{fbclid} when generating it on a server. It is also case sensitive. Meta recommends sending fbc with every Conversions API event and keeping it in a 90-day _fbc cookie or in backend storage.
  • Meta Lead ID. For Instant Form leads, store the 15 to 17 digit Lead ID in your CRM. Meta’s payload specification gives it the highest matching priority, alongside click ID and hashed email.

Our landing pages guide covers the form side: hidden fields, UTM capture and keeping bot submissions out of your CRM.

How do you send lead quality back to Google Ads?

Use enhanced conversions for leads, which Google’s offline conversion imports page recommends over GCLID-only imports for new setups and as an upgrade for existing ones. The checklist:

  1. Create one offline conversion action per stage in Goals, and mark only the stage you optimize on as primary. Google says to wait 4 to 6 hours after creating an action before uploading to it.
  2. Choose a lead goal. Google’s lead quality best practices suggest goals such as qualified lead or converted lead, and choosing one funnel stage to optimize on rather than several.
  3. Import through Data Manager. Starting June 15, 2026, offline conversion and enhanced conversions for leads uploads moved to the Data Manager API and are blocked in the Google Ads API, apart from legacy access.
  4. Respect the deadlines. Per Google’s import guidelines, standard offline conversions uploaded more than 90 days after the last click are not imported, and enhanced conversions for leads more than 63 days after it. Imports take about 3 hours to appear; validate them in the “All conv. (by conv. time)” column.
  5. Upload daily, and pick a stage that ideally happens within 7 days of the ad interaction, with at least 15 conversions in the last 30 days at the account level.

Re-uploading is safe: Google counts conversions with the same identifier, conversion name and time once.

How do you send lead quality back to Meta?

For Instant Form lead ads, use the Conversions API for CRM. Meta’s integration guide lists these requirements: at least 200 leads per month, uploads at least once per day, and an existing flow that brings Meta leads into your CRM. The stage you optimize on must happen within 28 days of the lead and convert at between 1% and 40%. As of October 2026, the Conversion Leads goal works only with Instant Forms.

The payload rules that most often break integrations:

  • action_source is system_generated, custom_data.event_source is crm, and lead_event_source names your CRM.
  • event_name is free-form: use your CRM stage names. Send every stage as it changes, starting with the raw lead.
  • event_time is when the CRM stage changed. Per Meta’s implementation guide, you can backfill up to 7 days; it must be later than the lead’s creation time.
  • A batch holds up to 1,000 events, and one error discards the whole batch, so send smaller batches with retries.
  • Meta recommends a new dataset for CRM events so they don’t overlap with web events.

Website forms are different. Send the Lead standard event (it accepts value and currency, per the Pixel reference) from both browser and server, and deduplicate with a shared event_id: Meta discards a matching event received within 48 hours of the first (deduplication docs). Send later stages from your server with the stored fbc and hashed email. Our Conversions API guide covers match quality.

How should you map CRM stages and values?

Map each CRM status to one named event, decide which one the campaign optimizes on, and attach a value where leads differ in worth. A typical map, with stage names as an example only:

CRM status Google conversion action Meta event name Role
New lead Lead (online) Lead Volume signal, secondary
Contacted, fits criteria Qualified lead Qualified Usual optimization stage
Meeting booked Booked Booked Optimize here if volume allows
Closed won Converted lead Converted Value and reporting; optimize when frequent and fast
Disqualified Not uploaded Disqualified Sent to Meta as a stage, since every CRM stage is sent

For values, Google’s value-based bidding page accepts “real economic values, like revenue or proxy values, like a lead score.” One defensible proxy is expected value: the stage’s historical close rate times the average gross margin of a closed deal. Google’s lead guidance recommends value-based bidding when you can assign different values, and target CPA on the qualified or converted stage when you cannot. Values should be stable; changing them weekly moves the bidder’s target.

Collect and send only what your consent flow allows. Google’s offline import page says to give users clear information about the data you collect and get consent where required by law or Google policy. In Google’s consent mode, denying ad_user_data disables sending hashed first-party data for enhanced conversions. Meta requires email and phone to be hashed, and Google matches on hashed data, so hash before upload and keep the consent state with each CRM record so an upload job can filter on it.

What are the common mistakes?

  • Optimizing on raw leads while uploading qualified stages as primary too, so the bidder chases both.
  • Capturing the GCLID only on the landing page, then losing it when the visitor browses before converting.
  • Lowercasing or trimming click IDs in the CRM.
  • Uploading weekly or monthly, so the bidder learns from stale outcomes.
  • Sending only the final stage to Meta instead of every stage from the raw lead.
  • Letting bot or test submissions into the CRM, where they become “leads” the platforms learn from.

How MSG approaches this

We define conversions before we scale: what a qualified lead is, which CRM stage proves it, and where each number comes from. We then wire click ID capture into the form, map CRM stages to platform events, and set campaigns to optimize on the deepest stage the volume supports. Every test has a written hypothesis, a budget and a decision date. We work inside your own ad accounts and CRM. See our conversion service and measurement service.

Sources

  1. Google Ads Help: About offline conversion imports
  2. Google Ads Help: About enhanced conversions for leads
  3. Google Ads Help: Set up offline conversions using Google Click ID (GCLID)
  4. Google Ads Help: Guidelines for importing offline conversions
  5. Google Ads Help: Best practices for generating high-quality leads
  6. Google Ads Help: About Smart Bidding using value-based bidding for Search and Shopping
  7. Google tag platform: Consent mode overview
  8. Meta for Developers: Conversions API for CRM integration
  9. Meta for Developers: Conversion leads payload specification
  10. Meta for Developers: Implementing the CRM integration
  11. Meta for Developers: fbp and fbc parameters
  12. Meta for Developers: Deduplicate Pixel and server events
  13. Meta for Developers: Meta Pixel standard events reference

Platform features and policies change. This guide reflects the sources above as of October 28, 2026.