How to Resolve Google Ads 37-Month Limit Errors
Data infrastructure updates can disrupt long-term performance tracking without warning. According to HubSpot, marketers use between 12 and 31 tools to manage campaigns and data, creating fragmented pipelines that are highly vulnerable to silent API changes.
On June 1, 2026, Google officially enforced a strict 37-month rolling limit on granular historical data access within Google Ads. This policy removes hourly, daily, and weekly reporting metrics older than 37 months from all direct queries.
For enterprises, agencies, and technical data leaders, this update can cause broken API connections, incomplete attribution models, and silent truncation in third-party integrations.
This guide provides a technical roadmap to bypass these restrictions, resolve active errors, and secure your historical marketing pipelines.
What Happened with Granular Historical Data Access in Google Ads?
In the past, advertisers could query granular, row-level campaign performance metrics going back up to 11 years. This allowed analysts to run long-term trend analyses, build complex attribution paths, and train custom machine-learning bidding models on massive historical datasets.
Back on June 1, Google altered this data retention policy. The platform now limits granular reporting data (specifically hourly, daily, and weekly records) to a rolling 37-month window.
This change affects all data interfaces, including the Google Ads user interface, Google Ads scripts, direct API endpoints, and native integrations like the BigQuery Data Transfer Service.
Google still preserves high-level metrics (aggregated by month, quarter, or year) for the legacy 11-year period. However, the loss of day-by-day and hour-by-hour resolution destroys the fidelity of multi-year models.
Any tool attempting to fetch daily conversion values or search query reports beyond the 37-month threshold will now fail, return empty sets, or throw connection errors.
What Google Ads 37-Month Limit Errors Look Like
The enforcement of this limit does not always take the form of a clear, descriptive warning. Depending on the extraction tool you use, you will encounter distinct failure patterns.
API Exception Codes
Custom code connecting directly to the Google Ads API now throws active exceptions. You will primarily see the DateRangeError.INVALID_DATE error, accompanied by messages indicating that the requested start date lies outside the allowed historical boundary.
Google Ads Scripts Failures
Internal scripts attempting to generate reports over multi-year periods now halt execution entirely. The runtime logs display execution timeouts or throw unhandled exceptions when processing custom date range variables.
Google Analytics Silent Truncation
The Google Analytics Data API handles the change without throwing a hard error. Instead, it silently discards ad metrics older than 36 to 37 months. Your reports simply show zero ad clicks, zero impressions, and zero ad spend for the truncated period, making the data look like a tracking failure.
BigQuery Transfer Failures
The BigQuery Data Transfer Service (DTS) generates generic transfer run failures. When the automated service attempts a historical backfill that steps beyond the 37-month limit, the transfer status turns red, displaying message codes such as ERROR: Job failed during execution.
Third-Party Tool Crashes
Business intelligence (BI) platforms like Data Studio, Power BI, and Tableau display empty charts, broken widget errors, or confusing “No Data” warnings when users select date ranges extending beyond three years.
Common Situations That Trigger Google Ads Errors
Several standard workflows in modern marketing departments now trigger these data retention errors. You must identify these setups within your organisation to prevent reporting interruptions.
- Year-Over-Year (YoY) Multi-Year Dashboards. Loading a dashboard that compares this month’s performance against the same month three years ago will fail if the underlying query requests daily data points to plot the trend line.
- Automated Bidding Script Recalibrations. Custom scripts that calculate bidding adjustments based on long-term seasonal peaks (such as multi-year Black Friday or Christmas cycles) will crash when they attempt to query historical daily performance.
- New BigQuery Destination Ingestion. Attempting to backfill a newly created BigQuery dataset with historical Google Ads data will fail if you set the backfill range to begin before the 37-month limit.
- Multi-Year Multi-Touch Attribution (MTA) Runs. Run routines that parse user click paths across several years to calculate fractional conversion credit will fail, as the Google Ads touchpoints beyond 37 months are no longer accessible.
- Linked Google Analytics 4 (GA4) Ad Reports. Loading historical acquisition reports inside GA4 that display linked Google Ads campaign analytics will show sudden drops or blank rows for older timeframes.
How to Identify and Fix Google Ads Data Access Errors
Resolving these issues requires targeted technical adjustments across your entire data pipeline. Use these specific procedures to address errors in each affected system.
Fixing Google Analytics Silent Truncation
When the Google Analytics Data API silently drops Google Ads metrics, it compromises your cross-channel reporting. To resolve the Google Analytics silent truncation, you must decouple your historical reports from the native Google Ads integration.
- Isolate the Truncated Fields. Identify the specific metrics returning null values (such as googleAdsConversions, googleAdsClicks, and googleAdsAdGroupId) for dates older than 37 months.
- Use Event-Level Raw Exports. Rather than querying the aggregated Google Analytics Data API, query your raw GA4 event data exported to BigQuery. The raw event export contains the original source, medium, and campaign parameters (e.g., utm_source=google and utm_medium=cpc) that remain unaffected by the Google Ads API truncation.
- Map Traffic Parameters Natively. Write SQL queries in BigQuery that categorise and aggregate your historical ad traffic based on these persistent URL query string values. This bypasses the Google Ads API limit and restores your multi-year session attribution.
Debugging Broken Google Ads API Tracking Scripts
Custom JavaScript or Python scripts that call the Google Ads API require immediate query syntax updates to handle the new boundary rules. Use these steps for debugging broken Google Ads API tracking scripts:
- Implement Dynamic Date Offsets. Remove all hardcoded historical start dates from your scripts. Replace them with a dynamic calculation that sets the start date relative to the current execution date.
| # Python snippet to calculate a compliant 37-month boundary
from datetime import datetime, timedelta def get_compliant_start_date(): today = datetime.today() # 37 months roughly equals 1127 days; restrict to 1100 to ensure a safe buffer safe_boundary = today – timedelta(days=1100) return safe_boundary.strftime(‘%Y-%m-%d’) |
- Add Try-Catch Error Handling. Update your API call logic to catch GoogleAdsException codes. If the script encounters an invalid date range error, programmatically fall back to a safer, shorter window.
- Restrict the Granularity of Old Queries. Set up your scripts to automatically switch from a daily grouping (segments.date) to a monthly grouping (segments.month) if the target date range extends past the 37-month threshold.
Troubleshooting BigQuery Data Transfer Service Query Failures
If your BigQuery DTS transfers are consistently failing, the service is likely attempting to sync historical records that Google has already locked. Use this process for troubleshooting BigQuery Data Transfer Service query failures:
- Check the Run Logs. Open the Google Cloud Console, navigate to BigQuery, and select “Data Transfer.” Inspect the run history for the failed transfer. Look for error logs stating that the API rejected the requested historical backfill window.
- Modify the Backfill Parameters. When initiating a manual backfill, strictly limit the “Start Date” to a maximum of 37 months before the current day.
- Disable Automated Multi-Year Schedules. Ensure that your transfer configurations do not contain custom schedule parameters that attempt to force historical updates beyond the rolling window. Set the transfer to only sync incremental, recent data on a daily schedule.
Best Practices for Managing Long-Term Google Ads Data
Surviving platform-imposed reporting limits requires a move toward independent data ownership. You must build an architecture that stores your data before the platform truncates it.
Recovering Missing Google Ads Historical Data Warehouses
If you missed the June 1 deadline to export your pre-37-month data, you must take active steps toward recovering missing Google Ads historical data warehouses.
While you can no longer pull granular data directly from Google, you can reconstruct your historical database using alternative records.
- Extract Monthly Aggregate Backfills. Query the Google Ads API or user interface for monthly-level performance metrics, which remain accessible for up to 11 years. Export these aggregates to your data warehouse.
- Merge with Google Analytics Sessions. Pull historical session-level data from your GA4 archives for the missing timeframes. Map the organic and paid traffic volumes to establish a baseline of historical user activity.
- Import External Campaign Reports. Retrieve old CSV reports, emailed PDF summaries, or agency deliverables from your archives. Use data preparation tools to parse, structure, and upload these static files into your central BigQuery database.
Blending Legacy High-Level Marketing Metrics
To maintain continuous multi-year reporting, you must build a database structure capable of blending legacy high-level marketing metrics with modern, granular records.
| [Legacy High-Level Data (Months 38-132)] ──┐ [SQL UNION Schema]
├──> ↓ [Granular Data (Months 1-37)] ───────────┘ [Unified BI Dashboard] |
- Create a Dual-Schema Database. Build two separate tables in your data warehouse: one for granular data (daily/hourly) and one for legacy aggregate data (monthly).
- Write a Unified UNION View. Create an SQL view that standardises the schemas of both tables. For the legacy table, artificially distribute the monthly metrics across the days of the month (e.g., divide monthly clicks by 30) or aggregate your modern daily table up to the monthly level to ensure compatibility.
- Configure BI Tool Inputs. Point your Data Studio or Power BI dashboards to this unified view. This allows users to view an uninterrupted 10-year trend line, automatically switching from daily granularity to monthly granularity as they look further back in time.
Rebuilding Multi-Year Attribution Pipelines Around Restricted Reporting Windows
Traditional touchpoint attribution relies heavily on long-term user tracking. For organisations rebuilding multi-year attribution pipelines around restricted reporting windows, a shift in methodology is required.
- Implement Marketing Mix Modelling (MMM). Move away from user-level click tracking for multi-year analysis. Deploy aggregate-level MMM frameworks (such as Google’s open-source Robyn or Meta’s LightweightMMM) that rely on monthly spend and channel-level outcomes rather than individual user paths.
- Use First-Party Identity Resolution. Build a first-party identity graph on your own servers. By capturing and storing user interactions (such as CRM sign-ups or email clicks) in your own database, you preserve the touchpoint history indefinitely, bypassing ad platform limits.
- Standardise UTM Parameters. Enforce strict UTM tagging across all Google Ads campaigns. This ensures that even when Google Ads truncates its internal reporting, your web analytics tools capture and retain the campaign source data permanently.
Future-Proof Your PPC Reporting
Google’s 37-month data retention limit is a significant hurdle for enterprises and agencies accustomed to unlimited historical access.
However, this policy update also serves as an opportunity to modernise your data strategy. By implementing robust ETL pipelines, creating unified SQL schemas, and transitioning to first-party data ownership, you protect your organisation from platform volatility.
Accuracy in marketing analytics requires independent data governance.
Tell No Lies provides the data engineering expertise and technical audits needed to secure your marketing data warehouses and restore your multi-year reporting.
Contact us today and let us help you keep your BI running without interruption.