Get your FREE Ads Audit Guy

Please fill out below. We'll be in touch today!

Your Google Ads dashboard shows more enquiries and a healthier cost per lead, but your sales team isn't celebrating. They're rejecting unsuitable contacts, chasing people who never answer and closing no more business than before. Meanwhile, the campaign producing fewer enquiries might be the one bringing in customers.

Offline conversion import connects CRM outcomes to the advertising that generated them. The difficult part isn't moving records between systems. It's deciding which CRM stage deserves to influence bidding, what that event is worth and whether you can trust the record behind it.

Why Form Fills Send Smart Bidding the Wrong Signal

Say a prospect submits your enquiry form on Monday. In a hypothetical sales cycle, they become a qualified opportunity three weeks later and sign a contract after ten weeks. Without CRM feedback, Google Ads sees the form submission but not the qualification or the sale.

That's like judging a recruitment campaign by applications rather than hires. Applications tell you the advert persuaded people to respond. Hires tell you whether it helped fill the vacancy.

A professional sitting at a desk with a large stack of paperwork and an offer letter.

When every form submission carries the same conversion value, a student, competitor and genuine buyer can look equally useful to the bidding system. Smart Bidding doesn't know your sales team rejected the first enquiries unless you send that distinction back.

Google's offline conversion setup guidance describes the connection between captured click identifiers, lead-management records and subsequent conversion uploads. That connection lets you measure commercial milestones rather than stopping at the website enquiry.

Change the goal, not just the report

The practical correction has several parts:

  • Keep form submissions secondary. Retain visibility without making every enquiry the bidding objective.
  • Import meaningful CRM outcomes. Feed back qualification, opportunities and completed sales using agreed triggers.
  • Assign defensible values. Reflect commercial quality rather than giving every stage the same placeholder amount.

A secondary action is principally a reporting signal, not an automatic bidding instruction. Check campaign goals and custom goals before assuming that changing an action's label has changed what the campaign optimises towards.

The distinction between enquiry volume and lead-quality data in UK B2B advertising matters more than a tidier dashboard.

Practical rule: Only import events you can define, timestamp and trust.

Map CRM Stages to Conversion Actions and Values

One stage, one conversion action, one explicit CRM trigger. Agree that model with sales before connecting HubSpot, Pipedrive or Salesforce. A salesperson's interpretation of qualified mustn't change according to how busy they are.

Use separate actions for lifecycle milestones, but don't automatically make them all primary. Otherwise, a single customer journey can contribute several overlapping successes to the bidding objective.

CRM stage to Google Ads conversion action mapping

CRM stage CRM trigger Google Ads role Counting setting Value model
Form submission Form completed and contact created Secondary, for reporting and early signal Once per lead Fixed low value or none
Marketing-qualified lead Lifecycle stage set to MQL Secondary, import for signal Every, with unique timestamp Average deal value × MQL rate
Sales-qualified opportunity Deal created at qualified stage Secondary or primary, depending on volume Every, with unique timestamp Average deal value × opportunity rate
Closed-won customer Deal moved to won Primary for Smart Bidding after validation Every, with unique timestamp Actual contract value excluding VAT
Refund or cancellation Deal moved to lost or refunded after win Adjustment to original conversion Not a new conversion Negative adjustment of original value

Treat once per lead as a business rule, enforced through CRM deduplication and stable event identifiers. Google Ads' One counting setting isn't a substitute for deduplicating CRM contacts. Where the table uses Every, generate an event only for the agreed milestone, not whenever someone edits the record.

Google's conversion import guidance explains that matching duplicate uploads are counted once, while different timestamps can represent separate conversions under Every. A retry must therefore retain the original event identity and time.

Make the value mean something

Define the rates in the table as the probability of winning from that stage, not merely the proportion of leads entering it. For example, in a hypothetical model, a £12,000 average contract multiplied by a 25% opportunity-to-win rate gives an opportunity value of £3,000. If 25% merely describes how many enquiries become opportunities, that calculation doesn't establish an opportunity's expected revenue.

Apply each row consistently:

  • Form submission: Record the response without pretending it's revenue.
  • MQL: Require agreed fit criteria, not just a downloaded document.
  • Opportunity: Require sales acceptance and a credible buying requirement.
  • Closed-won: Use the actual contract amount, net of VAT.
  • Refund or cancellation: Reduce, restate or retract the original conversion using the supported adjustment method. Don't upload a negative-value sale.

Closed-won is the preferred commercial target when it's timely and sufficiently frequent. If it's sparse, a rigorously defined opportunity can be the more usable primary goal.

For businesses selling through quotations or credit accounts, tracking the journey from click to account revenue makes the distinction particularly important.

How to Capture and Pass the GCLID from Form to CRM

The Google Click Identifier, or GCLID, connects a later CRM outcome to the original advertising interaction. Google's offline conversion documentation recommends preserving it with the prospect's record and including it when importing subsequent outcomes.

Use this flow to check where the identifier could disappear.

A diagram illustrating the four-step process to capture and pass GCLID from website forms to a CRM.

Build and test the capture chain

  1. Confirm auto-tagging and the landing URL. Check that gclid appears after a controlled live ad click. Follow redirects through to the final page, because a parameter present on the initial URL may disappear before your capture script runs.

  2. Read the parameter on arrival. Use a website script or tag-manager implementation to capture it and, where permitted, persist it in a first-party cookie. Respect the relevant consent state rather than treating persistence as unconditional.

  3. Populate every lead form. Write the stored identifier into a hidden field called gclid. Test embedded forms and multi-step forms separately, since a working standard contact form doesn't prove those implementations work.

  4. Create dedicated CRM fields. In HubSpot, use a single-line text contact property such as google_click_id. In Pipedrive, create a text field on the person or deal and define how the value transfers between them; in Salesforce, create matching custom text fields such as GCLID__c on Lead and Opportunity.

  5. Map the submission explicitly. Connect the hidden website field to the CRM property in your form handler, integration or automation. Don't assume matching display names create the mapping automatically.

  6. Protect Salesforce lead conversion. Add the custom field to lead-conversion mapping so the identifier reaches the Opportunity. Include a Contact field too if your reporting or integration reads from Contact rather than Opportunity.

  7. Preserve the attribution record. Don't replace the identifier when a salesperson changes the lifecycle stage. If repeat enquiries need separate attribution, retain a dedicated enquiry or deal-level record instead of repeatedly overwriting one contact-level field.

  8. Submit and inspect a test lead. Confirm the exact GCLID reaches the CRM, survives qualification and remains attached to the exported conversion event. Compare the values character for character.

The accompanying video provides another way to follow the implementation.

Test beyond the contact record

A populated CRM field proves capture, not the whole import. Inspect an outbound record containing conversion_action, conversion_time, conversion_value, currency_code and a stable event identifier.

Use the time the milestone happened, including its time zone, rather than the export time. Check that a lead converted into a deal still carries the same attribution key. Testing that full chain before increasing spend prevents you from discovering later that sales records exist but can't be connected to clicks.

Enhanced Conversions for Leads When the GCLID Is Missing

A lead can reach your CRM without a usable GCLID because a form dropped the parameter, a browser restricted storage or a phone enquiry bypassed the website form. Enhanced conversions for leads can supplement matching with customer-provided email addresses and telephone numbers. It doesn't make every direct visit or untracked call attributable to an advert.

Google's scheduled-upload guidance requires normalised customer identifiers before SHA-256 hashing, a conversion timestamp and an eligible matching key. It also states that the advertiser must accept the Google Ads customer-data terms for enhanced conversions for leads to function.

Matching identifiers, normalisation and when to use them

Identifier Where it lives in the CRM Formatting before upload Use when
GCLID Hidden form field stored on contact, person or lead Exact value, unchanged Click identifier is present; always preferred
Hashed email Email field on contact or lead Lower case, trimmed, then SHA-256 No GCLID, email captured
Hashed phone Phone field on contact or lead E.164 format, including country code, then SHA-256 No GCLID, phone captured
Email and phone together Both fields Both normalised and hashed No GCLID, both captured; gives matching more usable identifiers
Neither identifier No usable click or contact data Not applicable Do not import; report separately

Normalise before hashing

For UK telephone numbers, standardise the international format with +44 and remove the domestic leading zero. Remove spaces and presentation punctuation before hashing. For email addresses, trim surrounding whitespace and lower-case the address, applying Google's provider-specific punctuation rules rather than stripping punctuation indiscriminately.

Keep the original customer information in controlled CRM fields and generate the upload representation separately. That lets you correct a transformation without damaging the sales record.

Check whether your connector expects raw identifiers or pre-hashed values. Some integrations handle hashing themselves; hashing an already hashed value produces a different identifier and won't fix a failed match.

Hashing is a matching preparation step, not permission to share the underlying personal data.

Send one event with the supported identifiers attached. Don't submit a plain import and then create another enhanced event for the same milestone.

The practical rule is to send GCLID wherever it's available and supplement it with eligible customer data. Where it's missing, use properly normalised email and phone rather than discarding an otherwise eligible outcome, but don't assume a match is guaranteed.

Upload Frequency, Consent and Suppression Rules

Choose an upload rhythm that keeps useful milestones timely. These are operating recommendations, not promises that a particular conversion window or matching method will accept every record.

Upload rhythm by sales cycle length

Sales cycle Upload rhythm Conversion window Stages to import
Under 7 days Daily Covers full lag plus a buffer Form, MQL and closed-won
1 to 4 weeks Daily Covers longest typical quote-to-close lag Every stage, with unique timestamps
Over 90 days Weekly batch, with early stages sent as soon as they occur Maximum allowed for the selected action and import method Early stages; later outcomes need an alternative eligible signal if outside the import limit

A conversion window doesn't override the import method's click-age limit. Check the applicable eligibility rules before building the schedule, and send earlier milestones promptly rather than waiting for a long-running deal to close.

Google's enhanced conversions for leads guidance describes supplementing offline records with normalised, hashed customer identifiers. Use a supported Data Manager connection or upload integration, map only the required fields and keep stage names consistent.

Put the consent gate before the export

The ICO's electronic marketing guidance explains consent requirements and withdrawal rights. Your operational design needs evidence of the applicable purpose and permissions, not merely an email address in a contact record.

Store fields such as:

  • Purpose and provenance: measurement_purpose, lawful_basis, consent_wording_version and consent_source.
  • Timing and jurisdiction: consent_timestamp, withdrawal_timestamp and jurisdiction.
  • Export eligibility: ads_measurement_status and suppression_reason.

Filter withdrawn, suppressed and otherwise ineligible records before each scheduled export. Log how many records were excluded and why, without copying unnecessary personal information into the log. Restrict access and apply a documented retention policy.

Keep advertising-measurement eligibility separate from marketing-email permission. A CRM contact being available to sales doesn't establish permission for every advertising use, and Consent Mode configuration doesn't replace the CRM audit trail.

Common Import Mistakes and How to Fix Them

When uploads are accepted but attribution is weak, inspect capture before changing the bidding strategy. A missing GCLID, an overwritten field or a broken contact-to-deal mapping can leave technically valid records with little useful matching information.

Then work through the symptom rather than rebuilding the integration indiscriminately.

Import symptoms, causes and fixes

Symptom Likely cause Fix
Low match rate on uploads GCLID not stored at capture or overwritten at a later stage Store GCLID in a dedicated field and never overwrite it during progression
Lead volume up, sales flat Form fill still the primary action Make validated closed-won primary where usable; keep form fill secondary
Duplicate conversions Same event sent with changing identifiers or timestamps, or Every used without event controls Send a stable unique identifier, preserve event time and use the intended counting setting per action
Weak enhanced match rate Email or phone not normalised before hashing Trim and lower-case email; format phone internationally with the correct country code; hash once
Inflated conversion values Form-stage value copied into closed-won, or mixed currencies Set values per stage and consistently report GBP excluding VAT
Uploads rejected as too old Lag exceeds Google's applicable click-age limit Send early stages sooner and split long-cycle deals into meaningful milestones
Cancelled deals still counted Refunds sent as new events Send refunds and cancellations as adjustments to the original conversion

Distinguish a transport fault from a goal fault

An accepted upload doesn't prove that the campaign is optimising towards it. Inspect the campaign's selected conversion goals, any custom goals and the actions included in the bidding objective.

Similarly, Every isn't a duplicate-conversion error by default. It becomes a problem when your automation generates a fresh conversion whenever the same deal is saved, reopened or synchronised. Build the event key from the CRM deal and milestone, then preserve it across retries.

Inspect the event, not just the total

For inflated values, open individual records. Check whether an opportunity's estimated value was copied into the won event, whether VAT was included and whether the exporter changed currency labels without converting the amount.

For cancelled deals, establish who owns the correction. Finance may know about a refund before sales updates the CRM, so an adjustment workflow that listens only to sales stages can miss it.

A successful upload means the platform accepted the record. It doesn't mean the event definition, value or bidding goal is correct.

Check the diagnostic report after every upload batch. Separate rejected records, accepted records and matched outcomes in your monitoring so that a healthy job status can't hide a broken measurement process.

Confirm the First Import Before Trusting Smart Bidding

A smaller, consistently defined conversion set is more useful than a larger upload you can't reconcile. That's a measurement decision, not a claim that fewer conversions always improve performance. Sparse, delayed sales may still be unsuitable as the sole bidding target.

The ICO's detailed guidance for small organisations distinguishes lawful bases and marketing requirements. Having a lawful reason to retain a CRM record doesn't automatically make every advertising use appropriate.

Use this checklist before handing the new outcome to bidding.

An infographic titled Confirm the First Import Before Trusting Smart Bidding with five actionable steps for data accuracy.

Validate before making the action primary

I would start with closed-won imports as a secondary action and reconcile them over a short observation period. Compare eligible CRM records with accepted and matched outcomes by event, date and value, allowing for conversion lag. Don't expect every CRM sale to appear as an attributed advertising conversion.

Before changing campaign goals, confirm:

  • Capture: New eligible leads retain their identifiers.
  • Definitions: Sales and marketing agree stage triggers.
  • Values: Won revenue is net of VAT and correctly denominated.
  • Deduplication: Retries preserve event identity.
  • Permissions: The suppression filter runs before export.
  • Reconciliation: The first batch matches its eligible CRM source records.

Add opportunity imports as a secondary diagnostic signal once the pipeline works. Promote a stage to primary only when its quality, frequency and delay make it a defensible bidding objective.

An outside audit of your lead-generation setup can check the CRM model alongside the account settings. This week, capture a test lead from a live click and trace it from form to CRM to Google Ads.


PPC Geeks offers CRM integration and offline conversion tracking support to connect lead-generation campaigns with qualified opportunities and sales. Visit PPC Geeks to request an audit of your identifier capture, stage mapping and conversion goals before changing what Smart Bidding optimises towards.

Author

Search Blog

Free PPC Audit

Subscribe to our Newsletter

Recent Posts

Categories

The voices of our success: Your words, our pride

Read Our 178 Reviews Here

ppc review
Need a New PPC Agency?
Get a free, human review of your Ads performance today.