Google Ads Offline Conversions: The Complete Guide to Uploading Real Revenue Data
How offline conversions reach Google Ads: click IDs, hashed contact data, a file upload, and the Data Manager API. Covers conversion actions, Smart Bidding, and the errors that still reject a row.
Google Ads offline conversions allow you to import real-world business outcomes — booked jobs, signed contracts, completed sales — directly into Google Ads so the platform’s Smart Bidding algorithms can optimize for actual revenue instead of proxy metrics like clicks and form fills.
The Upload Offline Conversions App (TUOCA) was built specifically for this workflow. This comprehensive guide covers everything you need to know: the three types of offline conversions Google supports, how GCLID matching works, the role of Enhanced Conversions for Leads, conversion action configuration, API specifics, Smart Bidding impact, and the most common errors you’ll encounter.
Why Google Ads Offline Conversions Matter
Google Ads’ Smart Bidding — Target CPA, Target ROAS, Maximize Conversion Value, Maximize Conversions — is a machine learning system. It learns from the conversion signals you provide. The quality of its optimization is directly proportional to the quality of your conversion data.
For service businesses (HVAC, plumbing, legal, dental, roofing), the conversions that matter most — a $4,500 AC installation, a $12,000 roof replacement, a $8,000 legal retainer — happen offline. Without uploading this data, Smart Bidding optimizes for whatever it can see: clicks, page views, form submissions.
The result? Your $50/click budget goes to campaigns that generate $15 leads instead of campaigns that generate $4,500 customers. Smart Bidding is working perfectly — it’s just optimizing for the wrong objective.
Three Types of Google Ads Offline Conversions
1. Click Conversions (GCLID-Based)
The most common type. When a user clicks your ad, Google appends a GCLID (Google Click Identifier) to your landing page URL. Your CRM or call tracking tool captures and stores this GCLID. When the lead converts to a customer, you upload the GCLID along with the conversion details.
Required fields:
| Field | Description | Example |
|---|---|---|
gclid | The Google Click Identifier | EAIaIQobChMI8dml... |
conversion_action | Resource name of the conversion action | customers/123/conversionActions/456 |
conversion_date_time | When the conversion occurred (timezone-aware) | 2026-04-15 14:30:00-05:00 |
conversion_value | Revenue amount | 4500.00 |
currency_code | ISO 4217 currency | USD |
Optional but recommended:
| Field | Purpose |
|---|---|
order_id | Deduplication — prevents the same conversion from being counted twice |
external_attribution_data | Custom attribution model data |
GCLID requirements:
- Must be captured at click time (from URL parameter)
- Google keeps a GCLID for 90 days after the click, so a job closed on day 75 can still be uploaded and the same job closed on day 91 cannot.
- Auto-tagging must be enabled in Google Ads
- GCLID must belong to the same Google Ads account (or MCC hierarchy) as the conversion action
2. Call Conversions
Specifically for phone calls driven by Google Ads call extensions, call-only ads, or website call buttons:
| Field | Description |
|---|---|
caller_id | Phone number of the caller (E.164 format) |
call_start_date_time | When the call started |
conversion_action | Resource name |
conversion_date_time | When the conversion occurred |
conversion_value | Revenue amount |
When to use call conversions vs. click conversions: Use call conversions when the phone call itself is the conversion event and you’re tracking via Google’s call reporting. Use click conversions when you have the GCLID from a call tracking tool like CallRail or CallTrackingMetrics.
3. Enhanced Conversions for Leads
The newest and most privacy-forward option. Instead of relying on the GCLID, Enhanced Conversions matches on hashed PII — specifically, the SHA-256 hash of the user’s email address, phone number, or name.
How it works:
- User clicks your ad and submits a form with their email
- Google records the hashed email associated with the click
- Days/weeks later, the lead converts to a customer
- You upload the hashed email + conversion data
- Google matches the hash to the original click
Key advantages:
- Works cross-device (user clicks on phone, converts on desktop)
- Hashed contact data can match when the click ID was never stored. Still send the GCLID on that same conversion when you have it.
- Privacy-compliant (only hashes are transmitted)
- A hashed email or phone matches for 63 days after the click, and from day 64 through day 90 only the GCLID still matches.
PII normalization requirements (before hashing):
- Email: lowercase, trim whitespace, remove dots from Gmail
- Phone: E.164 format (+1XXXXXXXXXX)
- Name: lowercase, trim whitespace
- All hashing: SHA-256 only (not MD5, not Base64)
See What Is Enhanced Conversions? for the complete guide.
Setting Up Conversion Actions
Before you can upload offline conversions, you need to create a conversion action in Google Ads with the correct configuration.
Step-by-Step
- Navigate: Google Ads → Goals → Conversions → Summary → New conversion action
- Select type: Choose “Import” (not Website, App, or Phone calls)
- Select source: Choose “CRM, files, or other data sources”
- Select conversion type: Click through to “Track conversions from clicks” or “Track conversions from leads (Enhanced Conversions for Leads)”
- Configure:
- Name: Descriptive (e.g., “Booked Job”, “Signed Contract”, “Completed Sale”)
- Value: Use different values for each conversion, or set a default
- Count: “One” for leads/contracts, “Every” for purchases
- Click-through window: 30, 60, or 90 days (match your typical sales cycle)
- Attribution model: Data-driven (recommended) or last-click
- Save the conversion action
Critical detail: The conversion action must be type “Import.” If you accidentally create a “Website” type action, offline uploads will be silently rejected.
For the full step-by-step with screenshots, see How to Upload Offline Conversions to Google Ads.
Upload Methods
Method 1: Google Ads UI (CSV Upload)
The simplest method. Prepare a CSV file with the required columns, then:
- Go to Google Ads → Goals → Conversions → Uploads
- Click the upload button
- Select your CSV file
- Review the preview and confirm
CSV format for click conversions:
Google Click ID,Hashed Email,Order ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
EAIaIQobChMI...,a8b14f04...,job-1842,Booked Job,2026-04-15 14:30:00-05:00,4500.00,USD
That row is one booked job: the click ID, the hash of the customer’s email, your job number, and 2:30 p.m. Central written as 2026-04-15 14:30:00-05:00. If you only have the click ID, you can upload, but add the hash and the job number whenever the CRM has them.
Limitations: Manual process, no scheduling, no deduplication, no error retries.
Method 2: Data Manager API
Use this when a script uploads the job for you. You still read the account list and the conversion actions with the Google Ads API. The upload of the offline job, including the hashed email, goes through the Data Manager API.
After June 15, 2026, a developer token that was not already uploading is rejected on the old click-upload call. Call conversions and later adjustments are separate requests. Sending a new offline file to the old call will fail.
Method 3: TUOCA automated relays
TUOCA turns that upload into a configuration instead of a custom request:
- Connect your data source (CallRail, CallTrackingMetrics, ServiceTitan, etc.)
- Connect your Google Ads destination (OAuth flow, select account/MCC)
- Map your conversion action
- Set filter rules (optional — e.g., only upload leads with status “Booked”)
- Set schedule (hourly, daily, weekly)
- Activate the relay
The relay handles: data fetching, format transformation, PII normalization and hashing, GCLID validation, deduplication, upload, error handling and retries, per-record activity logging.
See Automated Relays for details.
Attribution: Click Date vs. Conversion Date
One of the most confusing aspects of Google Ads offline conversions: Google attributes the conversion to the date the click occurred, not the date the conversion occurred.
This means if a user clicked your ad on March 1 and booked a job on April 15, the conversion appears in your March 1 report — not your April 15 report.
Why this matters:
- Recent campaign performance always looks worse than it is (conversions haven’t been uploaded yet)
- Historical performance improves over time as conversions trickle in
- You can’t evaluate a campaign’s true performance until at least one full sales cycle has passed
How to read reports correctly:
- Use “Conversions by conversion time” segments to see when conversions actually occurred
- Set your default reporting window to at least 2× your average sales cycle
- Understand that today’s numbers will look better in 30–60 days
For a deep dive, see Google Ads Click Date vs. Conversion Date.
Smart Bidding Impact
Uploading offline conversions unlocks the full power of Google’s Smart Bidding, particularly value-based bidding strategies:
Target ROAS (Return on Ad Spend)
With conversion values from offline uploads, you can set a Target ROAS and let Google optimize bids to meet that return. Without values, this strategy doesn’t work.
Example: You set Target ROAS at 500%. Google learns that keywords like “HVAC installation [city]” generate $5,000 average conversion values and bids aggressively. Keywords like “AC filter replacement” generate $50 values and get minimal bids.
Maximize Conversion Value
Instead of maximizing the number of conversions, this strategy maximizes total value. It will sacrifice volume to pursue higher-value conversions.
Target CPA Impact
Even without values, uploading offline conversions as simple events dramatically improves Target CPA. The algorithm stops optimizing for form fills and starts optimizing for actual customer acquisition.
Google measured an average 26% increase in incremental ROAS for Search campaigns bidding to conversion value, among advertisers who connected offline and app data to Data Manager, from April 2025 through April 2026. That is Google’s average for that setup. Judge the change on your own spend and your own uploaded revenue.
Processing Delays and Timing
Understanding Google’s processing timeline is critical for troubleshooting:
| Event | Typical Delay |
|---|---|
| Click occurs → you can upload it | Wait 6 hours after the click before you upload it: a click at 9:00 a.m. is too recent at noon and is ready at 3:00 p.m. |
| Upload submitted → data appears in reports | About 3 hours. Typically under 12 hours. A GBRAID or WBRAID row can take up to 72 hours. |
| Judging Smart Bidding | Google’s Smart Bidding help says you can turn it on with no conversion history, and that you should judge results over a period with at least 30 conversions, such as a month, and over 50 conversions before you judge Target ROAS. |
Common Errors
When uploading offline conversions to Google Ads, you’ll encounter these errors most frequently:
| Error | Cause | Fix |
|---|---|---|
| CLICK_NOT_FOUND | GCLID not recognized — non-Google traffic, too recent, or expired | Verify GCLID source, add 6-hour delay, check 90-day window |
| UNPARSEABLE_GCLID | Malformed GCLID — URL encoding issues, truncation | Validate GCLID format before upload |
| EXPIRED_GCLID | Google keeps a GCLID for 90 days after the click, so a job closed on day 75 can still be uploaded and the same job closed on day 91 cannot. | Upload an earlier milestone, such as a qualified lead, while the click is still inside 90 days. A hash does not rescue day 91. |
| INVALID_CONVERSION_ACTION | Wrong conversion action type or ID | Ensure action type is “Import” |
| DUPLICATE_CONVERSION | Same GCLID + conversion action uploaded twice | Use order_id for deduplication |
| INVALID_USER_IDENTIFIER | PII not properly normalized/hashed | Lowercase, trim, E.164 phones, SHA-256 only |
Before a record is sent: TUOCA checks the click ID, normalizes contact data, checks the expiration window, drops duplicates, and waits out the processing delay.
MCC (Manager Account) Uploads
For agencies, Google Ads supports uploading conversions at the MCC (Manager Account) level:
- Conversions are automatically attributed to the correct child account based on the GCLID
- Conversion actions can be created at the MCC level and shared with child accounts
- Single API authentication covers all child accounts
- TUOCA supports MCC-level configuration natively
Recommended setup for agencies:
- Create conversion actions at the MCC level
- Share them with relevant child accounts
- Configure TUOCA to upload to the MCC
- Use the Agency Dashboard for cross-client monitoring
Getting Started
- Create a conversion action — Type “Import”, name it descriptively, set value tracking to “Use different values”
- Enable auto-tagging — Settings → Account settings → Auto-tagging → ✅
- Ensure GCLID capture — Your CRM or call tracking tool must store the GCLID
- Prepare your first upload — Start with a manual CSV upload to validate the workflow
- Automate — Set up TUOCA Automated Relays for hands-off operation
- Add revenue data — Use Fusion Relays to combine call tracking with CRM revenue
- Switch to value-based bidding — Once you have 30+ conversions with values over 30 days, switch to Target ROAS or Maximize Conversion Value