Google Analytics 4 is a powerful tool for tracking and analyzing online user behavior and conversions. However, many businesses also have conversions that occur offline, such as in-store purchases, phone orders, or contract signings. This is where offline conversion tracking becomes essential.
Offline conversion tracking allows you to attribute offline conversions, like sales or subscription activations, back to the original online marketing channels and user journeys that led to them. This gives you a more complete picture of your marketing effectiveness and return on investment across all your conversion points – both online and offline.
The process works by collecting identifiers like email addresses or phone numbers from website/app visitors and associating them with the unique Google Analytics Client ID assigned to each user. When an offline conversion occurs, you match the conversion data to the identifier and Client ID, then upload that information to Google Analytics. This allows Google Analytics to connect the offline conversion back to the original online user journey.
There are a few different methods for uploading offline conversions to Google Analytics, such as manual CSV uploads, the Measurement Protocol API, or using a customer data platform integration like Able CDP. Each option has its own pros and cons in terms of automation capabilities, ease of setup, and pricing.
This guide focuses on Google Analytics 4 (GA4), which replaced Universal Analytics in July 2023. The methods described here are specific to GA4's architecture and may differ from older Universal Analytics implementations.
What is offline conversion?
Google Analytics tracking is centered on recording information about website visitors or mobile app users. For it to accurately report any conversion that doesn't happen on the website or in the mobile app, it needs to understand which online user the offline conversion refers to.
Common types of offline conversions include:
- recurring payments,
- subscription activations,
- CRM qualifications and won deal events,
- phone orders, and
- in-store purchases.
One example of offline conversion tracking is when a customer completes a purchase through a payment system on a proprietary back-office platform. In this scenario, the customer may have initially interacted with the company's website or app but ultimately finished the transaction offline. By implementing offline conversion tracking, you can attribute the sale to the appropriate online marketing efforts that led the customer to make the purchase, even though it occurred outside of the website or app.
Another example of offline conversion tracking is CRM qualification and won deals conversions. In this case, a potential customer may have filled out a lead form on the company's website or engaged with their content, but the actual conversion, such as a sale or contract signing, happens offline after the lead has been qualified by the sales team.
How offline conversion tracking works in Google Analytics
When a visitor interacts with your website or app, Google Analytics 4 (GA4) assigns them a unique identifier called a Client ID (_ga cookie value). This Client ID is stored in the user's browser as a first-party cookie and follows the format of GA1.2.XXXXXXXXXX.XXXXXXXXXX. When an offline conversion occurs, such as a payment processed offline, CRM deal closed won or subscription activation, it needs to be matched to this Client ID for proper attribution.
In order to associate offline purchases and other conversions with the sources, you'll need to collect additional information from the customer, such as their email address or phone number, associating it with Client ID known to Google Analytics 4 at the time of online form completion or tracked phone call.
By uploading offline conversion data that is matched with the online visitor data using the collected customer information to GA4, GA4 can attribute the offline conversion to the corresponding online visitor. This allows you to understand which online marketing channels, campaigns, or content contributed to the offline conversion.
To associate offline conversions with online visitor sources, follow these steps:
- Collect customer information: when a form is completed on the website, collect relevant customer information such as email address, phone number, or a unique identifier, associating it with Google Analytics Client ID. Third-party call tracking services can be used to associate phone number with the Client IDs.
- When an offline conversion occurs, match offline conversion with online visitor by looking up the Client ID by a customer identifier and upload it to Google Analytics using events data import, measurement protocol or Able CDP integration.
An attributed set of offline conversions would have each conversion referenced to a Client ID and, often, Session ID:
Once conversions are attributed to the respective Client Ids, they can be uploaded to Google Analytics.
Uploading offline conversions using events data import feature
Google Analytics 4 offers a method to upload offline conversions using event data import. Importing events with this method requires preparing a CSV file with event details and uploading it in the Data Import user interface in Google Analytics.
CSV File Format Requirements
The CSV file must follow specific formatting guidelines:
- File encoding: UTF-8
- Header row: Required (must match field names exactly)
- Delimiter: Comma (,)
- Maximum file size: 1GB
- Maximum rows: 1 million events per file
Required and Optional Fields
Required Fields:
- client_id or app_instance_id: The Google Analytics Client ID (for web) or App Instance ID (for apps)
- event_name: The name of the conversion event (e.g., "purchase", "offline_conversion")
- timestamp_micros: Unix timestamp in microseconds when the event occurred
Optional but Recommended Fields:
- user_id: Your own user identifier if you're using User-ID tracking
- session_id: GA4 session identifier for better attribution
- event_params: Additional event parameters in JSON format
- user_properties: User properties in JSON format
Example CSV Structure
Here's an example of a properly formatted CSV file for offline purchase conversions:
client_id,event_name,timestamp_micros,event_params.value,event_params.currency,event_params.transaction_id
1234567890.1234567890,purchase,1698768000000000,99.99,USD,ORDER-12345
9876543210.9876543210,purchase,1698768300000000,149.50,USD,ORDER-12346
For more complex conversions with multiple parameters, you can use JSON format:
client_id,event_name,timestamp_micros,event_params
1234567890.1234567890,purchase,1698768000000000,"{""value"":99.99,""currency"":""USD"",""transaction_id"":""ORDER-12345"",""items"":[{""item_id"":""SKU123"",""item_name"":""Product Name"",""quantity"":1,""price"":99.99}]}"
Timestamp Requirements
- Events must have occurred within the last 72 hours
- Timestamp must be in microseconds (not milliseconds)
- To convert from seconds: multiply by 1,000,000
- To convert from milliseconds: multiply by 1,000
Upload Process
- Navigate to Admin > Data Import in GA4
- Click "Create data source"
- Select "Offline events" as the data type
- Upload your CSV file
- Map the CSV columns to GA4 fields
- Review and complete the import
Pros: doesn’t require any additional software.
Cons: requires creating a proprietary method for capturing and storing Google Analytics Client Ids, requires dedicated staff time for manual preparation and upload of a data file every few days, risking human errors and lack of real-time insights.
Uploading offline conversions using Google Analytics Measurement Protocol
The Google Analytics Measurement Protocol API provides a programmatic way to send offline conversion data directly to GA4, enabling real-time tracking and automation of the import process.
How Measurement Protocol works
The Measurement Protocol allows you to make HTTP requests to send raw event data directly to Google Analytics servers. This bypasses the need for JavaScript tracking code and enables server-to-server communication for offline events.
API setup requirements
- Measurement ID: Found in your GA4 web stream settings (format: G-XXXXXXXXXX)
- API Secret: Generate in GA4 Admin > Data Streams > choose your stream > Measurement Protocol API secrets
- Client ID tracking system: Implement server-side storage of GA4 Client IDs from website visitors
- Server environment: Set up a server or cloud function to make API calls
API request structure
Send a POST request to: https://www.google-analytics.com/mp/collect
Required parameters:
- api_secret: Your Measurement Protocol API secret
- measurement_id: Your GA4 Measurement ID
Request body example:
{
"client_id": "1234567890.1234567890",
"events": [{
"name": "offline_purchase",
"params": {
"value": 150.00,
"currency": "USD",
"transaction_id": "TXN-12345",
"items": [{
"item_id": "SKU123",
"item_name": "Product Name",
"price": 150.00,
"quantity": 1
}]
}
}]
}
Implementation considerations
- Session tracking: Include session_id parameter to maintain session continuity
- User properties: Send user_properties object for user-level data
- Batch processing: Send up to 25 events per request for efficiency
- Error handling: Implement retry logic for failed requests
- Rate limits: Maximum 25 events per request, 1MB payload size
Pros: allows to create a fully automated unattended process.
Cons: a proprietary process for capturing and storing Google Analytics Client ID is still required, as well as creating an API integration, monitoring it and updating when API changes. The method is prone to ongoing maintenance costs, need for technical expertise, and time to build custom solutions.
Importing offline conversions into Google Analytics using Able CDP
Able CDP offers an easy-to-use method of importing offline conversions into Google Analytics continuously. Able combines tracking of Client IDs and associating customers with their Clients Ids once they sign up, receiving conversions from popular applications such as payment systems or CRMs and sending them to Google Analytics.
Google Analytics Client ID is tracked when a lead, a contact or a sign-up form is completed. It is then associated with customer details such as an e-mail or a phone number, which allows Able to retrieve Client ID by an offline identifier, establishing association of an offline conversion with the visitor and ensuring Google Analytics would link the offline conversion with pre-existing user online activity through the Client ID, sending it to Measurement Protocol.
If a call tracking provider such as CallRail is used, Able would receive associations between phone numbers and website visitors from it, and then use the same process to attribute offline conversions to online visitors’ ids.
In addition to recording Client IDs, Able records Session IDs, which enables attribution in Google Analytics by the Session Source dimension, in addition to First User Source. This dimension requires an online session to be active at the time when offline conversion occurs, in order to display it’s Session Source, Channel and other session metrics.
Able is also more reliable than the aforementioned methods, as it provides automated monitoring and updates ensure your tracking never breaks.
Pros: no coding required, can be set up quickly and runs completely unattended, importing offline conversions into Google Analytics 4 in real-time.
Cons: subscription fee. However, investment in Able CDP typically pays for itself within 30 days through improved attribution accuracy and time savings
How to import Google Analytics offline conversions with Able CDP
Sign up for an Able CDP account
Create an account with Able CDP to access offline conversion attribution features.
Track Google Analytics Client IDs on your website
After registration, follow the step-by-step instructions provided by Able CDP to install tracking code on your website.
This tracking code will allow Able CDP to store the Google Analytics Client Id and associate it with each customer's activity.
-
- Able CDP's form tracking automatically recognizes static web forms, such as common Wordpress plugins or Webflow.
- For dynamic lead magnet widgets like Sumo or single-page application JavaScript forms (React.JS, Vue.JS), follow instructions on the 'Web Application' tab to set up form tracking.
- If you're using an e-commerce platform like WooCommerce, ensure that the check-out forms are properly tracked. See the integration instructions for further details.
Track Google Analytics Client IDs for phone calls (optional)
If you're using CallRail or Paycall for call tracking, integrate them with Able CDP to attribute offline conversions to phone calls.
Ensure that your call tracking provider is set up to capture the Google Analytics Client ID and associate it with the unique trackable phone number displayed on your website using dynamic number insertion (DNI) technology.
In Able, press 'Add Service Integration' and select the integration you're interested in to see the instructions:
Connect Able CDP to sources of offline conversions
Integrate Able CDP with your CRM (e.g., Salesforce, Scoro), payment systems (e.g., Stripe), or e-commerce platforms (e.g., WooCommerce, Kajabi) to import offline conversion data.
Press 'Add Service Integration' in Able Dashboard to see a list of supported integrations.
- Able would automatically look up previously stored Google Analytics 4 Client Id by a customer identifier such as an email or a phone number, attributing each offline conversion to a web user and, when possible, session.
- If you're using a proprietary back-office platform, use Able CDP's offline conversions API to integrate it with the system directly or send webhooks using Zapier.
Connect Able CDP to Google Analytics Measurement Protocol
Configure Able CDP to send offline conversion data to Google Analytics Measurement Protocol in real-time.
First, open web stream settings in Google Analytics 4 admin to obtain a measurement id and set a measurement secret for your property:
Save these settings in Able and enable sending of conversion events to GA:
This will allow Google Analytics to attribute the offline conversions to the original marketing channel, source, and campaign associated with the visitor.
Verify and test the integration
Now, it's time to test everything and ensure that the offline conversion import to Google Analytics 4 is working as intended.
- Test the integration by triggering an offline conversion event and verifying that it appears in Able's customer reports
- Verify that the conversion is in your Google Analytics reports with the appropriate attribution. In our experience, Google Analytics usually processes conversions within 1 day, however, it might take up to 48 hours for them to appear.
The most frequent cause for conversions missing from GA4 altogether would be hiding of infrequent conversions by Google Analytics due to the use of event thresholding. In such cases, the report would have an orange-brown exclamation mark icon, signifying that the data is processed by GA4 but are hidden from the report. This is most common when Google Signals are enabled and disabling Google Signals would usually resolve the issue.
By following these steps, you can set up Google Analytics 4 offline conversion attribution, allowing you to measure the return on ad spend (RoAS) from each marketing channel and analyze the conversion events and touchpoints that lead to a purchase.