Offline conversion import lets you send conversion data to Google Ads after the fact. This is essential when your actual conversions happen outside your website - phone calls, signed contracts, qualified leads, or closed deals.

While Google offers manual CSV uploads and direct API integration, most businesses need something in between. Zapier and webhooks provide a no-code way to automate offline conversion imports from your CRM.

This guide walks through the complete setup process.


Why Offline Conversion Import Matters

Google Ads optimizes based on the conversions it can see. If you only track form submissions, Google optimizes for form submissions - not for qualified leads or closed revenue.

Offline conversion import closes that gap. You tell Google Ads which clicks actually turned into customers, and Smart Bidding learns to find more clicks like those.

The result is better lead quality and higher return on ad spend.


What You Need Before Starting

Before setting up the automation, confirm you have:

The GCLID is the most important piece. Without it, Google Ads cannot match your offline conversions to the original click.


Step 1: Capture the GCLID on Your Website

When someone clicks your Google Ad, Google appends a GCLID parameter to the URL:

https://yoursite.com/landing-page?gclid=EAIaIQobChMI...

You must capture this value and pass it to your CRM with the lead.

How to Capture the GCLID

Add JavaScript to your website that:

  1. Reads the GCLID from the URL
  2. Stores it in a cookie (in case the user navigates before converting)
  3. Populates a hidden form field when they submit
<script>
function getParam(p) {
  var match = RegExp('[?&]' + p + '=([^&]*)').exec(window.location.search);
  return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

function setCookie(name, value, days) {
  var expires = "";
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

function getCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

var gclid = getParam('gclid');
if (gclid) {
  setCookie('gclid', gclid, 90);
}

window.addEventListener('load', function() {
  var gclidField = document.querySelector('input[name="gclid"]');
  if (gclidField) {
    gclidField.value = getCookie('gclid') || '';
  }
});
</script>

Add a hidden field to your forms:

<input type="hidden" name="gclid" value="">

When a lead submits the form, the GCLID travels with their data into your CRM.


Step 2: Create an Offline Conversion Action in Google Ads

Before importing conversions, you need a conversion action to receive them.

  1. In Google Ads, go to Goals → Conversions → Summary
  2. Click New conversion action
  3. Select Import
  4. Choose CRM, files, or other data sources
  5. Select Track conversions from clicks
  6. Name your conversion (e.g., “Qualified Lead” or “Closed Won”)
  7. Set the value (fixed or variable)
  8. Set the conversion window (how far back to attribute)
  9. Save the conversion action

Note the conversion action name exactly. You will need it in Zapier.


Step 3: Set Up Google Ads API Access

Zapier connects to Google Ads through the API. You need:

When you add Google Ads as an app in Zapier, it will prompt you to connect your account. Follow the OAuth flow to authorize access.


Step 4: Create the Zapier Automation

Now build the Zap that sends conversions automatically.

Option A: Direct CRM Trigger

If your CRM has a native Zapier integration:

Trigger:

Action:

Option B: Webhook Trigger

If your CRM can send webhooks but lacks a Zapier integration:

Trigger:

Configure your CRM to send a POST request to that URL when a lead converts. The payload should include:

{
  "gclid": "EAIaIQobChMI...",
  "conversion_time": "2026-02-28T14:30:00Z",
  "conversion_value": 5000,
  "currency": "USD"
}

Action:


Step 5: Format the Conversion Time

Google Ads requires a specific timestamp format. The conversion time must be in ISO 8601 format or a format Zapier can parse.

Accepted formats:

If your CRM uses a different format, add a Formatter step in Zapier to convert it before sending to Google Ads.


Step 6: Test the Integration

Before relying on the automation, test it thoroughly.

  1. Create a test lead in your CRM with a real GCLID
  2. Move the lead to the conversion stage
  3. Check if the Zap triggers
  4. Verify the data sent to Google Ads
  5. In Google Ads, go to Conversions → Uploads to see import status

Google Ads may take a few hours to process and display imported conversions. Check back after 24 hours to confirm they appear.


Handling Multiple Conversion Stages

Many businesses track multiple stages:

You can import multiple conversion actions from the same CRM.

Create separate conversion actions in Google Ads for each stage. Then create separate Zaps (or paths within a Zap) that trigger on each stage change.

This gives Google Ads visibility into your entire funnel, improving optimization at every level.


Common Issues and Fixes

Conversions Not Appearing

GCLID Missing from CRM

Duplicate Conversions

Attribution Errors


Advanced: Using Webhooks Without Zapier

If you prefer direct control, you can send conversions via the Google Ads API without Zapier.

Your server sends a POST request to the Google Ads API with:

This requires development resources but removes Zapier from the equation. It also offers more flexibility for high-volume imports or complex logic.


Best Practices

Capture GCLID Early

Store the GCLID as soon as the user lands. If they navigate to other pages before converting, you need it saved in a cookie.

Set Realistic Conversion Windows

If your sales cycle is 60 days, ensure your conversion window in Google Ads is at least 60 days. Otherwise, late conversions will not attribute.

Import Regularly

The sooner Google Ads receives conversion data, the faster Smart Bidding can learn. Daily imports outperform weekly imports.

Include Conversion Values

Whenever possible, send the actual deal value. This lets Google Ads optimize for revenue, not just conversion count.

Monitor Upload Status

Check the Conversions → Uploads section in Google Ads weekly. Failed imports indicate data issues that need fixing.


Key Takeaway

Offline conversion import connects your CRM data to Google Ads, allowing Smart Bidding to optimize for real business outcomes.

Zapier and webhooks make this accessible without engineering resources. The setup requires GCLID capture, proper CRM configuration, and careful field mapping.

Once running, the automation continuously feeds Google Ads with downstream conversion data. Your campaigns learn which clicks turn into customers, and performance improves accordingly.

Related Posts

Server-Side Tracking vs Offline Conversion Import: What's the Difference?

7 min read

Server-Side TrackingOffline Conversion ImportGoogle AdsGoogle Tag ManagerConversion TrackingServer-Side Tracking Series

How to Import Offline Conversions to Google Ads Using Google Sheets

9 min read

Offline Conversion ImportGoogle AdsGoogle SheetsConversion TrackingGCLIDServer-Side Tracking Series

How to Connect Claude to Your Google Ads Account via MCP (No Coding Required)

16 min read

Claude AIMCPGoogle AdsZapierGAQLAutomationClaude AI Series
Adnan Agic

Adnan Agic

Google Ads Strategist & Technical Marketing Expert with 5+ years experience managing $10M+ in ad spend across 100+ accounts.

Need Help With Your Google Ads?

I help e-commerce brands scale profitably with data-driven PPC strategies.

Get In Touch
Back to Blog