Feeding Offline CRM Conversions Back to Google Ads via Enhanced Conversions


The Attribution Gap in B2B

B2B sales cycles break the assumptions Google Ads was built on. A click happens on day 1. A form fill happens on day 1 or 2. The deal closes in ActiveCampaign or Pipedrive on day 30, 60, or 90. By then, the browser session is gone, the cookie is expired, and Google Ads has zero visibility into whether that click produced revenue.

The result: Smart Bidding optimizes for form fills (the last observable event), not for closed deals. Campaigns that generate high-volume, low-quality leads get rewarded. Campaigns that produce fewer but higher-value opportunities get starved of budget.

Three compounding factors make this worse in 2026:

  • Ad blockersgtag.js never fires for ~30% of desktop users. The click happened, the GCLID was captured in the URL, but no conversion event was recorded client-side.
  • ITP and cookie expiry — Safari caps JavaScript-set cookies at 7 days. A 30-day sales cycle means attribution is impossible via client-side mechanisms.
  • Manual upload friction — Google Ads supports offline conversion imports via CSV, but teams rarely do it consistently. The process requires exporting from the CRM, formatting the file, mapping fields, and uploading weekly. It breaks within a month.

What Enhanced Conversions Solve

Google’s Enhanced Conversions API accepts conversion data server-side, matched to the original click via two mechanisms:

  1. GCLID match — the Google Click ID captured at the time of the ad click, stored alongside the lead in the CRM.
  2. User-provided data match — SHA-256 hashed email, phone, or address. Google matches these against its logged-in user graph when GCLID is unavailable.

The server-side path bypasses every client-side limitation: no JavaScript execution required, no cookies involved, no browser dependency. The conversion is posted from your server (or a third-party pipeline) directly to the Google Ads API.

The Data Flow: CRM to Google Ads

The Nexopath pipeline connects ActiveCampaign or Pipedrive to Google Ads with zero middleware. The architecture:

Step 1: GCLID Capture at Lead Creation

When a visitor clicks a Google ad and lands on your site, the URL contains a gclid parameter. Your form submission (whether native, HubSpot, Typeform, or custom) must pass this value into the CRM as a custom field on the contact or deal record.

Most form tools support hidden fields populated from URL parameters. The critical requirement: the gclid must persist in the CRM record. If it’s lost, Enhanced Conversions falls back to hashed PII matching — still functional, but lower match rates.

Step 2: CRM Webhook on Deal Won

When a deal moves to “Won” (or your equivalent closed-won stage) in ActiveCampaign or Pipedrive, a webhook fires to the Nexopath endpoint. The payload contains:

  • Contact email and phone (PII that will be hashed before transmission)
  • Deal value (the actual revenue, not the projected pipeline value)
  • The GCLID stored in the custom field
  • Timestamp of the stage change

Step 3: PII Hashing and Payload Construction

Nexopath hashes all PII fields using SHA-256 before the data leaves the pipeline. Google requires specific normalization before hashing:

  • Email: lowercase, trim whitespace. " User@Example.com " becomes user@example.com, then hashed.
  • Phone: E.164 format. (555) 123-4567 becomes +15551234567, then hashed.
  • Name: lowercase, trim. Hashed separately (first name, last name).

The constructed payload sent to the Google Ads API:

{
  "conversionAction": "customers/1234567890/conversionActions/987654321",
  "gclid": "EAIaIQobChMI8d2x...",
  "conversionDateTime": "2026-05-07 14:30:00-04:00",
  "conversionValue": 15000.0,
  "currencyCode": "USD",
  "userIdentifiers": [
    {
      "hashedEmail": "a8f5f167f44f4964e6c998dee827110c3e2e4e6e1ea4db5f8b42e1b9f12e5b3a"
    },
    {
      "hashedPhoneNumber": "1b3d4c8e9f5a2c7d6e8b1f4a3c9d2e7f5b8a1c6d4e9f2a3b7c5d8e1f6a4b9c2d"
    }
  ]
}

Step 4: Google Ads API Submission

The payload is submitted via the ConversionUploadService.UploadClickConversions endpoint. Nexopath handles:

  • OAuth2 token management — refresh tokens, expiry, re-authentication.
  • Retry logic — transient failures get exponential backoff. Permanent failures (invalid GCLID, conversion action not found) are logged with actionable error messages.
  • Deduplication — the same deal-won event won’t be uploaded twice, even if the CRM webhook fires multiple times.

Why Not Zapier or Make

The common alternative is a Zapier/Make workflow: CRM trigger → formatter step → Google Ads upload step. Three operational problems:

  1. No native hashing — Zapier doesn’t SHA-256 hash PII. You need a Code step (JavaScript or Python) to normalize and hash each field. This is fragile: format changes in the CRM break the normalization logic silently.
  2. Rate limits and task costs — each deal-won event consumes one or more Zapier tasks. High-volume pipelines (50+ deals/day) hit plan limits or incur overage costs that exceed the value of the integration.
  3. No retry or deduplication — if the Google Ads API returns a transient 500, Zapier marks the step as failed. You get an email notification. The conversion is lost unless someone manually replays it.

The Nexopath integration handles hashing, retries, and deduplication as core infrastructure, not as bolted-on workarounds.

Setup: ActiveCampaign

The integration is available on the ActiveCampaign marketplace. Setup flow:

  1. Install the Nexopath app from the ActiveCampaign marketplace. Authorize with OAuth2.
  2. Map the GCLID field — select which custom field on your contact or deal stores the Google Click ID.
  3. Select the trigger stage — choose which pipeline stage represents a closed-won deal.
  4. Connect Google Ads — authenticate your Google Ads account. Nexopath lists your existing conversion actions; select the one designated for offline conversions, or create a new one.
  5. Test — manually move a test deal to the trigger stage. Verify the conversion appears in Google Ads within 4-6 hours (Google’s processing delay, not Nexopath’s).

Total setup time: under 5 minutes. No API keys to copy, no webhook URLs to configure manually, no code.

Setup: Pipedrive

The same flow applies via the Pipedrive marketplace:

  1. Install and authorize.
  2. Map the GCLID custom field on the deal.
  3. Select the won stage in your pipeline.
  4. Connect Google Ads.
  5. Test with a manual deal.

Pipedrive’s webhook infrastructure delivers events within seconds of a stage change. The Nexopath pipeline processes and submits to Google Ads in near-real-time; the only delay is Google’s own ingestion window.

Match Rates and Troubleshooting

Expected match rates depend on your GCLID capture rate:

ScenarioExpected Match Rate
GCLID present on deal, user logged into Google95%+
GCLID missing, hashed email matches Google account40-60%
GCLID missing, no email match0% (unattributable)

The single highest-impact action for improving match rates: ensure your lead capture form persists the GCLID into the CRM. Everything else is secondary.

Common failure modes:

  • GCLID field is empty — the form doesn’t capture URL parameters, or the landing page strips query strings. Fix the form, not the pipeline.
  • Conversion action mismatch — the conversion action in Google Ads must be set to “Import” type, not “Website” or “App”. Nexopath validates this during setup but cannot change it retroactively.
  • Time zone drift — the conversionDateTime must use the same time zone as your Google Ads account. Nexopath reads your account time zone automatically.

What Changes in Google Ads After Activation

Once offline conversions flow consistently (minimum 2-4 weeks of data), two things shift:

  1. Smart Bidding recalibrates — the algorithm sees which clicks produce actual revenue, not just form fills. Campaigns optimizing for Target ROAS or Maximize Conversion Value now factor in deal-won events with real revenue values.
  2. Audience signals improve — Google builds better lookalike audiences from users who actually converted to paying customers, not from users who filled out a form and never responded.

Neither of these effects is immediate. Budget reallocation based on offline conversions requires a minimum data volume. Google recommends at least 30 conversions per month per conversion action for Smart Bidding to function reliably.

Limitations

  • Attribution window — Google Ads accepts offline conversions up to 90 days after the click. Deals that close beyond 90 days cannot be attributed.
  • Google Ads only — this pipeline currently targets the Google Ads API. Meta’s Offline Conversions API uses a different protocol and is on the Nexopath roadmap but not yet available.
  • CRM data quality — if the email in the CRM doesn’t match the email the user has on their Google account, the hashed PII match fails. There is no workaround for this at the pipeline level.

Next Step

Install the Nexopath Enhanced Conversions app from the ActiveCampaign or Pipedrive marketplace. The 14-day free trial includes full pipeline access with conversion delivery reporting so you can validate match rates before committing.