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:
- A Google Ads account with conversion tracking enabled
- A CRM that captures leads (HubSpot, Salesforce, Pipedrive, etc.)
- GCLID capture on your website forms
- A Zapier account (paid plan required for multi-step Zaps)
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:
- Reads the GCLID from the URL
- Stores it in a cookie (in case the user navigates before converting)
- 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.
- In Google Ads, go to Goals → Conversions → Summary
- Click New conversion action
- Select Import
- Choose CRM, files, or other data sources
- Select Track conversions from clicks
- Name your conversion (e.g., “Qualified Lead” or “Closed Won”)
- Set the value (fixed or variable)
- Set the conversion window (how far back to attribute)
- 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:
- A Google Ads manager account (MCC) or standard account
- API access enabled
- OAuth connection through Zapier
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:
- App: Your CRM (HubSpot, Salesforce, Pipedrive, etc.)
- Event: Deal stage changed, Lead status updated, or similar
- Filter: Only when stage equals “Qualified” or “Closed Won”
Action:
- App: Google Ads
- Event: Upload Offline Conversion
- Fields:
- Google Click ID: Map to your GCLID field
- Conversion Action: Select from dropdown
- Conversion Time: Map to the timestamp
- Conversion Value: Map to deal value (optional)
Option B: Webhook Trigger
If your CRM can send webhooks but lacks a Zapier integration:
Trigger:
- App: Webhooks by Zapier
- Event: Catch Hook
- Copy the webhook URL Zapier provides
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:
- App: Google Ads
- Event: Upload Offline Conversion
- Map the webhook fields to Google Ads fields
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:
2026-02-28T14:30:00Z2026-02-28 14:30:00- Unix timestamp
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.
- Create a test lead in your CRM with a real GCLID
- Move the lead to the conversion stage
- Check if the Zap triggers
- Verify the data sent to Google Ads
- 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:
- Lead submitted (tracked client-side)
- Marketing Qualified Lead
- Sales Qualified Lead
- Proposal sent
- Closed won
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
- Verify the GCLID is valid and not truncated
- Check the conversion time is within the conversion window
- Confirm the conversion action name matches exactly
- Wait 24-48 hours for processing
GCLID Missing from CRM
- The capture script may not be loading
- The hidden field may not exist on the form
- The cookie may have expired before submission
- The CRM field mapping may be incorrect
Duplicate Conversions
- Add a filter in Zapier to prevent re-triggering
- Use the order ID field to deduplicate
- Check if your CRM fires multiple webhooks for the same event
Attribution Errors
- The click may be outside the conversion window (default 90 days)
- The GCLID may belong to a different Google Ads account
- The click may not have been a paid click
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:
- OAuth credentials
- Customer ID
- Conversion action resource name
- GCLID
- Conversion time
- Conversion value
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
How to Import Offline Conversions to Google Ads Using Google Sheets
9 min read
How to Connect Claude to Your Google Ads Account via MCP (No Coding Required)
16 min read
Need Help With Your Google Ads?
I help e-commerce brands scale profitably with data-driven PPC strategies.
Get In Touch