How do I check if offline conversions are imported correctly?

Alexandre Airvault
January 14, 2026

Part 1: Confirm the upload itself succeeded (before you look at reports)

Step 1: Check the Uploads page for a clean “import” result

If you’re using file-based offline conversion imports (manual upload or scheduled uploads), the fastest truth source is the Uploads page. It tells you whether Google Ads accepted the file, and if not, exactly which rows failed and why.

Go to Goals > Conversions > Uploads. When your file is received, you’ll see it appear as a new entry (uploading and applying can take a few minutes).

  • Pending actions table: If you previewed a file but didn’t apply it yet, it will sit here. You must click Apply to actually import conversions (otherwise nothing will count).
  • Status column: This is your high-level pass/fail indicator for the file import.
  • Results column: This is where you get the deeper story—how many rows imported, how many failed, and the reason(s).
  • Actions column: Use Download errors (or “Download all”) to get a copy of your rows with a “Results” field explaining success vs. the specific failure reason. Note that these download links don’t stick around forever (they expire after a period of time).

If the Uploads page shows failures, fix those first. Don’t judge success by whether your CRM says “uploaded”—judge it by whether Google Ads says “imported” at the row level.

Step 2: Use Offline Data Diagnostics to spot quality issues (even if the file says “success”)

Even when a file uploads successfully, you can still have data quality problems that prevent attribution or reduce how many conversions ultimately show in reporting and bidding. Offline Data Diagnostics is where you see whether your imported events are well-formed, valid, and consistently arriving.

To access it, go to your Conversion summary page, find the offline conversion action, look at the Status column, hover the offline data quality tooltip, then click Go to diagnostics.

In diagnostics, pay attention to the overall data quality rating and the alerts. The history view is especially useful because it can show upload batches (“jobs”) and the volume of events with errors over time. If diagnostics indicates No recent data, that typically means no events have been received in the last 28 days (or there’s a setup/connection issue), which is a big red flag for Smart Bidding and performance measurement.

Part 2: Confirm conversions are showing in Google Ads reporting the right way

Step 3: Wait the right amount of time (processing is real, and it varies)

Imported offline conversions are not always instant in reporting. As a general expectation, imported conversion stats often start appearing within about 3 hours, but conversion processing can take longer depending on identifiers and the environment.

In practical terms, I plan around these timing realities:

  • Very fresh clicks: If the click happened too recently, uploads can be rejected; retry later (a common threshold is needing at least several hours between click and upload).
  • New conversion action: If you created the conversion action recently, give it time to fully activate before uploading. Uploading immediately after creation can delay visibility in reporting.
  • iOS-related identifiers: If you’re uploading conversions keyed to iOS URL parameters (such as certain iOS-related click identifiers), processing can take significantly longer than standard GCLID workflows.

Step 4: Validate using the “by conversion time” view (most people look at the wrong date)

This is the #1 reason advertisers think offline conversions “didn’t import” when they actually did: standard Google Ads conversion reporting is often organized by impression/click time, not by the date the offline conversion happened and not by the date you uploaded it.

To validate that imports are working, add “by conversion time” columns and compare like-for-like:

  • Use All conv. (by conv. time) as your primary validation column for offline imports, because it reports conversions by the conversion timestamp included in your upload.
  • If you’re comparing standard columns vs. your CRM, also add Conversions (by conv. time) and Conv. value (by conv. time) so you can reconcile on the conversion date rather than click date.
  • Don’t compare “upload date” to Google Ads conversion reporting—Google Ads doesn’t report conversions by upload date.

Finally, make sure your date range is wide enough. If you’re looking at “this week” but the clicks that generated those offline conversions happened last week (and your account reports by click date), you’ll swear the conversions are missing.

Step 5: Segment conversions by conversion action name (to confirm they’re landing in the intended action)

Once your columns are correct, segment your conversions by Conversion action name. This is a simple way to verify your uploaded events are going to the exact conversion action you intended (and not quietly flowing into a different action because of naming confusion, cross-account setup, or mismatched mapping).

Part 3: Troubleshoot when imports “look fine” but conversions still don’t match expectations

Issue pattern A: Upload errors (rows rejected)

If the Uploads page or diagnostics show row-level failures, fix those systematically. These are the most common causes I see in real accounts:

  • Conversion time problems: The offline conversion can’t occur before the ad click. If you see invalid conversion time errors, double-check time zones and timestamps (and ensure your upload timestamps are truly when the offline conversion happened).
  • Click too recent: If the underlying click is extremely recent, retry after more time has passed.
  • Identifiers too old / upload too late: For click-based imports, uploads that occur too far after the associated click won’t be imported. In addition, some identifiers are only retained for a limited period, so “late” uploads can fail even if your CRM still has the ID stored.
  • Wrong account / wrong ownership: The upload must go into the account that owns the conversion action (or the designated conversion account in a cross-account setup). Also confirm the conversion action exists in that account and is the correct source type for offline imports.
  • Formatting and time zone fields: Timestamp format and time zone handling must be consistent. If your source data doesn’t include a time zone, ensure you’re applying a reliable fallback time zone in your import setup (otherwise rows without time zones may be dropped).

Issue pattern B: Upload says “successful,” but reporting is lower than your CRM

When the file imports cleanly but reporting is still lower than your CRM, you’re usually dealing with attribution realities or “processed but discarded” scenarios rather than a pure import failure.

Here are the big ones to check:

  • You’re uploading more conversions than Google Ads can attribute: This is normal in enhanced conversions for leads workflows where you upload all conversions (including non-Google-sourced). A portion may be unattributed by design.
  • Your conversion count setting is limiting totals: If a conversion action is set to count One, only one conversion per ad interaction is counted; additional uploaded conversions tied to the same interaction can be discarded. If you genuinely need multiple conversions per click (for example, multiple purchases or multiple offline milestones), use a conversion action configured to count Every and ensure each conversion has a distinct timestamp where required.
  • Duplicate protection is working (and that’s good): Google Ads won’t import the same conversion more than once when key fields match in a way that makes it a duplicate. If you re-upload data, duplicates are typically removed to prevent double-counting.
  • Conversion processing delays: If you’re reconciling too quickly, you’ll see temporary gaps. Give it a full processing window before you call it “missing,” especially for more complex identifier scenarios.
  • Invalid or filtered conversions: Some uploaded conversions can be filtered out if they’re deemed invalid/spam. In that case, your upload pipeline is “working,” but your upstream data quality needs attention.

Issue pattern C: Enhanced conversions for leads match rates are weak

If you’re using enhanced conversions for leads, don’t just check whether uploads succeeded—check whether matching is strong enough to be useful. Low match rates usually come from not capturing user-provided data reliably on the site, or from normalization/hashing issues before upload.

In practice, I verify three things:

  • Collection: Your site is consistently capturing the user-provided data you intend to use (email and/or phone) at the moment the lead is created.
  • Normalization: Emails are lowercased and trimmed; phone numbers follow international formatting standards; fields aren’t accidentally pre-hashed or double-hashed.
  • Consistency: The same lead’s identifiers are consistent between what was collected on-site and what is later uploaded as the offline outcome.

A quick “gold standard” test to prove end-to-end imports are working

When you need certainty, run a controlled test that creates a single click-to-conversion thread you can follow:

  • Click a live ad in a way that generates a valid click identifier and submit a lead.
  • Confirm your system stored the identifier (and/or user-provided data) exactly as required (case sensitivity matters for click identifiers).
  • Create a test offline conversion event with a clean timestamp and upload it.
  • Confirm the upload result in the Uploads page (or diagnostics/job history if you’re API/CRM-driven).
  • Confirm the conversion appears in reporting using All conv. (by conv. time), then verify it also maps back to the correct campaign/ad/keyword context (bearing in mind reporting attribution is typically organized by click/impression time).

If this single test works end-to-end, you’ve proven the pipeline is functional. From there, any remaining gaps are almost always scale issues: late uploads, inconsistent time zones, mismatched names, duplicate logic, count settings, weak match rates, or simply comparing against the wrong date basis in reporting.

Let AI handle
the Google Ads grunt work

Try our AI Agents now
Stage / Issue What to Check How to Check in Google Ads Common Pitfalls / Notes Relevant Google Ads Docs
Step 1 – File upload actually succeeded Confirm Google Ads accepted your offline file (not just that your CRM “sent” it). Go to Goals > Conversions > Uploads and review:
  • Pending actions – apply any upload that’s still in preview.
  • Status – high‑level success/fail of the file.
  • Results – rows imported vs. failed, plus reasons.
  • Actions > Download errors for a row‑level error file.
Don’t assume success until the Uploads page shows rows imported with no critical errors. Error download links expire, so pull them promptly.([support.google.com](https://support.google.com/google-ads/answer/13321563?hl=en&ref_topic=7280668)) Import conversions from ad clicks using files
Fix discrepancies and errors in offline conversion imports
Step 2 – Offline Data Diagnostics quality Check whether imported events are well‑formed, valid, and arriving consistently. On the Conversion summary page:
  • Find the offline conversion action and hover the Status tooltip.
  • Click Go to diagnostics.
  • Review overall Data quality, Alerts, and History (by day / by job).
“No recent data” means no events in the last 28 days (or a connection/setup issue) and is a major risk for bidding and measurement.([support.google.com](https://support.google.com/google-ads/answer/13812240)) About offline data diagnostics
About offline conversion imports
Step 3 – Respect processing and timing windows Account for processing delay and identifier rules before deciding conversions are “missing.” Plan around:
  • Initial processing (often within ~3 hours; can be much longer for some identifiers).
  • Waiting several hours between click and upload, or you may see “click too recent” errors.
  • Allowing time after creating a new conversion action before first upload.
Late uploads can be rejected if the click or identifier is too old; timing windows differ for standard offline imports vs. enhanced conversions for leads.([support.google.com](https://support.google.com/google-ads/answer/15081888?hl=en-419&utm_source=openai)) Guidelines for importing offline conversions
Fix discrepancies and errors in offline conversion imports
Step 4 – Use “by conversion time” reporting Validate imports using columns that group data by conversion date, not click date. In your campaign/keyword views:
  • Add All conv. (by conv. time) as the main validation column.
  • Optionally add Conversions (by conv. time) and Conv. value (by conv. time).
  • Ensure the date range covers both the original click dates and conversion dates.
Most discrepancies come from comparing CRM “conversion date” to Google Ads’ default “impression/click time” view; “by conv. time” columns align with your uploaded timestamps.([support.google.com](https://support.google.com/google-ads/answer/11305867?hl=en&utm_source=openai)) About conversion columns including ‘by conv. time’
Fix discrepancies and errors in offline conversion imports
Step 5 – Correct conversion action mapping Confirm imported events are landing in the intended conversion action. In performance views:
  • Add your offline conversion columns.
  • Segment by Conversion action or Conversion action name.
  • Verify counts appear under the expected action (and goal) only.
Uploads must target the account and conversion action that owns the action (or designated conversion account in cross‑account setups), and the source must be compatible with offline imports.([support.google.com](https://support.google.com/google-ads/answer/13321563?hl=en&ref_topic=7280668)) About offline conversion imports
Fix discrepancies and errors in offline conversion imports
Issue A – Upload errors (rows rejected) Systematically fix rows that failed to import. In Uploads and in Offline Data Diagnostics:
  • Download the error file for failed rows.
  • Review diagnostic alerts for error types over time.
  • Correct data and re‑upload.
Typical problems: invalid conversion times, clicks too recent, identifiers too old, wrong account/ownership, or formatting and time‑zone issues (especially timestamps and missing time zones).([support.google.com](https://support.google.com/google-ads/answer/13321563?hl=en&ref_topic=7280668)) Fix discrepancies and errors in offline conversion imports
About offline data diagnostics
Issue B – Upload successful, but counts < CRM Distinguish true import failures from attribution/processing realities. After confirming a clean upload:
  • Compare using “by conv. time” columns instead of default click‑time columns.
  • Check the conversion action’s Count setting (One vs Every).
  • Allow for processing delays, especially for GBRAID/WBRAID or complex identifiers.
Some conversions are expected to be unattributed (for example, non‑Google sources in enhanced conversions for leads). Duplicate protection, “One” count setting, spam filtering, timing windows, and pay‑for‑conversions billing cutoffs can all reduce reported totals vs. raw uploads.([support.google.com](https://support.google.com/google-ads/answer/13321563?hl=en&ref_topic=7280668)) Fix discrepancies and errors in offline conversion imports
Guidelines for importing offline conversions
Issue C – Weak enhanced conversions for leads match rates Ensure user‑provided data is collected, normalized, and consistent. Check that:
  • Your site reliably captures email/phone at lead creation.
  • Emails are lowercased and trimmed; phones use international formats; values aren’t pre‑ or double‑hashed.
  • The same identifiers are used both at lead creation and at offline outcome upload.
Low match rates usually trace back to poor collection on site or to formatting/hashing mismatches between tag‑side data and uploaded offline rows.([support.google.com](https://support.google.com/google-ads/answer/2998031?hl=en&ref_topic=7280668)) About offline conversion imports (incl. enhanced conversions for leads)
How to upgrade offline imports
“Gold standard” end‑to‑end test Prove that a single click → lead → offline conversion flows correctly through the entire pipeline. Run a controlled test:
  • Click a live ad, submit a lead, and verify the identifier (for example, GCLID or user‑provided data) is stored exactly as required.
  • Create one clean offline conversion event with a correct timestamp.
  • Upload and confirm success on the Uploads page or via diagnostics/job history.
  • Verify it appears in reporting using All conv. (by conv. time) and maps back to the right campaign/ad/keyword.
If this works once end‑to‑end, remaining gaps are nearly always about scale and hygiene: late uploads, time‑zone inconsistencies, naming/mapping mistakes, duplicate logic, count settings, weak match rates, or comparing against the wrong date basis.([support.google.com](https://support.google.com/google-ads/answer/13812240)) About offline conversion imports
About offline data diagnostics

Let AI handle
the Google Ads grunt work

Try our AI Agents now

To confirm your offline conversions are importing correctly, start in Google Ads under Goals > Conversions > Uploads and verify the upload status shows rows actually imported (not just “sent”), then download the error file to see exactly why any rows failed; next, open the conversion action’s Conversion summary and use Offline Data Diagnostics to review data quality, alerts, and job history (a “no recent data” warning is a red flag). When validating totals, remember processing can take hours and timing rules can reject “click too recent” or “identifier too old” rows, and compare performance using All conv. (by conv. time) so your reporting matches the timestamps you uploaded; also segment by Conversion action to ensure events landed in the correct action and that settings like Count (“One” vs “Every”) aren’t explaining gaps versus your CRM. If you’d like a more continuous way to keep measurement and optimizations in sync, Blobr connects to your Google Ads and runs specialized AI agents that monitor account health and surface clear, prioritized actions—helpful for catching tracking and data-quality issues early, before they ripple into bidding and reporting.

Part 1: Confirm the upload itself succeeded (before you look at reports)

Step 1: Check the Uploads page for a clean “import” result

If you’re using file-based offline conversion imports (manual upload or scheduled uploads), the fastest truth source is the Uploads page. It tells you whether Google Ads accepted the file, and if not, exactly which rows failed and why.

Go to Goals > Conversions > Uploads. When your file is received, you’ll see it appear as a new entry (uploading and applying can take a few minutes).

  • Pending actions table: If you previewed a file but didn’t apply it yet, it will sit here. You must click Apply to actually import conversions (otherwise nothing will count).
  • Status column: This is your high-level pass/fail indicator for the file import.
  • Results column: This is where you get the deeper story—how many rows imported, how many failed, and the reason(s).
  • Actions column: Use Download errors (or “Download all”) to get a copy of your rows with a “Results” field explaining success vs. the specific failure reason. Note that these download links don’t stick around forever (they expire after a period of time).

If the Uploads page shows failures, fix those first. Don’t judge success by whether your CRM says “uploaded”—judge it by whether Google Ads says “imported” at the row level.

Step 2: Use Offline Data Diagnostics to spot quality issues (even if the file says “success”)

Even when a file uploads successfully, you can still have data quality problems that prevent attribution or reduce how many conversions ultimately show in reporting and bidding. Offline Data Diagnostics is where you see whether your imported events are well-formed, valid, and consistently arriving.

To access it, go to your Conversion summary page, find the offline conversion action, look at the Status column, hover the offline data quality tooltip, then click Go to diagnostics.

In diagnostics, pay attention to the overall data quality rating and the alerts. The history view is especially useful because it can show upload batches (“jobs”) and the volume of events with errors over time. If diagnostics indicates No recent data, that typically means no events have been received in the last 28 days (or there’s a setup/connection issue), which is a big red flag for Smart Bidding and performance measurement.

Part 2: Confirm conversions are showing in Google Ads reporting the right way

Step 3: Wait the right amount of time (processing is real, and it varies)

Imported offline conversions are not always instant in reporting. As a general expectation, imported conversion stats often start appearing within about 3 hours, but conversion processing can take longer depending on identifiers and the environment.

In practical terms, I plan around these timing realities:

  • Very fresh clicks: If the click happened too recently, uploads can be rejected; retry later (a common threshold is needing at least several hours between click and upload).
  • New conversion action: If you created the conversion action recently, give it time to fully activate before uploading. Uploading immediately after creation can delay visibility in reporting.
  • iOS-related identifiers: If you’re uploading conversions keyed to iOS URL parameters (such as certain iOS-related click identifiers), processing can take significantly longer than standard GCLID workflows.

Step 4: Validate using the “by conversion time” view (most people look at the wrong date)

This is the #1 reason advertisers think offline conversions “didn’t import” when they actually did: standard Google Ads conversion reporting is often organized by impression/click time, not by the date the offline conversion happened and not by the date you uploaded it.

To validate that imports are working, add “by conversion time” columns and compare like-for-like:

  • Use All conv. (by conv. time) as your primary validation column for offline imports, because it reports conversions by the conversion timestamp included in your upload.
  • If you’re comparing standard columns vs. your CRM, also add Conversions (by conv. time) and Conv. value (by conv. time) so you can reconcile on the conversion date rather than click date.
  • Don’t compare “upload date” to Google Ads conversion reporting—Google Ads doesn’t report conversions by upload date.

Finally, make sure your date range is wide enough. If you’re looking at “this week” but the clicks that generated those offline conversions happened last week (and your account reports by click date), you’ll swear the conversions are missing.

Step 5: Segment conversions by conversion action name (to confirm they’re landing in the intended action)

Once your columns are correct, segment your conversions by Conversion action name. This is a simple way to verify your uploaded events are going to the exact conversion action you intended (and not quietly flowing into a different action because of naming confusion, cross-account setup, or mismatched mapping).

Part 3: Troubleshoot when imports “look fine” but conversions still don’t match expectations

Issue pattern A: Upload errors (rows rejected)

If the Uploads page or diagnostics show row-level failures, fix those systematically. These are the most common causes I see in real accounts:

  • Conversion time problems: The offline conversion can’t occur before the ad click. If you see invalid conversion time errors, double-check time zones and timestamps (and ensure your upload timestamps are truly when the offline conversion happened).
  • Click too recent: If the underlying click is extremely recent, retry after more time has passed.
  • Identifiers too old / upload too late: For click-based imports, uploads that occur too far after the associated click won’t be imported. In addition, some identifiers are only retained for a limited period, so “late” uploads can fail even if your CRM still has the ID stored.
  • Wrong account / wrong ownership: The upload must go into the account that owns the conversion action (or the designated conversion account in a cross-account setup). Also confirm the conversion action exists in that account and is the correct source type for offline imports.
  • Formatting and time zone fields: Timestamp format and time zone handling must be consistent. If your source data doesn’t include a time zone, ensure you’re applying a reliable fallback time zone in your import setup (otherwise rows without time zones may be dropped).

Issue pattern B: Upload says “successful,” but reporting is lower than your CRM

When the file imports cleanly but reporting is still lower than your CRM, you’re usually dealing with attribution realities or “processed but discarded” scenarios rather than a pure import failure.

Here are the big ones to check:

  • You’re uploading more conversions than Google Ads can attribute: This is normal in enhanced conversions for leads workflows where you upload all conversions (including non-Google-sourced). A portion may be unattributed by design.
  • Your conversion count setting is limiting totals: If a conversion action is set to count One, only one conversion per ad interaction is counted; additional uploaded conversions tied to the same interaction can be discarded. If you genuinely need multiple conversions per click (for example, multiple purchases or multiple offline milestones), use a conversion action configured to count Every and ensure each conversion has a distinct timestamp where required.
  • Duplicate protection is working (and that’s good): Google Ads won’t import the same conversion more than once when key fields match in a way that makes it a duplicate. If you re-upload data, duplicates are typically removed to prevent double-counting.
  • Conversion processing delays: If you’re reconciling too quickly, you’ll see temporary gaps. Give it a full processing window before you call it “missing,” especially for more complex identifier scenarios.
  • Invalid or filtered conversions: Some uploaded conversions can be filtered out if they’re deemed invalid/spam. In that case, your upload pipeline is “working,” but your upstream data quality needs attention.

Issue pattern C: Enhanced conversions for leads match rates are weak

If you’re using enhanced conversions for leads, don’t just check whether uploads succeeded—check whether matching is strong enough to be useful. Low match rates usually come from not capturing user-provided data reliably on the site, or from normalization/hashing issues before upload.

In practice, I verify three things:

  • Collection: Your site is consistently capturing the user-provided data you intend to use (email and/or phone) at the moment the lead is created.
  • Normalization: Emails are lowercased and trimmed; phone numbers follow international formatting standards; fields aren’t accidentally pre-hashed or double-hashed.
  • Consistency: The same lead’s identifiers are consistent between what was collected on-site and what is later uploaded as the offline outcome.

A quick “gold standard” test to prove end-to-end imports are working

When you need certainty, run a controlled test that creates a single click-to-conversion thread you can follow:

  • Click a live ad in a way that generates a valid click identifier and submit a lead.
  • Confirm your system stored the identifier (and/or user-provided data) exactly as required (case sensitivity matters for click identifiers).
  • Create a test offline conversion event with a clean timestamp and upload it.
  • Confirm the upload result in the Uploads page (or diagnostics/job history if you’re API/CRM-driven).
  • Confirm the conversion appears in reporting using All conv. (by conv. time), then verify it also maps back to the correct campaign/ad/keyword context (bearing in mind reporting attribution is typically organized by click/impression time).

If this single test works end-to-end, you’ve proven the pipeline is functional. From there, any remaining gaps are almost always scale issues: late uploads, inconsistent time zones, mismatched names, duplicate logic, count settings, weak match rates, or simply comparing against the wrong date basis in reporting.