Skip to main content
SteerAds
TutorialTrackingTroubleshooting

Google Ads Offline Conversion Import Errors? Fix (2026)

Google Ads offline conversion import errors almost always trace to one of seven causes — a missing click ID, the 90-day expiry window, a timezone or currency mismatch, a malformed file, or rows with no matching click. Work the pipeline end to end with a 12-row diagnostic table and a fix list you can ship today.

Matt
MattTracking & Data Lead
···4 min read

Roughly 80 percent of broken Google Ads offline conversion imports in 2026 fail at a single, findable point in the pipeline — a missing click ID, an expired window, or a formatting slip — yet most advertisers re-upload the same file again and again, multiplying duplicate-row warnings instead of finding the cause. An offline conversion only counts if Google can tie it back to a recorded click, so the fix is never to retry blindly; it is to walk the pipeline from click-ID capture to upload and find the one break.

This guide follows that pipeline end to end across seven sections — how import works, the 90-day window, the common upload errors, unattributed rows, the diagnostics, the full fix, and automation — so you spend your time on the cause, not the symptom. To check your conversion measurement against the most common leaks automatically, run our free 5-axis Google Ads audit.

Updated 2026-05-10 with current click-ID capture, 90-day window, and upload-diagnostics behavior observed across US, UK and European accounts.

TL;DR — why offline conversion imports fail :
  1. Capture the click ID first — no stored GCLID, GBRAID or WBRAID means no possible match, so fix capture before uploading. 2. Mind the 90-day window — a click older than 90 days cannot be attributed, so upload daily or weekly. 3. Formatting rejects whole files — a timezone, currency or header slip fails the upload before a row is read. 4. 'No matching click' is a capture problem — confirm auto-tagging and the stored ID, not the file. 5. Automate once it runs clean — scheduled uploads, the API or Zapier keep click IDs from aging out.

How does offline conversion import actually work?

Offline conversion import exists because the most valuable conversions — a signed contract, a closed deal, a qualified lead that became revenue — happen in your CRM, days or weeks after the click, not on the website. Google never sees them unless you send them back. The pipeline has three stages, and a break in any one of them produces the errors the rest of this guide diagnoses.

Capturing the click ID — When someone clicks your ad, Google appends a click identifier to the landing URL: a GCLID for most clicks, or a GBRAID and WBRAID for iOS app and web journeys where privacy rules apply. Your site must read that parameter and store it, usually in a hidden form field, so it travels into your CRM with the lead.

Storing it in your CRM — The captured ID has to sit alongside the lead record, the conversion value, and the timestamp of the eventual sale. If your forms do not write the ID, or your CRM overwrites it, the lead is invisible to Google later — there is nothing to upload.

Uploading conversions back — When the deal closes, you export the click ID, the conversion action name, the conversion time, and the value, then upload that file to Google Ads. Google matches the click ID to a recorded click and credits the conversion to the original campaign. For the foundational setup, see our enhanced conversions setup guide.

Why does the 90-day click-ID window break uploads?

The single most overlooked cause of failed offline imports is time. Google does not keep click data forever, and the click ID you stored has an expiry date you have to upload before. Miss it and a perfectly clean row still fails.

The 90-day rule — For most click IDs, a conversion must be uploaded within 90 days of the original click. After that, Google has purged the click from its attribution store and the upload returns a no-matching-click error. The data in your file is correct; it is simply too late.

Why slow sales cycles lose conversions — If your average deal takes 60 days to close and you upload monthly, a deal that closes on day 85 and uploads on day 100 is already past the window. The conversion silently never lands, your reported ROAS looks worse than reality, and Smart Bidding is starved of signal it earned.

The defenses — Upload daily or weekly, not monthly, so every deal lands inside the window with room to spare. Enable enhanced conversions for leads as a fallback so user-provided data can match even when the click ID has aged out. If you are seeing conversions go uncounted, our inactive conversion action guide covers a related failure mode.

Which upload errors are most common, and why?

When the click ID and the window are fine, the next layer of failures is formatting. Google parses your file against a strict template, and a single mismatched column or timestamp can reject one row or the entire upload. These errors are tedious but fast to fix once you know the pattern.

Wrong timezone or date format — The most frequent rejection. Google expects an explicit UTC offset such as 2026-05-10 14:30:00+00:00. Exporting your CRM time in local time without the offset makes Google interpret it in the account timezone, so the row is rejected or dated wrongly. The conversion time must also be later than the click time.

Currency and value errors — A blank value, a wrong currency code, or a comma used as a decimal separator can void the row. Each conversion needs a value and a currency that matches the account or an explicit ISO code such as USD, GBP or EUR.

Header mismatch and unparseable files — A renamed, reordered, or missing column header makes the whole file unparseable, so nothing uploads. The same happens with the wrong delimiter or a stray encoding character. Always start from the current Google Ads template. For the broader reconciliation work, see our GA4 and Google Ads discrepancy guide.

What causes 'unattributed' or 'no matching click' rows?

Even a file that uploads without a formatting error can return rows marked unattributed or no-matching-click. These are the most confusing because the upload appears to succeed — the row is accepted but credited to nothing. The cause is almost always upstream, in capture.

Auto-tagging was off — If auto-tagging is disabled, Google never appended a GCLID to the landing URL, so there was no click ID to capture in the first place. Every row for that period comes back unattributed. Confirm auto-tagging is enabled in account settings before anything else.

The stored ID is truncated or altered — A redirect, a URL shortener, or a CRM field that trims long strings can chop the GCLID so it no longer matches the recorded click. A GBRAID or WBRAID handled as a plain GCLID can also fail to match. Verify the stored value is complete and untouched.

Wrong account, click type or expired window — A value uploaded against the wrong account, or a click that fell outside the 90-day window, returns no match. These rows are not file errors; they are signal that the capture-and-window pipeline upstream needs the fix. The related zero-conversions tracking guide walks the upstream diagnostic.

How do you diagnose with upload diagnostics and columns?

Google gives you two diagnostic surfaces, and most advertisers never open either. Before you change anything in your file or your CRM, read what the system is already telling you. The error is usually named for you.

The upload diagnostics — After every upload, Google shows a per-file summary: rows received, rows applied, and a row-level error count with a message such as no-matching-click, conversion time before click time, or unparseable. Read this first — it tells you whether the problem is capture, timing, or formatting, and exactly how many rows each error hit.

The conversions columns — In your campaign reporting, add columns for all conversions, conversions by time, and conversion source. A gap between total conversions and offline-imported conversions, or a drop after a CRM change, localizes the break to a date range you can investigate.

Reconcile against the CRM — The real ground truth is the count of closed deals with a stored click ID inside the 90-day window. If your CRM holds 200 qualifying deals but only 150 uploaded successfully, the 50-row gap is your error budget — and the diagnostics tell you which of the seven causes claimed each one. Never re-upload before reading the diagnostics; you risk duplicating the rows that already succeeded.

How do you fix the capture-and-upload pipeline?

With the cause identified, the fix follows the pipeline in order: capture, store, format, upload. Repairing them out of order wastes effort, because a clean upload of a row whose click ID was never captured still returns unattributed.

Fix capture first — Confirm auto-tagging is on, then verify your landing pages read the GCLID, GBRAID, or WBRAID from the URL and write it into a hidden form field. Test by submitting a real lead and checking the ID landed in the CRM, complete and untrimmed.

Fix storage and timing — Ensure the CRM keeps the click ID, the conversion value, the currency, and an accurate conversion timestamp on every record. Set your export to run inside the 90-day window — weekly is a safe default for most sales cycles.

Fix formatting and upload — Build the file from the current Google Ads template, export timestamps with an explicit offset, fill the value and currency columns, and confirm each conversion time is after its click time. Re-upload, then read the diagnostics again to confirm the error count dropped. Layer enhanced conversions for leads on top so user-provided data recovers any row the click ID alone cannot match.

How do you automate uploads so it stays fixed?

A manual upload you do once works until the next export drifts. The durable fix is to remove the human step entirely, so click IDs never age out and the file format never changes by accident. Automate only after the manual process runs clean end to end.

Scheduled uploads — Google Ads can pull from a Google Sheet or an HTTPS or SFTP file on a fixed schedule. Point it at a sheet your CRM populates, set it to run daily, and conversions upload without anyone touching a file. This alone closes the 90-day-window risk for most accounts.

The Google Ads API — For higher volume or custom logic, the API uploads click conversions directly and returns row-level errors you can log, retry, and alert on. It is the most robust option and the one that scales, because failures surface immediately instead of in a monthly report.

No-code connectors — A Zapier or similar connector can move a closed deal from your CRM into Google Ads within minutes of the sale, keeping every conversion well inside the window. Whichever route you choose, automation is what turns a one-time fix into a pipeline that stays fixed. Confirm the whole funnel with our free 5-axis audit, and size the return on recovered conversions with our ROAS calculator.

The offline-import error diagnostic table

Work this table top to bottom — it is ordered by how fast each error is to confirm and how often it is the real cause of a failed or unattributed offline import.

Don't blindly re-upload a failed file :

Re-uploading the same file before reading the diagnostics is the most common way to create duplicate conversions. The rows that succeeded the first time are still credited, so a blind retry double-counts them while the truly failing rows fail again for the same reason. Always open the upload diagnostics, fix only the rows the error count names, keep the successful ones out, and re-upload the corrected subset. One clean pass beats five blind retries.

Putting the pipeline fix in priority order

You will usually find more than one break. The mistake is fixing them in a random order, or all at once so you cannot tell what worked. Repair the pipeline in flow order — capture, window, format, upload, automate — and re-measure after each.

Capture, instant and foundational first — Auto-tagging and the hidden-field GCLID capture take effect the same day and unblock every future upload. Nothing downstream can match if capture is broken, so this is always the first fix.

Window and formatting next — Tighten the upload cadence inside the 90-day window, then correct timezone, currency, and header formatting from the current template. These ship within a day and clear most of the rejected and unattributed rows at once.

Diagnostics, then automation — Read the upload diagnostics to confirm the error count dropped, layer enhanced conversions for leads as a fallback, then move the whole process to scheduled or API uploads so it stays fixed. Allow a day for processing before judging the result.

Measure one change at a time. Re-check the offline conversion count after each fix, not after all of them, so you know which lever moved the result. Size the return on recovered conversions with our ROAS calculator, and to surface every measurement leak automatically, run the SteerAds free 5-axis audit.

Sources

Official sources consulted for this guide:

FAQ

Why is my Google Ads offline conversion import failing?

About 80 percent of failed offline imports trace to one of five causes you can confirm in minutes. First, the click ID is missing or malformed — the GCLID, GBRAID, or WBRAID was never captured or got truncated. Second, the click is older than the 90-day window, so Google has no record to attribute it to. Third, the timestamp is in the wrong timezone or format, so the row is rejected or misdated. Fourth, the currency or value column is blank or uses the wrong code. Fifth, the column headers do not match the expected template. Check the click ID and the date first — together they explain most failures.

What is the 90-day window for offline conversion uploads?

Google only retains click data for attribution for a limited time, and offline conversions must be uploaded within 90 days of the original click for most click IDs. If a deal closes 120 days after the click, the GCLID has expired and the upload row returns a no-matching-click error no matter how clean the file is. This is why a slow sales cycle silently loses conversions. The fix is to upload more frequently — daily or weekly — and to enable enhanced conversions for leads as a fallback so user-provided data can still match even when the click ID has aged out.

Why does Google Ads say 'no matching click' for my conversions?

A no-matching-click or unattributed row means Google could not tie your uploaded conversion to a recorded ad click. The usual reasons are a click ID that was never stored, a truncated or altered GCLID, a click that fell outside the 90-day window, or a value entered against the wrong account or click type. It can also happen when auto-tagging was off, so no GCLID was ever appended to the landing URL. Confirm auto-tagging is enabled, verify the stored ID is complete, and check the click date against the 90-day limit before re-uploading.

What date and timezone format does Google Ads require?

Google Ads expects conversion times in a specific format with an explicit timezone or UTC offset, for example yyyy-MM-dd HH:mm:ss+|-HH:mm, and it must fall after the click time and inside the 90-day window. The most common error is exporting your CRM timestamp in local time without the offset, so Google interprets it in the account timezone and either rejects the row or dates the conversion wrongly. Always export with an explicit offset, confirm the conversion time is later than the click time, and match the account timezone you set when the conversion action was created.

Should I use the API instead of manual CSV uploads?

If you upload more than once or twice a month, yes. Manual CSV uploads are fine for occasional batches, but they are error-prone — every export risks a header change, a timezone slip, or a stale file. Scheduled uploads from a Google Sheet, the Google Ads API, or a no-code connector like Zapier remove the human step and run on a fixed cadence, so click IDs never age out and formatting stays consistent. The API also returns row-level errors you can log and retry. Automate once the manual process works end to end, not before, so you are not scaling a broken pipeline.

Do I still need the GCLID if I use enhanced conversions?

They solve overlapping problems, so use both. The GCLID, GBRAID, or WBRAID is the most precise signal because it ties a conversion to the exact click. Enhanced conversions for leads match on hashed user-provided data — email or phone — and act as a fallback when the click ID was never captured or has aged past 90 days. Running both raises your match rate: the click ID handles the clean cases, and enhanced conversions recover the rows that would otherwise come back unattributed. They are complementary, not a choice between one or the other.

How long until uploaded offline conversions show in reports?

Uploaded offline conversions typically appear in your Google Ads reporting within a few hours, though full processing and attribution can take up to 24 hours or more in some accounts. The conversion is credited to the date and time of the original click, not the upload date, so a deal uploaded today may appear weeks back in your reports. Do not re-upload a row just because it has not appeared yet — wait a day, then check the upload diagnostics for the specific error count before assuming the row failed and risking a duplicate.

💡

Get our best tips to cut your CPA

Each week, an actionable tip to optimize your Google & Bing Ads campaigns. Joined by 1,200+ advertisers.

No spam. One-click unsubscribe. Privacy policy.

Ready to optimize your campaigns?

Start a free audit in 2 minutes and discover the ROI potential of your accounts.

Start my free audit

Free audit — no credit card required

Keep reading