Monitor offline data diagnostics
Stay organized with collections
Save and categorize content based on your preferences.
Use the Google Ads API to retrieve
offline data diagnostics,
which contain information about the overall health of your conversion import and
adjustment processes.
To retrieve the latest offline data diagnostics for your account, use
one of the following resources:
Account level diagnostics
To retrieve account level conversion upload diagnostics, use the following
GAQL query:
SELECT
customer.id,
offline_conversion_upload_client_summary.alerts,
offline_conversion_upload_client_summary.client,
offline_conversion_upload_client_summary.daily_summaries,
offline_conversion_upload_client_summary.job_summaries,
offline_conversion_upload_client_summary.last_upload_date_time,
offline_conversion_upload_client_summary.pending_event_count,
offline_conversion_upload_client_summary.pending_rate,
offline_conversion_upload_client_summary.status,
offline_conversion_upload_client_summary.success_rate,
offline_conversion_upload_client_summary.successful_event_count,
offline_conversion_upload_client_summary.total_event_count
FROM offline_conversion_upload_client_summary
This query returns separate
OfflineConversionUploadClientSummary
rows for each type of client used in recent imports. For example, if you
recently imported using both the Google Ads API and the Google Ads UI, the results
contain separate entries for the client
values of GOOGLE_ADS_API
and
GOOGLE_ADS_WEB_CLIENT
.
Conversion action level diagnostics
To retrieve conversion upload diagnostics at the conversion action level, use
the following GAQL query:
SELECT
offline_conversion_upload_conversion_action_summary.conversion_action_name,
offline_conversion_upload_conversion_action_summary.alerts,
offline_conversion_upload_conversion_action_summary.client,
offline_conversion_upload_conversion_action_summary.daily_summaries,
offline_conversion_upload_conversion_action_summary.job_summaries,
offline_conversion_upload_conversion_action_summary.last_upload_date_time,
offline_conversion_upload_conversion_action_summary.pending_event_count,
offline_conversion_upload_conversion_action_summary.status,
offline_conversion_upload_conversion_action_summary.successful_event_count,
offline_conversion_upload_conversion_action_summary.total_event_count
FROM offline_conversion_upload_conversion_action_summary
WHERE offline_conversion_upload_conversion_action_summary.conversion_action_id = < INSERT CONVERSION ACTION ID >
Similar to account level diagnostics, this query returns separate
OfflineConversionUploadConversionActionSummary
rows for each type of client used in recent imports. For example, if you
recently imported using both the Google Ads API and the Google Ads UI, the results
contain separate entries for the client
values of GOOGLE_ADS_API
and
GOOGLE_ADS_WEB_CLIENT
.
How to interpret these summaries
Each OfflineConversionUploadClientSummary
or
OfflineConversionUploadConversionActionSummary
has a status
field, that
reflects the overall health
of imports for the client
. It also contains the following information:
- The count of total events received.
- The count of successfully processed events.
- The count of pending events (events that are still being processed).
- An
alerts
field, that provides a summary of errors, grouped by
OfflineConversionError
.
All of these fields contain information from the most recent full calendar day
of imports. Use this information to assess the current health of your imports.
In addition, each OfflineConversionUploadClientSummary
or
OfflineConversionUploadConversionActionSummary
contains two different
types of reports:
daily_summaries
- A
successful_count
, failed_count
, and pending_count
of import requests
from the last 7 days, grouped by import date
.
job_summaries
The successful_count
, failed_count
, and pending_count
of the 7 most
recent import requests, grouped by job_id
. The job_id
is an optional field
of UploadClickConversionsRequest
and
UploadConversionAdjustmentsRequest
. You can either set the
job_id
to a non-negative number less than 2^31
or let the Google Ads API assign a
system-generated job ID to your request. Regardless of which option you
choose, the UploadClickConversionsResponse
or
UploadConversionAdjustmentsResponse
returns the job_id
.
One scenario where assigning your own job_id
is useful is when you have a
single job or process that imports a large number of conversions using
multiple requests. If you set the job_id
on each of those requests to the
same value, then you can retrieve a single entry for the job from
job_summaries
. If instead you let the Google Ads API assign a system-generated
value to the job_id
of each request, the job_summaries
contains a separate
entry for each request, which could make analyzing the overall health of your
job more challenging.
How to use summaries
To ensure your import processes are recording conversions and enhancements as
expected, periodically retrieve the summaries for each of your accounts. If the
status
of any summary is not EXCELLENT
, use the list of errors under
alerts
to guide you through modifying your import process to reduce or
eliminate those errors.
For example:
If the status is NEEDS_ATTENTION
, then a significant portion of your
import operations failed. Review the errors under alerts
and modify your
import process to reduce or eliminate those errors.
If the status is NO_RECENT_UPLOADS
, then Google Ads has not received any recent
imports for the client
. If this is unexpected, then review the processes
that perform imnports using that client.
For example, if the status
for GOOGLE_ADS_API
is NO_RECENT_UPLOADS
, that
could indicate that your import process that uses the Google Ads API stopped running
recently.
To determine if there was a specific import date or job that sent a large
number of events that failed to process, check the successful_count
,
failed_count
, and pending_count
of daily_summaries
and job_summaries
.
Any events in a pending state may take up to 24 hours
to complete.
More information on how to improve offline data diagnostics can be found in
the Help center.
Restrictions
Keep the following in mind when retrieving import summaries:
The Google Ads API only returns offline data diagnostics if the
customer_id
of the
searchStream
or search
request is the same customer you used recently to
import conversions.
For example, a client account that uses cross-account conversion tracking may
not contain any diagnostics. However, you can retrieve diagnostics by sending
a request where the customer_id
matches the customer_id
of the manager
account you use in imports.
Google Ads treats CLICK_NOT_FOUND
errors from enhanced conversions for
leads imports as warnings. As
a result, if alerts
contains an entry for this error, the corresponding
operations are still considered successful and are included in the
successful_event_count
.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-25 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eThe Google Ads API allows retrieval of offline data diagnostics, offering insights into the health of your conversion uploads and adjustments.\u003c/p\u003e\n"],["\u003cp\u003eYou can access these diagnostics at both the account level and the conversion action level using specific GAQL queries.\u003c/p\u003e\n"],["\u003cp\u003eDiagnostics encompass data like total events, successful events, pending events, and alerts on errors, helping assess the upload process.\u003c/p\u003e\n"],["\u003cp\u003eDaily and job summaries are included, offering a detailed view of upload request performance over the past 7 days.\u003c/p\u003e\n"],["\u003cp\u003eRegularly review these summaries to ensure smooth conversion tracking, addressing any alerts to optimize the upload process for better results.\u003c/p\u003e\n"]]],[],null,["# Monitor offline data diagnostics\n\n| **Note:** For enhanced conversions for leads imports, use the [enhanced conversions for leads diagnostics report](//support.google.com/google-ads/answer/15249267) in the Google Ads UI to monitor your import health.\n\nUse the Google Ads API to retrieve\n[offline data diagnostics](//support.google.com/google-ads/answer/13812240),\nwhich contain information about the overall health of your conversion import and\nadjustment processes.\n\nTo retrieve the latest offline data diagnostics for your account, use\none of the following resources:\n\n- [`offline_conversion_upload_client_summary`](/google-ads/api/fields/v21/offline_conversion_upload_client_summary) aggregates import diagnostics at the account level.\n- [`offline_conversion_upload_conversion_action_summary`](/google-ads/api/fields/v21/offline_conversion_upload_conversion_action_summary) aggregates import diagnostics at the conversion action level.\n\nAccount level diagnostics\n-------------------------\n\nTo retrieve account level conversion upload diagnostics, use the following\nGAQL query: \n\n SELECT\n customer.id,\n offline_conversion_upload_client_summary.alerts,\n offline_conversion_upload_client_summary.client,\n offline_conversion_upload_client_summary.daily_summaries,\n offline_conversion_upload_client_summary.job_summaries,\n offline_conversion_upload_client_summary.last_upload_date_time,\n offline_conversion_upload_client_summary.pending_event_count,\n offline_conversion_upload_client_summary.pending_rate,\n offline_conversion_upload_client_summary.status,\n offline_conversion_upload_client_summary.success_rate,\n offline_conversion_upload_client_summary.successful_event_count,\n offline_conversion_upload_client_summary.total_event_count\n FROM offline_conversion_upload_client_summary\n\nThis query returns separate\n[`OfflineConversionUploadClientSummary`](/google-ads/api/reference/rpc/v21/OfflineConversionUploadClientSummary)\nrows for each type of client used in recent imports. For example, if you\nrecently imported using both the Google Ads API and the Google Ads UI, the results\ncontain separate entries for the `client` values of `GOOGLE_ADS_API` and\n`GOOGLE_ADS_WEB_CLIENT`.\n\nConversion action level diagnostics\n-----------------------------------\n\nTo retrieve conversion upload diagnostics at the conversion action level, use\nthe following GAQL query: \n\n SELECT\n offline_conversion_upload_conversion_action_summary.conversion_action_name,\n offline_conversion_upload_conversion_action_summary.alerts,\n offline_conversion_upload_conversion_action_summary.client,\n offline_conversion_upload_conversion_action_summary.daily_summaries,\n offline_conversion_upload_conversion_action_summary.job_summaries,\n offline_conversion_upload_conversion_action_summary.last_upload_date_time,\n offline_conversion_upload_conversion_action_summary.pending_event_count,\n offline_conversion_upload_conversion_action_summary.status,\n offline_conversion_upload_conversion_action_summary.successful_event_count,\n offline_conversion_upload_conversion_action_summary.total_event_count\n FROM offline_conversion_upload_conversion_action_summary\n WHERE offline_conversion_upload_conversion_action_summary.conversion_action_id = \u003c INSERT CONVERSION ACTION ID \u003e\n\nSimilar to account level diagnostics, this query returns separate\n[`OfflineConversionUploadConversionActionSummary`](/google-ads/api/reference/rpc/v21/OfflineConversionUploadConversionActionSummary)\nrows for each type of client used in recent imports. For example, if you\nrecently imported using both the Google Ads API and the Google Ads UI, the results\ncontain separate entries for the `client` values of `GOOGLE_ADS_API` and\n`GOOGLE_ADS_WEB_CLIENT`.\n\nHow to interpret these summaries\n--------------------------------\n\nEach `OfflineConversionUploadClientSummary` or\n`OfflineConversionUploadConversionActionSummary` has a `status` field, that\nreflects the [overall health](//support.google.com/google-ads/answer/13812240#2)\nof imports for the `client`. It also contains the following information:\n\n- The count of total events received.\n- The count of successfully processed events.\n- The count of pending events (events that are still being processed).\n- An `alerts` field, that provides a summary of errors, grouped by [`OfflineConversionError`](/google-ads/api/reference/rpc/v21/OfflineConversionError).\n\nAll of these fields contain information from the most recent full calendar day\nof imports. Use this information to assess the *current* health of your imports.\n\nIn addition, each `OfflineConversionUploadClientSummary` or\n`OfflineConversionUploadConversionActionSummary` contains two different\ntypes of reports:\n\n`daily_summaries`\n: A `successful_count`, `failed_count`, and `pending_count` of import requests\n from the last 7 days, grouped by import `date`.\n\n`job_summaries`\n\n: The `successful_count`, `failed_count`, and `pending_count` of the 7 most\n recent import requests, grouped by `job_id`. The `job_id` is an optional field\n of [`UploadClickConversionsRequest`](/google-ads/api/reference/rpc/v21/UploadClickConversionsRequest) and\n [`UploadConversionAdjustmentsRequest`](/google-ads/api/reference/rpc/v21/UploadConversionAdjustmentsRequest). You can either set the\n `job_id` to a non-negative number less than `2^31` or let the Google Ads API assign a\n system-generated job ID to your request. Regardless of which option you\n choose, the [`UploadClickConversionsResponse`](/google-ads/api/reference/rpc/v21/UploadClickConversionsResponse) or\n [`UploadConversionAdjustmentsResponse`](/google-ads/api/reference/rpc/v21/UploadConversionAdjustmentsResponse) returns the `job_id`.\n\n One scenario where assigning your own `job_id` is useful is when you have a\n single job or process that imports a large number of conversions using\n multiple requests. If you set the `job_id` on each of those requests to the\n same value, then you can retrieve a single entry for the job from\n `job_summaries`. If instead you let the Google Ads API assign a system-generated\n value to the `job_id` of each request, the `job_summaries` contains a separate\n entry for each request, which could make analyzing the overall health of your\n job more challenging.\n\nHow to use summaries\n--------------------\n\nTo ensure your import processes are recording conversions and enhancements as\nexpected, periodically retrieve the summaries for each of your accounts. If the\n`status` of any summary is not `EXCELLENT`, use the list of errors under\n`alerts` to guide you through modifying your import process to reduce or\neliminate those errors.\n\nFor example:\n\n- If the status is `NEEDS_ATTENTION`, then a significant portion of your\n import operations failed. Review the errors under `alerts` and modify your\n import process to reduce or eliminate those errors.\n\n- If the status is `NO_RECENT_UPLOADS`, then Google Ads has not received any recent\n imports for the `client`. If this is unexpected, then review the processes\n that perform imnports using that client.\n\n For example, if the `status` for `GOOGLE_ADS_API` is `NO_RECENT_UPLOADS`, that\n could indicate that your import process that uses the Google Ads API stopped running\n recently.\n- To determine if there was a specific import date or job that sent a large\n number of events that failed to process, check the `successful_count`,\n `failed_count`, and `pending_count` of `daily_summaries` and `job_summaries`.\n Any events in a pending state may take up to 24 hours\n to complete.\n\nMore information on how to improve offline data diagnostics can be found in\nthe [Help center](//support.google.com/google-ads/answer/13812240#4).\n\nRestrictions\n------------\n\nKeep the following in mind when retrieving import summaries:\n\n- The Google Ads API only returns offline data diagnostics if the\n [`customer_id`](/google-ads/api/reference/rpc/v21/SearchGoogleAdsStreamRequest#customer_id) of the\n `searchStream` or `search` request is the same customer you used recently to\n import conversions.\n\n For example, a client account that uses cross-account conversion tracking may\n not contain any diagnostics. However, you can retrieve diagnostics by sending\n a request where the `customer_id` matches the `customer_id` of the manager\n account you use in imports.\n- Google Ads treats `CLICK_NOT_FOUND` errors from [enhanced conversions for\n leads](/google-ads/api/docs/conversions/enhanced-conversions/leads) imports as warnings. As\n a result, if `alerts` contains an entry for this error, the corresponding\n operations are still considered successful and are included in the\n `successful_event_count`."]]