Platform Guide 4 min read

Google Analytics Offline Conversions: Importing CRM Data into GA4

Last verified: 2026-11-05

Google Analytics 4 (GA4) can incorporate offline conversion data through two mechanisms: Data Import and the Measurement Protocol. However, it’s critical to understand the distinction between GA4 and Google Ads for offline conversion tracking — they serve fundamentally different purposes.

This guide from The Upload Offline Conversions App (TUOCA) explains how offline data flows into GA4, when to use GA4 vs. Google Ads for offline tracking, and how to set up both for a complete picture.

GA4 vs. Google Ads: Different Purposes

FeatureGoogle Ads Offline ConversionsGA4 Offline Data
Primary purposeSmart Bidding optimizationAnalytics & reporting
Influences bidding✅ Yes (directly)❌ No
Matching methodGCLID, MSCLKID, hashed PIIclient_id, user_id
Upload methodCSV, or the Data Manager APIData Import, Measurement Protocol
Value-Based Bidding✅ Supported❌ Not applicable
AttributionClick-level (GCLID)User-level (client_id)
TUOCA support✅ Primary destination❌ Not directly (different purpose)

The Key Distinction

Google Ads offline conversions feed directly into Smart Bidding, influencing how Google bids on your ads. This is where TUOCA focuses.

GA4 offline data enriches your analytics reports, giving you a fuller picture of the customer journey across channels. It does not influence Google Ads bidding.

If you have to choose one, choose Google Ads. It directly impacts campaign performance and revenue.

Method 1: GA4 Data Import

Data Import lets you upload CSV files that are joined to existing GA4 data.

Setting Up Data Import

  1. Go to GA4 Admin → Data collection and modification → Data import
  2. Click Create data source
  3. Select Event data as the import type
  4. Configure the data set:
SettingDescription
Name“CRM Offline Conversions”
Import typeEvent data
Keyclient_id or user_id
Imported fieldsCustom dimensions/metrics you want to add

CSV Format for Data Import

client_id,event_name,event_timestamp,value,currency,conversion_type
GA1.1.123456789.1714502400,offline_booked_job,1714502400,4500,USD,hvac_install
GA1.1.987654321.1714502400,offline_booked_job,1714588800,1200,USD,drain_clearing

Capturing client_id

The GA4 client_id is stored in the _ga cookie. To join offline data, you need to capture this ID alongside lead information:

// Read GA4 client_id from _ga cookie
function getGA4ClientId() {
  const cookie = document.cookie.split(';').find(c => c.trim().startsWith('_ga='));
  if (cookie) {
    const parts = cookie.split('.');
    return parts.slice(2).join('.');
  }
  return null;
}

// Store in hidden form field
const clientId = getGA4ClientId();
if (clientId) {
  document.getElementById('ga_client_id').value = clientId;
}

Limitations of Data Import

  • Not real-time — CSV uploads are batch-processed
  • Requires client_id matching — Must capture GA4 client_id at lead time
  • Doesn’t influence bidding — GA4 data doesn’t flow to Google Ads Smart Bidding
  • Upload limits — 120 uploads per data source per day

Method 2: GA4 Measurement Protocol

The Measurement Protocol sends events directly to GA4 via server-side API calls.

Endpoint

POST https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXX&api_secret=YOUR_API_SECRET

Event Payload

{
  "client_id": "123456789.1714502400",
  "events": [{
    "name": "offline_booked_job",
    "params": {
      "value": 4500.00,
      "currency": "USD",
      "conversion_type": "hvac_install",
      "source_system": "servicetitan"
    }
  }]
}

Setting Up Measurement Protocol

  1. Go to GA4 Admin → Data streams → your stream → Measurement Protocol API secrets
  2. Click Create to generate an API secret
  3. Use the secret in your API requests

Advantages of Measurement Protocol

  • Near real-time — Events appear quickly in GA4 reports
  • Server-side — No browser dependency
  • Flexible — Send any custom event with any parameters
  • Programmatic — Can be integrated into CRM workflows

Limitations

  • Still requires client_id — Without it, events are orphaned
  • Doesn’t influence Google Ads bidding — Same limitation as Data Import
  • No retroactive attribution — Can’t attribute to past sessions without client_id

When GA4 Offline Data Is Valuable

Cross-Channel Analysis

GA4 shows the complete customer journey across channels:

Session 1: Google Ads click (captured online)
Session 2: Direct visit (captured online)
Session 3: Phone call → Booked job (captured via Measurement Protocol)

Custom Reports

Build reports that combine online and offline data:

  • Online leads vs. offline conversions by channel
  • Customer journey length (first touch to conversion)
  • Cross-device paths

Audience Building

Import offline conversion data to build GA4 audiences:

  • “Customers who booked a job” → Target with remarketing
  • “High-value customers ($5,000+ jobs)” → Build lookalike audiences

For most service businesses, the optimal setup is:

1. Upload to Google Ads (Via TUOCA)

GCLID/MSCLKID-based uploads that feed Smart Bidding. This is the high-impact action.

2. Send to GA4 (Via Measurement Protocol — Optional)

If you want richer analytics, also send events to GA4. This supplements your reporting but doesn’t replace Google Ads uploads.

3. Don’t Choose GA4 Over Google Ads

Some marketers try to use GA4 as a middleman: upload to GA4, then import GA4 goals into Google Ads. This is less reliable than uploading directly to Google Ads via API and adds unnecessary complexity.

How TUOCA Relates to GA4

TUOCA focuses on Google Ads, Meta, Microsoft Ads, and TikTok as destinations because these are the platforms where offline conversion data directly influences bidding and campaign performance.

GA4 is an analytics tool, not an advertising platform. While GA4 offline data enriches your understanding of the customer journey, it doesn’t optimize your ad spend. TUOCA prioritizes the highest-impact path: getting revenue data into the platforms that bid on your behalf.

Next Steps

  1. Set up Google Ads offline conversions first — This is the high-impact action
  2. Consider GA4 Measurement Protocol if you need cross-channel analytics
  3. Capture GA4 client_id in your forms if you plan to use Data Import
  4. Read the Google Ads guide — Google Ads Offline Conversions: Complete Guide

Frequently Asked Questions

Yes, but the process is different from Google Ads. GA4 supports offline data through two methods: (1) Data Import — upload CSV files with offline events that are joined to existing GA4 data using a common key (client_id or user_id), (2) Measurement Protocol — send events directly via API. However, for Smart Bidding optimization, you should upload to Google Ads directly, not through GA4.

Both serve different purposes. Upload to Google Ads for Smart Bidding optimization and campaign-level attribution. Import to GA4 for comprehensive analytics, cross-channel reporting, and understanding the full customer journey. TUOCA uploads directly to Google Ads (the path that influences bidding), but GA4 import can complement your analytics.

GA4 Data Import lets you upload CSV files that are joined to existing GA4 records using a common key (typically client_id). You define a data set in GA4 Admin, configure the key field and imported fields, then upload CSVs on a schedule. Imported data enriches your GA4 reports but does NOT feed into Google Ads Smart Bidding.

The Measurement Protocol is a server-side API for sending events to GA4 without client-side JavaScript. You send HTTP POST requests with event data to GA4's collection endpoint. This is useful for recording offline events (phone calls, CRM stage changes) as GA4 events, which then appear in your analytics reports.

Stop Guessing. Start Proving ROI.

TUOCA connects your CRM and call tracking data directly to your ad platforms. Set up in minutes.