Tracking offline conversions means sending the sales, signed contracts, booked jobs and phone orders that happen after an ad click back to the ad platform, so it can credit the right campaign. You capture an identifier when the lead arrives (a click ID, or the customer's email or phone number), record the outcome in your CRM or point-of-sale system, then upload that outcome to Google Ads, GA4 or Meta. This guide walks through each step, the limits that cause most failures, and a change to Google's import pipeline that matters this year.
TL;DR
- Capture a click ID (GCLID for Google) or hashed customer details at the moment of the lead, and store it with the contact record. Without that, nothing can be matched later.
- Upload within 90 days of the ad click. Google Ads won't import conversions uploaded later than that.
- Google is moving offline imports to the Data Manager API starting June 15, 2026, so check how your current upload tool connects.
- GA4 and Meta each have their own method (Measurement Protocol or event import for GA4, a dataset and Conversions API for Meta). Use a stable order ID so re-uploads are not double counted.
- Tell customers in your privacy policy that their data may be used for marketing.
Table of Contents
- What counts as an offline conversion
- Before you build anything: decide what to track
- How to track offline conversions in Google Ads
- How to track offline conversions in GA4
- How to track offline conversions in Meta
- Tracking phone call conversions
- A worked example
- Keep the data clean: a checklist
- Privacy: what to tell customers
- Our perspective
- Where we can help
- Common mistakes to avoid
- FAQ
- Sources
What counts as an offline conversion
An offline conversion is any valuable action that happens outside your website after an online touchpoint. For a local or service business, that usually means one of these:
- A phone call that turns into a booked appointment or estimate.
- A form lead that a salesperson qualifies, quotes and closes by email or in person.
- A walk-in purchase by someone who clicked an ad or searched your business on their phone.
- A signed contract, a policy sale, a deposit or a repeat order recorded in a CRM.
The problem is easy to see in the numbers. An ad platform sees a click and, if you track it, a form submission. It does not see that one lead in five became a $4,000 job. If you only report the form fill, a campaign that sends tire-kickers looks as good as one that sends buyers. The platform's bidding then optimizes toward whatever you reported.
Google describes the benefit of the import as measuring what happens in the offline world after someone clicks your ads. The same logic applies on Meta and in GA4.
Before you build anything: decide what to track
Most setups fail on planning, not on technology. Spend an hour on these four decisions first.
1. Pick the stage that is a real business outcome
A "lead" is too early. A "sale" can be too late if your sales cycle is long. Many small businesses do best tracking two stages: a qualified lead (the call was answered, the budget fits) and a closed sale with its value. The qualified stage gives the platform enough volume to learn from. The closed stage tells you true return.
2. Choose the identifier you will match on
There are two main routes:
- Click ID. When someone clicks a Google ad, a Google Click ID (GCLID) is added to the landing page URL. You capture it in a hidden form field and save it with the lead.
- Customer data. You send hashed email addresses or phone numbers, and the platform matches them to its signed-in users. This is how Meta matches, and it is also an option on Google.
If you can do both, do both. Click IDs are precise when they exist. Customer data fills the gap when a click ID is lost, for example when a caller phones from an ad but never fills in a form.
3. Decide where the outcome gets recorded
Someone has to mark the lead as qualified or won, in a CRM, a spreadsheet or a booking system. Offline tracking is only as accurate as that habit. If your team updates records once a month, your uploads will be late and your optimization will lag.
4. Set the upload rhythm
Daily is best, weekly is workable. Remember the 90-day window described below, and remember that platforms reward fresher signals.
How to track offline conversions in Google Ads
Google Ads offers two related approaches. Offline conversion import with a GCLID is the older one. Enhanced conversions for leads is the upgraded version, which adds hashed customer data to improve matching. Google's own help page explains that enhanced conversions for leads is an upgraded version of offline conversion import, and a separate page covers how to upgrade an existing import.
Step 1: Turn on auto-tagging
In Google Ads, auto-tagging must be on so that the GCLID is appended to your landing page URLs. Check this first, because without it no click ID is generated.
Step 2: Capture the click ID on your site
Your website needs to read the GCLID from the URL and place it in a hidden field in every lead form. Many form plugins and landing page builders have a ready-made option. Check that the value actually arrives in your CRM: submit a test lead from an ad URL with a fake GCLID parameter and look at the record.
Phone leads need a different approach. Use call tracking that logs the click ID of the visitor session, or ask your team to record the source of every call. If you use Google's own call options, calls from ads can be counted as conversions directly, which is a good starting layer before you import sales.
Step 3: Create the conversion action
In Goals, create a conversion action of the import type for your CRM or other file source. Give it a name that describes the stage, such as "Qualified lead" or "Closed sale". Decide whether each lead counts once or every time, and assign a value. For sales, upload the actual revenue or margin per job so that bidding can learn what a high-value lead looks like.
Step 4: Build the upload
You need three things per row: the identifier, the conversion action name, and the conversion time with its time zone. Add a value and currency for sales. Upload by a scheduled file, a CRM integration or an API connection.
Step 5: Upload on time and check the diagnostics
Offline conversions uploaded more than 90 days after the associated last click won't be imported. If your sales cycle runs longer than three months, you need to upload an earlier milestone as well, such as a signed quote.
Google also maintains a page on how to fix discrepancies and errors in offline conversion imports. Check the diagnostics tab after your first upload. The common errors are a missing or expired click ID, a conversion time before the click time, and a mismatch between the conversion action name in the file and in the account.
What changes in 2026
Two changes are worth knowing about, because they affect anyone who built an import some years ago.
First, Google states that starting June 15, 2026, offline conversion imports and enhanced conversions for leads uploads will be migrated to the Data Manager API and blocked in the Google Ads API. The notice also refers to developer tokens that haven't sent a request in a given period. If your uploads run through a custom script, a CRM connector or an agency tool, ask whoever built it whether it already uses the Data Manager API. Industry coverage of the change is available in Search Engine Land's report.
Second, Google has combined the settings for enhanced conversions. Its upgrade guide says that enhanced conversions for web and leads are now combined into a single on/off setting, and that from April 2026 Google Ads accepts user-provided data from website tags, Data Manager and API connections. That means one setting, and fewer places to misconfigure.
Since it is now October 2026, the practical test is simple: open your conversion action, look at when it last received data, and read any warnings. If the last upload predates June, your connector may have stopped working.

How to track offline conversions in GA4
GA4 treats everything as an event, and offline outcomes are no different. You have two routes, and the right one depends on whether you can write code.
Route A: Import offline events
Google lets you import offline events from sources that have no internet connection or that cannot support real-time collection. You prepare a file, upload it, and the events appear in your reports. This is the low-tech option and it suits a business that exports closed deals from a CRM once a week.
Route B: Measurement Protocol
The Measurement Protocol is a standard set of rules for sending events directly to Google Analytics servers, from a kiosk or point-of-sale system for example. Google's guide to offline sales explains how developers can use the Measurement Protocol to send offline conversions with HTTP requests. This is better when you want events sent the moment a deal closes, and when a developer or an automation tool is available.
In both routes, the event must be linked to a user or session. Store the client ID or session identifier from the visit alongside the lead, the same way you store the GCLID.
Mark the event as a key event
In GA4 you then flag the event as a key event (the term GA4 now uses for what used to be called a conversion). Give the event a clear name such as qualified_lead or sale_closed, send a value parameter for sales, and check the event in the realtime or DebugView reports before you rely on it.
Tracking form submissions and phone clicks on the site
The offline journey starts with an online action, so make sure the front end is accurate too. Track form submissions with a thank-you page view or a form-submit event in Google Tag Manager, and track tap-to-call clicks on mobile as their own event. A tap is not a conversation, so treat it as an early signal and not a final result. Then use the offline import for what happens after the call.
How to track offline conversions in Meta
Meta's process is built around customer data, not click IDs. The setup, as documented in Datahash's guide to the Meta offline conversions API, runs like this:
- Create a dataset (formerly an offline event set) in Meta Events Manager.
- Prepare event data with an event name, event time and customer identifiers such as email, phone or name.
- Upload the data through the Conversions API or by manual file upload.
- Meta matches the hashed identifiers to its users and attributes the conversion to your campaigns.
The same documentation advises using a stable order ID as a deduplication key, so that a file you upload twice, or a batch that gets replayed, doesn't count the same sale twice. That is a good habit on every platform: one sale, one ID, forever.
Match rate depends on how much identifying data you collect. A phone number alone matches less often than an email plus a phone number plus a name. Ask for an email on every lead form, even when phone is your main channel.
If you want more on how server-side connections feed ad platforms, we cover it in our article on server-side tracking with sGTM and CAPI.
Tracking phone call conversions
For many local businesses, the phone is the main conversion, so it deserves its own plan.
| Call type | How to capture it | What you still need to do |
|---|---|---|
| Click-to-call from an ad | Call reporting in the ad platform | Log call outcome after the call |
| Tap on your site's phone number | Click event in GA4 or Tag Manager | Match the caller to a CRM record |
| Dialed from a printed number or a listing | Dynamic or unique tracking numbers | Record the source on every intake |
| Calls from your Google Business Profile | Profile call reports | Ask "How did you hear about us?" |
The weak link is always the same: a call is not a sale. After the call, someone must record whether it was a real inquiry, whether an estimate was booked and whether the job was won. A two-field note in your CRM (outcome and value) is enough to feed an upload.
If you rely on local discovery, your Google Business Profile is part of this picture too. Our local SEO guide on Google Business Profile and reputation explains how to get the profile in shape so the calls you track are worth tracking.
A worked example
Take a hypothetical home services company. It spends $3,000 a month on Google ads and gets 60 form leads and 40 calls. Reporting the form fills alone, it sees 60 conversions at $50 each.
Now suppose the team records outcomes for each lead. Out of the 100 contacts, 30 are qualified and 12 become jobs with an average value of $1,800. Uploaded back, the platform now sees 12 sales worth $21,600 against $3,000 of spend. This example uses invented figures purely to show the arithmetic.

The point is what happens next. Campaigns and keywords that produced the 12 sales get more budget, and those that produced only unqualified form fills lose it. The $50 "cost per lead" turns into a cost per job of $250, which is the number you can actually run a business on.
Keep the data clean: a checklist
Before you trust any offline report, run through these checks.
- One identifier per lead. Every lead has a click ID, a client ID, or hashed contact data stored from day one.
- Timestamps in one time zone. Mixed time zones are a classic reason for rejected uploads, especially a conversion that appears to happen before the click.
- Unique order IDs. Needed to prevent duplicates on Meta and useful everywhere.
- Values in one currency. Pick revenue or gross margin and stay consistent.
- Uploads inside the window. Google's limit is 90 days from the click.
- A test upload. Send three real records and confirm they show up before you automate.
- A monthly audit. Compare conversions in the ad platform against closed deals in your CRM. A gap of a few percent is normal. A big gap means a broken link in the chain.
Privacy: what to tell customers
Sending customer data to ad platforms is a marketing use of personal information, and it should be disclosed. The FTC's privacy guidance, summarized by a law firm in its overview of the final FTC privacy report, points businesses toward transparency and giving people a reasonable way to opt out of non-essential tracking. That report dates from 2012, so treat it as background and not as a complete picture of today's law.
Practical steps:
- Update your privacy policy to say that data collected online and offline may be used for advertising and measurement.
- Offer a clear way to opt out, and remove those contacts from your upload files.
- Upload only what you need: identifier, event, time and value. Notes and health or financial details do not belong in an ad platform.
- Check state rules. Several states have passed their own privacy laws, and we looked at one angle in our piece on Maryland and Oregon geo-data restrictions.
If your business handles regulated data, such as medical or financial records, speak with a privacy attorney before you send any customer data to an ad platform.
Our perspective
We work with small and mid-sized local businesses, and the pattern repeats: the owner knows which jobs were profitable, but the ad account has never been told. The campaigns are tuned to the cheapest lead, not the best customer.
Our view is that offline tracking is the single most underused lever for local advertisers. It costs very little compared with ad spend, and it changes which keywords, locations and audiences get budget. We also think the simple version beats the fancy one. A reliable weekly upload of qualified leads and closed sales will outperform an elaborate integration that nobody checks.
We pair this with the rest of the visibility picture. Tracking tells you which channels bring customers. Local SEO, reviews and search presence decide how many of those customers find you in the first place, including through AI-driven answers and search suggestions. Measure first, then put the effort where the closed sales are.
— Diane O'Brien
Where we can help
If you would rather have this set up and managed than build it yourself, our team runs paid campaigns and local visibility work for small and mid-sized businesses. You can see the full list on our services page, which includes Google and Facebook advertising and review generation.
If your main goal is to be found by nearby customers, our Local Domination packages are published at $450 one-off for Local Domination and $600 one-off for Advanced Local Domination. If you want an SEO engagement tied to outcomes, Pay Per Result SEO is listed at $650 to $2,500 per month. Contact us to talk through which fits your business and your tracking setup.
Common mistakes to avoid
- Tracking the lead and calling it done. Form fills tell you volume, not quality.
- Not storing the click ID. If the GCLID is not saved when the lead arrives, you cannot recover it later.
- Uploading too late. A long sales cycle plus a 90-day limit means some sales never reach Google Ads. Upload an earlier milestone too.
- Ignoring the API change. A connector that worked in 2025 may have stopped after the June 2026 migration.
- Counting the same sale twice. Re-uploading a file without order IDs inflates results.
- Skipping disclosure. Customers should know their data may be used for marketing.
FAQ
What is the easiest way to start tracking offline conversions?
Start with Google Ads. Turn on auto-tagging, add a hidden GCLID field to your lead forms, and record the outcome of each lead in a spreadsheet or CRM. Then upload a file of qualified leads and closed sales on a schedule. This takes an afternoon and needs no developer.
How long do I have to upload an offline conversion to Google Ads?
Google says conversions uploaded more than 90 days after the associated last click won't be imported. If your sales take longer, upload an earlier stage, such as a qualified lead or a sent quote, so the data still arrives in time.
Can I track offline conversions in GA4?
Yes. You can import offline events from a file, or send them with the Measurement Protocol. Either way you need a client or session identifier saved with the lead, and you should mark the resulting event as a key event.
How do I track offline conversions in Meta?
Create a dataset in Events Manager and upload events with customer identifiers such as email and phone, either through the Conversions API or a file. Meta matches the hashed data to its users. Use a stable order ID so that re-uploads do not create duplicates.
Is it legal to send customer data to ad platforms?
It depends on your state, your industry and what you collect, so ask a privacy attorney if your data is sensitive. As a baseline, disclose the marketing use in your privacy policy and give people a way to opt out.
Sources
- Set up offline conversions using Google Click ID (GCLID) - Google Ads Help
- Guidelines for importing offline conversions - Google Ads Help
- Fix discrepancies and errors in offline conversion imports - Google Ads Help
- Upgrade offline conversion import to enhanced conversion for leads - Google Ads Help
- How to upgrade offline imports - Google Ads Help
- Google is moving offline conversion imports out of the Google Ads API - Search Engine Land
- [GA4] Import offline events - Analytics Help
- Measurement Protocol - Analytics Help
- Grow offline sales - Analytics Help
- Meta Offline Conversions API setup - Datahash Signals
- FTC Releases Final Version of Privacy Report - Loeb & Loeb LLP
