# Common Issues

Here are the most common issues you might run into when working with the Google Ads source in Coupler.io, along with how to fix them.

## Connection issues

<details>

<summary>OAuth token expired</summary>

Google access tokens can expire or be revoked. If your imports start failing, go to the [Sources page](https://app.coupler.io/app/sources) in Coupler.io and reconnect your Google account.

</details>

<details>

<summary>Wrong Google account</summary>

If you signed in with a Google account that doesn't have access to your Google Ads account, disconnect and reconnect using the correct account.

</details>

<details>

<summary>Permissions not granted</summary>

Make sure you granted the `adwords` permission during the OAuth flow. If you skipped it, disconnect and reconnect your Google account.

</details>

<details>

<summary>Manager account vs. individual account</summary>

If you use a Google Ads Manager (MCC) account, make sure the specific sub-accounts you want to access are linked and accessible under your credentials.

</details>

## Missing data or accounts

<details>

<summary>Ad account not showing up</summary>

Only **active** ad accounts you have access to are available for selection. If an account is paused, suspended, or you don't have the right access level, it won't appear. Check your access in [Google Ads > Admin > Access and security](https://ads.google.com/).

</details>

<details>

<summary>No data returned (empty report)</summary>

Check that the selected ad account has campaigns that ran during the date range you specified. An empty report usually means no ads were active during that period. If a campaign, ad, or keyword had zero performance metrics in the selected period, it won't appear in results — the Google Ads API does not return rows with all-zero metrics.

</details>

<details>

<summary>Missing recent data</summary>

Google Ads data is typically available within a few hours, but conversion data may take up to 24 hours to finalize. Avoid relying on today's data for reporting.

</details>

<details>

<summary>Missing conversion data</summary>

Conversions are attributed to the click date, not the conversion date. If you're looking at very recent dates, conversions may still be processing. Allow 24–72 hours for complete conversion data.

</details>

<details>

<summary>Shopping performance returns 0 rows</summary>

If no Shopping campaigns ran during the selected period, the report will be empty. Double-check your date range. For more control, try a Custom GAQL query targeting `shopping_performance_view`.

</details>

<details>

<summary>Custom columns from Google Ads UI not available</summary>

Custom columns created in the Google Ads interface are not supported by the Google Ads API. They cannot be pulled into any report. Recreate the logic using Coupler.io formula columns or in your destination tool.

</details>

<details>

<summary>App Install and Reach metrics missing</summary>

These metrics are not available in all report types. For app install metrics, use the **Ad group performance with install conversion** report. Reach metrics have limited availability — check the [Supported Metrics and Dimensions](https://help.coupler.io/article/598-google-ads-supported-metrics-and-dimensions) article for which report types include them.

</details>

## Permission errors

<details>

<summary>"Insufficient permissions" error</summary>

Your Google account must have **Standard** or **Admin** access to the ad account. Read-only access may not be sufficient for all report types. Check your access level in [Google Ads > Admin > Access and security](https://ads.google.com/).

</details>

<details>

<summary>Account access revoked</summary>

If someone removed your access to an ad account, imports for that account will fail. Contact the account owner to restore access.

</details>

<details>

<summary>MCC sub-account access</summary>

{% hint style="warning" %}
Having Manager (MCC) account access doesn't automatically grant data access to all sub-accounts. You need explicit access to each individual ad account.
{% endhint %}

</details>

## Data discrepancies

<details>

<summary>Numbers don't match Google Ads interface</summary>

The most common cause is different date ranges or time zones. Verify that your date range in Coupler.io matches what you're looking at in the Google Ads interface. Also check whether you're comparing the same report segmentation (e.g., by campaign vs. by ad group).

</details>

<details>

<summary>Conversion numbers changing over time</summary>

Google Ads uses attribution windows, so conversions can be added to past dates as they are recorded. This is expected behavior — recent conversion data will shift over a few days until the attribution window closes.

</details>

<details>

<summary>Metrics differ from Google Analytics</summary>

Google Ads and Google Analytics measure things differently. For example, Google Ads counts clicks while GA4 counts sessions. A single click can result in multiple sessions, or a session may come without a click. These tools also use different attribution models.

</details>

<details>

<summary>Search query data is limited</summary>

Google Ads only reports search terms that meet minimum privacy thresholds. Low-volume search terms may be grouped under "Other search terms" and not shown individually.

</details>

<details>

<summary>Rows appear duplicated (hidden dimensions)</summary>

If you see what looks like duplicate rows for the same campaign, the most likely cause is hidden dimensions splitting the data. The **Campaign performance by ad network type** report adds an "Ad network type" column that creates separate rows for Search, Display, YouTube, etc. Similarly, other report types may include "Interaction event type" as a hidden dimension.

**How to fix:** Switch to the plain **Campaign performance** report if you don't need the ad-network breakdown. If you're already using it, check for hidden columns in the Transformation step — unhide all columns to identify what's creating the split.

</details>

<details>

<summary>Demand Gen campaign spend appears inflated</summary>

If you're using the **Campaign performance by ad network type** report for Demand Gen campaigns, spending is split across multiple ad network type rows. Summing them in a dashboard without filtering produces an inflated total.

**How to fix:** Use the plain **Campaign performance** report, which aggregates across all network types. Remove any filters that may have been applied to the source.

</details>

<details>

<summary>Conversion value discrepancy in Looker Studio</summary>

Conversion values in Looker Studio may not match Google Ads because of how data is aggregated. If you pull data split by Date, Looker Studio sums daily values — but if the date range or attribution window differs from the Google Ads UI, the totals won't align.

**How to fix:** Ensure the date range in Coupler.io matches the Looker Studio filter. Use yesterday's date as the end date to avoid incomplete data. Check that you're comparing the same conversion metric (e.g., "Conversions value" vs. "All conversions value").

</details>

<details>

<summary>PMax campaign conversions missing from GAQL queries</summary>

Performance Max campaigns don't have traditional ads or ad groups — they only have asset groups. If your Custom GAQL query targets `ad_group` or `ad_group_ad` resources, PMax data will be excluded.

**How to fix:** Use the **Campaign performance** or **Asset group performance** report for PMax data. For Custom GAQL, query the `campaign` resource instead of `ad_group`.

</details>

## Rate limits and API errors

<details>

<summary>429 "Too many requests" / "Resource has been exhausted"</summary>

{% hint style="danger" %}
This error means the Google Ads API quota has been exceeded. It can happen globally (affecting all Coupler.io users) or per-account.
{% endhint %}

The error message typically includes: `429 Resource has been exhausted (e.g. check quota)` and a retry delay (e.g., "Retry in 17997 seconds").

**How to fix:** Wait approximately 4 hours for Google's quota to reset, then re-run the data flow. Stagger your scheduled refreshes if you have multiple data flows pulling from the same account. Coupler.io has implemented improvements to reduce the likelihood of hitting global quota limits.

</details>

<details>

<summary>Import fails with generic quota error</summary>

The Google Ads API has request quotas per developer token and per account. If you have multiple data flows pulling from the same ad account simultaneously, some may hit quota limits. Space out your scheduled refreshes by a few minutes.

</details>

<details>

<summary>Large reports timing out</summary>

Reports covering very long date ranges (e.g., multiple years) with daily splits can be slow. Try narrowing the date range or using weekly/monthly splits for historical data.

</details>

<details>

<summary>"Google API currently unavailable" error</summary>

This is a transient error from the Google Ads API. It usually resolves on its own within a few hours.

**How to fix:** Wait and re-run the data flow. If the error persists for more than 24 hours, contact Coupler.io support.

</details>
