Teach the algorithm what a real lead looks like: offline conversion imports, end to end

Smart BiddingSmart Bidding Google Ads' automated bidding. Instead of setting bids by hand, you pick a goal (a target cost per lead, a target return, or simply the most conversions) and Google sets the bid for every auction using your conversion data. and Advantage+Advantage+ Meta's family of automated campaign and creative options. You hand targeting, placements and creative combinations to Meta's delivery system and it decides who sees what. are very good at one thing: finding more of whatever you told them to find. Tell them a lead is a form submit and they’ll find you cheap form submits. Some of those will be students, competitors, and people who typed “asdf” into the company field. The platforms don’t know. They can’t see your CRMCRM Customer relationship management software, such as HubSpot or Salesforce, where leads, contacts and deals are recorded. Usually the only system that knows whether a lead was real..
Offline conversion importOffline conversion import Uploading conversions that happened outside the website, such as a lead becoming qualified or a deal closing in the CRM, back to Google Ads or Meta, matched to the original click so the platform learns from real outcomes. is how you show them. You take the stage that actually matters, “qualifiedQualified lead A lead that meets your sales team's definition of real: right kind of company, a budget, a working phone number. Different from a form fill, which anyone (or any bot) can produce.”, “booked”, “closed won”, and send it back to the platform, tied to the original click.
From then on, the bidding optimizes toward people who look like the ones who qualified. It’s the single highest-leverage tracking change on any lead-genLead gen Advertising whose goal is a prospect's contact details or a booked call rather than an immediate purchase. Common for services, coaching, B2B and anything with a sales conversation in the middle. account, and most accounts haven’t done it.
The two ways to tie a conversion back to a click
Click ID. When someone clicks a Google ad with auto-taggingAuto-tagging A Google Ads setting that adds the GCLID to your landing page URLs automatically. Required for offline conversion import and for clean Google Analytics reporting. on, the URL carries a gclid. Meta appends an fbclid. If you capture that ID at the moment the lead is created and store it on the CRM record, you can upload it later with the conversionConversion The action you want someone to take after seeing an ad: a purchase, a form fill, a booked call. Each platform counts conversions by its own rules, which is why two dashboards rarely agree. name and time, and the platform matches it to the click.
Google’s GCLID setup guide describes the mechanics: a hidden form fieldHidden field A form field the visitor can't see, filled in automatically by a script with things like the campaign name or click ID, so that information is saved on the contact record when they submit., a script that reads the parameter, and a cookieCookie A small file a website stores in your browser to recognize you on later visits. Ad tracking depends on them, and browsers and privacy laws increasingly limit them. or local storage so it survives the visitor browsing a few pages before submitting.
HashedHashing Scrambling a piece of data, like an email address, into a fixed string of characters that can't be reversed. Two systems that hash the same email get the same string, so they can match records without ever sharing the email itself. identifier. If you didn’t capture the click ID, or the lead came through a channel where you couldn’t, you can match on the hashed email or phone instead.
On Google that’s enhanced conversions for leads. On Meta, the Conversions APIConversions API Meta's server-to-server channel for sending events like leads and purchases from your own server or CRM, instead of relying on the browser pixel. Usually run alongside the pixel, which is where double counting comes from. accepts hashed customer information with a server-side event. The match rate is lower than a click ID but it’s far better than nothing.
Use both. Capture the click ID and the email. The upload sends whichever it has.
Google Ads, step by step
- Turn on auto-tagging. Without it there’s no
gclid. Google’s auto-tagging doc is explicit that it’s required for offline conversion tracking. - Capture the
gclidon the lead. Hidden field on every form, populated by a small script that reads the URL parameter and stores it in a first-partyFirst-party data Information you collect directly from your own visitors and customers (form fills, purchases, your own site's tracking), as opposed to data collected by or bought from someone else. cookie. HubSpot, Salesforce and most form tools support hidden fields natively. - Create the offline conversion action. Goals, Conversions, New conversion actionConversion action In Google Ads, a defined event you count as a conversion: a form submit, a purchase, a booked call. Primary conversion actions are the ones bidding optimizes toward; secondary ones are recorded but ignored by bidding., Import, then the CRM or “other data sources” option, then “Track conversions from clicks”. Name it for the stage: “Qualified lead”, “Closed won”. Set the value if you know it.
- Wait before uploading. Google’s guidance is to give a new conversion action 4 to 6 hours before the first upload.
- Upload on a schedule. A Google Sheet that Google Ads reads on a schedule is the simplest. Native HubSpot and Salesforce connections, Zapier, or the API all work. Each row is
gclid, conversion name, conversion time, and optionally value and currency. - Watch the window. Per Google’s offline import FAQ, a conversion with a
gclidcan be uploaded up to 90 days after the click, and one matched on hashed identifiers up to 63 days. A sales cycle longer than that needs an earlier stage.
Then make the imported stage a primary conversion action and demote the form fill to secondary. That’s the step that actually changes bidding. Leave both as primary and the algorithm still chases the cheap one.
Meta, the short version
Meta’s equivalent runs through the Conversions API. A server-side event, sent from your CRM or an automation tool when the stage changes, with the hashed email and phone, the original fbclid if you stored it, the event name (a custom event like QualifiedLead or the standard Lead with a custom parameter), and the event time.
Meta’s own docs on deduplicating pixel and server events apply here too: if the browser pixelMeta pixel A small piece of code on your website that reports visits and actions (page views, leads, purchases) back to Meta from the visitor's browser. Blocked by ad blockers and some browser privacy settings. already fired a Lead for the form submit, the qualified stage should be a different event name, or you’ll collapse two stages into one.
Once the events are flowing, change the campaign’s optimization eventOptimization event The action you tell a Meta ad set to find more of (leads, purchases, landing page views). Meta's delivery system optimizes toward whoever is likely to do that specific thing. to the qualified one. Same rule as Google: if the volume is too thin to exit learningLearning phase The period after a Meta ad set launches, or is significantly edited, while the delivery system works out who to show ads to. Results are unstable until it exits, which takes roughly 50 optimization events in 7 days., keep optimizing on the form fill but use the qualified event to judge results.
The gotchas that break it
Timestamps. Google wants the conversion time with a timezone, and it has to be after the click. A CRM that exports dates without times will be rejected or misattributed.
Duplicate uploads. Re-uploading the same gclid and conversion name at the same time is deduplicatedDeduplication Matching a browser pixel event and a server event that describe the same action, using a shared event ID, so the platform counts it once instead of twice.. Re-uploading with a slightly different time is counted twice. Make the export idempotent.
Missing click IDs. If only 30% of leads have a gclid, the imported stage will look like it has a 30% rate compared to the form fill and the bidding will read it that way. Check the capture rate before you trust the numbers.
ConsentConsent In tracking terms, the visitor's explicit permission for your site to set cookies and share their activity with ad platforms. Under laws like Quebec's Law 25, tracking that identifies or profiles someone needs it first.. If the visitor didn’t consent to ad tracking, don’t send their identifiers. The upload pipeline needs to respect the same consent flag the pixel does.
What changes afterwards
The cost per form fill usually goes up. That’s expected and it’s the point. Cost per qualified lead goes down, because the algorithm is finally optimizing on the thing that pays the bills, and the sales team stops complaining about the leads.
This is the one setup I’d do on every lead-gen account before touching creativeCreative The ad itself: the image or video, the words on it, and the copy underneath. "Testing creative" means trying different versions of the ad to see which one people respond to., audiences, or bids. It’s a day of work with a CRM that cooperates. If you’d like it built and verified, it’s part of the tracking and attribution service.