Google Analytics 4 (GA4)
This page contains the setup guide and reference information for the Google Analytics 4 (GA4) source connector.
Google Analytics 4 (GA4) is the latest version of Google Analytics, introduced in 2020. It offers a new data model that emphasizes events and user properties, rather than pageviews and sessions. This updated model allows for more flexibility and customization in reporting, and provides more accurate measurement of user behavior across various devices and platforms.
This connector works with Google Analytics 4 (GA4) and Google Analytics 360 (GA360) properties.
Prerequisites
- A Google Analytics account with access to the GA4 property and property ID you want to sync
Setup guide
Step 1: Set up Google Analytics 4 (GA4)
Create a Service Account for authentication
- Sign in to the Google Account you are using for Google Analytics as an admin.
- Go to the Service Accounts page in the Google Developers console.
- Select the project you want to use (or create a new one) and click Continue.
- Click + Create Service Account at the top of the page.
- Enter a name for the service account, and optionally, a description. Click Create and Continue.
- Choose the role for the service account. We recommend the Viewer role (Read & Analyze permissions). Click Continue.
- Select your new service account from the list, and open the Keys tab. Click Add Key > Create New Key.
- Select JSON as the Key type. This will generate and download the JSON key file that you'll use for authentication. Click Continue.
When authenticating with a service account (Airbyte Open Source), you must also grant that service account access to the GA4 property in Google Analytics. Creating a service account and downloading the JSON key does not automatically give it permission to read Analytics data.
- In Google Analytics, go to Admin → under Property, click Property access management.
- Click + → Add users, then add the service account email (for example,
...@...iam.gserviceaccount.com). - Grant at least the Viewer role (read-only) for the target property.
Enable the Google Analytics APIs
Before you can use the service account to access Google Analytics data, you need to enable the required APIs:
- Go to the Google Analytics Reporting API dashboard. Make sure you have selected the associated project for your service account, and enable the API. You can also set quotas and check usage.
- Go to the Google Analytics API dashboard. Make sure you have selected the associated project for your service account, and enable the API.
- Go to the Google Analytics Data API dashboard. Make sure you have selected the associated project for your service account, and enable the API.
For Airbyte Cloud:
-
Log into your Airbyte Cloud account.
-
Click Sources and then click + New source.
-
On the Set up the source page, select Google Analytics 4 (GA4) from the Source type dropdown.
-
Enter a name for the Google Analytics 4 (GA4) connector.
-
Select Authenticate via Google (Oauth) from the dropdown menu and click Authenticate your Google Analytics 4 (GA4) account. This will open a pop-up window where you can log in to your Google account and grant Airbyte access to your Google Analytics account.
-
Enter the Property ID whose events are tracked. This ID should be a numeric value, such as
123456789. If you are unsure where to find this value, refer to Google's documentation.noteIf the Property Settings shows a "Tracking Id" such as "UA-123...-1", this denotes that the property is a Universal Analytics property, and the Analytics data for that property cannot be reported on using this connector. You can create a new Google Analytics 4 property by following these instructions.
-
(Optional) In the Start Date field, use the provided datepicker or enter a date programmatically in the format
YYYY-MM-DD. All data added from this date onward will be replicated. Note that this setting is not applied to custom Cohort reports. -
(Optional) In the Custom Reports field, you may optionally describe any custom reports you want to sync from Google Analytics. See the Custom Reports section below for more information on formulating these reports.
-
(Optional) In the Data Request Interval (Days) field, you can specify the interval in days (ranging from 1 to 364) used when requesting data from the Google Analytics API. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. This field does not apply to custom Cohort reports. See the Data Sampling section below for more context on this field.
-
(Optional) Enable One Stream per Report to create one stream per report covering all configured property IDs, instead of one stream per report per property. Recommended when syncing many properties. See the One Stream per Report section below — enabling it on an existing connection requires a full re-sync.
It's important to consider how dimensions like month or yearMonth are specified. These dimensions organize the data according to your preferences.
However, keep in mind that the data presentation is also influenced by the chosen date range for the report. In cases where a very specific date range is selected, such as a single day (Data Request Interval (Days) set to one day), duplicated data entries for each day might appear.
To mitigate this, we recommend adjusting the Data Request Interval (Days) value to 364. By doing so, you can obtain more precise results and prevent the occurrence of duplicated data.
- Click Set up source and wait for the tests to complete.
For Airbyte Open Source:
-
Navigate to the Airbyte Open Source dashboard.
-
In the left navigation bar, click Sources. In the top-right corner, click + New source.
-
Find and select Google Analytics 4 (GA4) from the list of available sources.
-
Select Service Account Key Authentication from the dropdown list and enter the Service Account JSON Key from Step 1.
-
Enter the Property ID whose events are tracked. This ID should be a numeric value, such as
123456789. If you are unsure where to find this value, refer to Google's documentation.noteIf the Property Settings shows a "Tracking Id" such as "UA-123...-1", this denotes that the property is a Universal Analytics property, and the Analytics data for that property cannot be reported on in the Data API. You can create a new Google Analytics 4 property by following these instructions.
-
(Optional) In the Start Date field, use the provided datepicker or enter a date programmatically in the format
YYYY-MM-DD. All data added from this date onward will be replicated. Note that this setting is not applied to custom Cohort reports.
If the start date is not provided, the default value will be used, which is two years from the initial sync.
Many analyses and data investigations may require 24-48 hours to process information from your website or app. To ensure the accuracy of the data, we subtract two days from the starting date. For more details, please refer to Google's documentation.
- (Optional) Toggle the switch Keep Empty Rows if you want each row with all metrics equal to 0 to be returned.
- (Optional) In the Custom Reports field, you may optionally describe any custom reports you want to sync from Google Analytics. See the Custom Reports section below for more information on formulating these reports.
- (Optional) In the Data Request Interval (Days) field, you can specify the interval in days (ranging from 1 to 364) used when requesting data from the Google Analytics API. The bigger this value is, the faster the sync will be, but the more likely that sampling will be applied to your data, potentially causing inaccuracies in the returned results. We recommend setting this to 1 unless you have a hard requirement to make the sync faster at the expense of accuracy. This field does not apply to custom Cohort reports. See the Data Sampling section below for more context on this field.
- (Optional) In the Lookback window (Days) field, specify how many days of past data to refresh on every run. Because attribution changes after the event date, and Google Analytics has data processing latency, this helps keep your data consistent. For example, setting this to 5 causes every sync to re-fetch data from the last bookmark date minus 5 days.
- (Optional) Enable One Stream per Report to create one stream per report covering all configured property IDs, instead of one stream per report per property. Recommended when syncing many properties. See the One Stream per Report section below — enabling it on an existing connection requires a full re-sync.
It's important to consider how dimensions like month or yearMonth are specified. These dimensions organize the data according to your preferences.
However, keep in mind that the data presentation is also influenced by the chosen date range for the report. In cases where a very specific date range is selected, such as a single day (Data Request Interval (Days) set to one day), duplicated data entries for each day might appear.
To mitigate this, we recommend adjusting the Data Request Interval (Days) value to 364. By doing so, you can obtain more precise results and prevent the occurrence of duplicated data.
- Click Set up source and wait for the tests to complete.
Supported sync modes
The Google Analytics 4 (GA4) source connector supports the following sync modes:
Supported Streams
This connector outputs the following streams:
Preconfigured and custom report streams use the Google Analytics Data API properties.runReport method. Each report stream represents a different combination of dimensions and metrics sent to the same API endpoint. Custom reports that specify pivots use the properties.runPivotReport method instead.
- Preconfigured streams:
- daily_active_users
- devices
- four_weekly_active_users
- locations
- pages
- traffic_sources
- website_overview
- weekly_active_users
- user_acquisition_first_user_medium_report
- user_acquisition_first_user_source_report
- user_acquisition_first_user_source_medium_report
- user_acquisition_first_user_source_platform_report
- user_acquisition_first_user_campaign_report
- user_acquisition_first_user_google_ads_ad_network_type_report
- user_acquisition_first_user_google_ads_ad_group_name_report
- traffic_acquisition_session_source_medium_report
- traffic_acquisition_session_medium_report
- traffic_acquisition_session_source_report
- traffic_acquisition_session_campaign_report
- traffic_acquisition_session_default_channel_grouping_report
- traffic_acquisition_session_source_platform_report
- events_report
- weekly_events_report
- conversions_report
- pages_title_and_screen_class_report
- pages_path_report
- pages_title_and_screen_name_report
- content_group_report
- ecommerce_purchases_item_name_report
- ecommerce_purchases_item_id_report
- ecommerce_purchases_item_category_report_combined
- ecommerce_purchases_item_category_report
- ecommerce_purchases_item_category_2_report
- ecommerce_purchases_item_category_3_report
- ecommerce_purchases_item_category_4_report
- ecommerce_purchases_item_category_5_report
- ecommerce_purchases_item_brand_report
- publisher_ads_ad_unit_report
- publisher_ads_page_path_report
- publisher_ads_ad_format_report
- publisher_ads_ad_source_report
- demographic_country_report
- demographic_region_report
- demographic_city_report
- demographic_language_report
- demographic_age_report
- demographic_gender_report
- demographic_interest_report
- tech_browser_report
- tech_device_category_report
- tech_device_model_report
- tech_screen_resolution_report
- tech_app_version_report
- tech_platform_report
- tech_platform_device_category_report
- tech_operating_system_report
- tech_os_with_version_report
- Property metadata stream:
property_metadata
- Custom stream(s)
The property_metadata stream is full-refresh and uses the Admin API properties.get method. It emits one record for each configured property ID and includes a property_id field for joining with report streams.
The property_metadata stream requires the Google Analytics Admin API (analyticsadmin.googleapis.com) to be enabled for the GCP project associated with the credentials; service-account users must enable it in their own project. If it is not enabled, this stream fails with a 403 SERVICE_DISABLED error, while report streams continue to work.
Connector-specific features
Custom Reports
Custom reports in Google Analytics allow for flexibility in querying specific data tailored to your needs. You can define the following components:
- Name: The name of the custom report.
- Dimensions: An array of categories for data, such as city, user type, etc.
- Metrics: An array of quantitative measurements, such as active users, page views, etc.
- CohortSpec: (Optional) An object containing specific cohort analysis settings, such as cohort size and date range. More information on this object can be found in the GA4 documentation.
- Pivots: (Optional) An array of pivot tables for data, such as page views by city, etc. More information on pivots can be found in the GA4 documentation.
A full list of dimensions and metrics supported in the API can be found here. To ensure your dimensions and metrics are compatible for your GA4 property, you can use the GA4 Dimensions & Metrics Explorer.
The following is an example of a basic User Engagement report to track sessions and bounce rate, segmented by city:
[
{
"name": "User Engagement Report",
"dimensions": ["city"],
"metrics": ["sessions", "bounceRate"]
}
]
By specifying a cohort with a 7-day range and pivoting on the city dimension, the report can be further tailored to offer a detailed view of engagement trends within the top 50 cities for the specified date range.
[
{
"name": "User Engagement Report",
"dimensions": ["city"],
"metrics": ["sessions", "bounceRate"],
"cohortSpec": {
"cohorts": [
{
"name": "Last 7 Days",
"dateRange": {
"startDate": "2023-07-27",
"endDate": "2023-08-03"
}
}
],
"cohortReportSettings": {
"accumulate": true
}
},
"pivots": [
{
"fieldNames": ["city"],
"limit": 50,
"metricAggregations": ["TOTAL"]
}
]
}
]
One Stream per Report
By default, the connector creates a separate stream for every combination of report and Property ID. With 57 built-in reports and 70 properties that is roughly 3,990 streams, which makes the catalog slow to load, the stream list hard to manage, and setup error-prone.
Enabling One Stream per Report creates one stream per report instead, covering every configured property. Each record carries a property_id field, and property_id is part of the stream's primary key, so rows from different properties remain distinct in the destination. Each property also keeps its own incremental cursor, so they sync independently.
Consolidated streams are named <report_name>Consolidated — for example, the devices report becomes devicesConsolidated. The per-property streams (devices, devicesProperty5729978930, and so on) are not created while this setting is enabled. The distinct name is deliberate: it guarantees the consolidated stream starts with a clean slate rather than inheriting the destination table and incremental cursor of the single-property stream it replaces.
The stream's schema is the union of the field definitions across all configured properties. This matters if you use custom metrics, which are defined per property in GA4: a custom metric that exists on only some of your properties is still included in the schema, so its data is not dropped. If the same metric name is typed differently across properties, the type from the property listed first in Property IDs is used.
Enabling or disabling this setting changes stream names, so data is written to new destination tables and incremental state resets. This is not a setting to toggle casually on an established connection.
Changing it on an existing connection requires a schema refresh. The stream list you see in a connection is a snapshot of the last schema discovery, so the per-property streams keep appearing — and keep syncing nothing — until you refresh it. Follow these steps in order:
- Enable the setting on the source and save.
- Run Refresh source schema on each connection using this source. The per-property streams (
devices,devicesProperty5729978930, and so on) are reported as removed, and the<report_name>Consolidatedstreams appear. - Enable the consolidated streams you want and apply the changes.
- Run a sync. Because the consolidated streams are new, this is a full backfill covering every property.
- Once you have confirmed the backfill, you may drop the old per-property tables in your destination. Airbyte leaves them in place. Keep them if there is any chance you will revert — see below.
Between steps 1 and 3 the connection still lists the old stream names, which no longer exist in the source. Syncs during that window return no records for them.
Reverting is supported and loses no data. Disabling the setting restores the per-property streams under their original names once you refresh the schema again. Each one resumes from the cursor it held before you enabled the setting, so the period the setting was on is re-fetched on the next sync and no gap is left behind.
The one exception is step 5. Deleting a destination table does not reset the stream's cursor, so if you dropped the old per-property tables and later revert, those streams resume from their old cursor and the recreated tables will be missing everything before it. Clear those streams when you revert, and they will backfill in full.
Adding a Property ID after enabling this setting. New properties are added to the existing consolidated streams as new partitions, and a new partition starts from the stream's current cursor rather than from your Start Date. The new property's historical data is not backfilled and no error is raised. To backfill it, clear the affected streams after adding the Property ID.
This does not apply when the setting is off, where a new Property ID produces new streams that backfill on their own.
Syncs make the same number of API requests either way, so this setting reduces catalog size and destination table count rather than sync duration.
Data Sampling and Data Request Intervals
Data sampling in Google Analytics 4 refers to the process of estimating analytics data when the amount of data in an account exceeds Google's predefined compute thresholds. To mitigate the chances of data sampling being applied to the results, the Data Request Interval field allows users to specify the interval used when requesting data from the Google Analytics API.
By setting the interval to 1 day, users can reduce the data processed per request, minimizing the likelihood of data sampling and ensuring more accurate results. While larger time intervals (up to 364 days) can speed up the sync, we recommend choosing a smaller value to prioritize data accuracy unless there is a specific need for faster synchronization at the expense of some potential inaccuracies. Please note that this field does not apply to custom Cohort reports.
Refer to the Google Analytics documentation for more information on data sampling.
Performance Considerations
The Google Analytics connector is subject to Google Analytics Data API quotas. Please refer to Google's documentation for specific breakdowns on these quotas.
Data type map
| Integration Type | Airbyte Type |
|---|---|
string | string |
number | number |
array | array |
object | object |
IP allow list
If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.
Reference
Config fields reference
Changelog
Expand to review
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 2.11.0-rc.1 | 2026-08-11 | 83783 | Add an opt-in One Stream per Report mode that combines all configured property IDs into one stream per report named <report_name>Consolidated, with schemas merged across properties. Off by default; existing connections are unchanged |
| 2.10.2 | 2026-08-11 | 83343 | Preserve nested name fields when resolving dynamic streams |
| 2.10.1 | 2026-08-11 | 83952 | Update dependencies |
| 2.10.0 | 2026-07-30 | 83273 | Add the property_metadata stream with GA4 property metadata from the Admin API |
| 2.9.45 | 2026-07-28 | 82938 | Update dependencies |
| 2.9.44 | 2026-07-21 | 82436 | Update dependencies |
| 2.9.43 | 2026-07-14 | 81845 | Update dependencies |
| 2.9.42 | 2026-06-30 | 81086 | Update dependencies |
| 2.9.41 | 2026-06-23 | 80482 | Update dependencies |
| 2.9.40 | 2026-06-16 | 79881 | Update dependencies |
| 2.9.39 | 2026-06-09 | 79340 | Update dependencies |
| 2.9.38 | 2026-06-02 | 77618 | Infer auth_type from credentials when missing to fix OAuth connection failures |
| 2.9.37 | 2026-06-02 | 77243 | Update dependencies |
| 2.9.36 | 2026-05-27 | 77877 | Update the connector runtime to the latest CDK version and reduce intermittent stream read hangs |
| 2.9.35 | 2026-05-19 | PR-pending | Restore default_concurrency to 4 after c=6 rollout showed heartbeat timeout outliers |
| 2.9.34 | 2026-05-18 | 78161 | Promoted release candidate to GA |
| 2.9.34-rc.2 | 2026-05-01 | PR-pending | Phase 1 step 3: bump default_concurrency 5 to 6 (tier-aware api_budget stays live) |
| 2.9.34-rc.1 | 2026-04-29 | 77550 | Phase 1 step 2: bump default_concurrency 4 to 5 and activate the tier-aware api_budget (Standard 10 req/s, Analytics 360 50 req/s on opt-in via subscription_tier) |
| 2.9.33-rc.1 | 2026-04-23 | 76956 | Add concurrency_level (default 4, max 16) and subscription_tier spec field (Standard or Analytics 360) for the Path B concurrency tuning rollout (RC); existing and tier-aware api_budget kept commented during tuning |
| 2.9.31 | 2026-04-20 | 76185 | Surface the GA4 API error message on 400 and 403 responses, and stop retrying permission errors |
| 2.9.30 | 2026-04-14 | 76190 | Add access_token to extract_output and complete_oauth_output_specification to fix OAuth secretId 422 regression |
| 2.9.32 | 2026-04-21 | 76600 | Update dependencies |
| 2.9.31 | 2026-04-09 | 76185 | Improve error messages for HTTP 400/403 responses; use predicate-based 403 handling to distinguish permission errors (config_error) from other 403s (retry) |
| 2.9.30 | 2026-04-09 | 76190 | Add access_token to extract_output and complete_oauth_output_specification to fix OAuth secretId 422 regression |
| 2.9.29 | 2026-04-01 | 75580 | Add oauth_connector_input_specification with granular scopes |
| 2.9.28 | 2026-03-31 | 75678 | Update dependencies |
| 2.9.27 | 2026-03-24 | 74568 | Update dependencies |
| 2.9.26 | 2026-02-25 | 73632 | fix(source-google-analytics-data-api): use GA4 today keyword for timezone-correct end dates (AI-Triage PR) |
| 2.9.25 | 2026-02-24 | 73750 | Update dependencies |
| 2.9.24 | 2026-02-17 | 73404 | Update dependencies |
| 2.9.23 | 2026-02-10 | 73067 | Update dependencies |
| 2.9.22 | 2026-02-03 | 72590 | Update dependencies |
| 2.9.21 | 2026-01-20 | 71924 | Update dependencies |
| 2.9.20 | 2026-01-14 | 71432 | Update dependencies |
| 2.9.19 | 2025-12-18 | 70693 | Update dependencies |
| 2.9.18 | 2025-11-25 | 69892 | Update dependencies |
| 2.9.17 | 2025-11-18 | 69414 | Update dependencies |
| 2.9.16 | 2025-11-12 | 69279 | Flag authentication issues as config_error |
| 2.9.15 | 2025-10-29 | 69011 | Update dependencies |
| 2.9.14 | 2025-10-21 | 68302 | Update dependencies |
| 2.9.13 | 2025-10-14 | tbd | Promoting release candidate 2.9.13-rc.1 to a main version. |
| 2.9.13-rc.1 | 2025-10-08 | 67148 | Add dimensionFilter into the body of requests for custom reports and custom DimensionFilterConfigTransformation component |
| 2.9.12 | 2025-10-07 | 67262 | Update dependencies |
| 2.9.11 | 2025-09-30 | 66306 | Update dependencies |
| 2.9.10 | 2025-09-10 | 66008 | Update to CDK v7 |
| 2.9.9 | 2025-09-09 | 65895 | Update dependencies |
| 2.9.8 | 2025-08-23 | 65311 | Update dependencies |
| 2.9.7 | 2025-08-09 | 64631 | Update dependencies |
| 2.9.6 | 2025-08-02 | 64254 | Update dependencies |
| 2.9.5 | 2025-07-26 | 63820 | Update dependencies |
| 2.9.4 | 2025-07-19 | 63528 | Update dependencies |
| 2.9.3 | 2025-07-16 | 63339 | Promoting release candidate 2.9.3-rc.2 to a main version. |
| 2.9.3-rc.2 | 2025-07-15 | 63297 | Enable progressive rollout |
| 2.9.3-rc.1 | 2025-07-15 | 63297 | Fix bug where concurrent partitions are not merged back together properly so sequential state can't progress to the latest record |
| 2.9.2 | 2025-07-12 | 63129 | Update dependencies |
| 2.9.1 | 2025-07-05 | 61135 | Update dependencies |
| 2.9.0 | 2025-07-03 | 62507 | Promoting release candidate 2.9.0-rc.1 to a main version. |
| 2.9.0-rc.1 | 2025-06-30 | 61550 | Unwrap to manifest-only |
| 2.8.2 | 2025-06-17 | 61678 | Bump Memory on CHECK to 1600Mi |
| 2.8.1 | 2025-06-12 | 61555 | Fixes time data parsing issue |
| 2.8.0 | 2025-06-11 | 61533 | Promoting release candidate 2.8.0-rc.2 to a main version. |
| 2.8.0-rc.2 | 2025-06-11 | 61491 | Fixed cohort check, record extractor and discovery |
| 2.8.0-rc.1 | 2025-05-20 | 60342 | Migrate to low-code |
| 2.7.7 | 2025-05-17 | 60708 | Update dependencies |
| 2.7.6 | 2025-05-10 | 59870 | Update dependencies |
| 2.7.5 | 2025-05-03 | 59225 | Update dependencies |
| 2.7.4 | 2025-04-26 | 58808 | Update dependencies |
| 2.7.3 | 2025-04-12 | 57703 | Update dependencies |
| 2.7.2 | 2025-04-05 | 57063 | Update dependencies |
| 2.7.1 | 2025-03-29 | 50048 | Update dependencies |
| 2.7.0 | 2025-02-12 | 48381 | add end date optional parameter |
| 2.6.2 | 2024-12-14 | 48649 | Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64 |
| 2.6.1 | 2024-10-29 | 47899 | Update dependencies |
| 2.6.0 | 2024-10-28 | 47013 | Migrate to CDK v5 |
| 2.5.13 | 2024-10-28 | 47061 | Update dependencies |
| 2.5.12 | 2024-10-12 | 46819 | Update dependencies |
| 2.5.11 | 2024-10-05 | 46475 | Update dependencies |
| 2.5.10 | 2024-09-28 | 46158 | Update dependencies |
| 2.5.9 | 2024-09-21 | 45773 | Update dependencies |
| 2.5.8 | 2024-09-14 | 45503 | Update dependencies |
| 2.5.7 | 2024-09-07 | 45289 | Update dependencies |
| 2.5.6 | 2024-08-31 | 44980 | Update dependencies |
| 2.5.5 | 2024-08-24 | 44645 | Update dependencies |
| 2.5.4 | 2024-08-17 | 44337 | Update dependencies |
| 2.5.3 | 2024-08-13 | 43929 | Increase streams max_time to backoff |
| 2.5.2 | 2024-08-12 | 43909 | Update dependencies |
| 2.5.1 | 2024-08-10 | 43289 | Update dependencies |
| 2.5.0 | 2024-08-07 | 42841 | Upgrade to CDK 3 |
| 2.4.14 | 2024-07-27 | 42746 | Update dependencies |
| 2.4.13 | 2024-07-20 | 42347 | Update dependencies |
| 2.4.12 | 2024-07-13 | 41801 | Update dependencies |
| 2.4.11 | 2024-07-10 | 41561 | Update dependencies |
| 2.4.10 | 2024-07-09 | 41295 | Update dependencies |
| 2.4.9 | 2024-07-06 | 40935 | Update dependencies |
| 2.4.8 | 2024-06-25 | 40429 | Update dependencies |
| 2.4.7 | 2024-06-22 | 40140 | Update dependencies |
| 2.4.6 | 2024-06-21 | 39916 | Added ability to skip missing stream in the CATALOG |
| 2.4.5 | 2024-06-06 | 38884 | Make lookback window configurable. |
| 2.4.4 | 2024-06-06 | 39209 | [autopull] Upgrade base image to v1.2.2 |
| 2.4.3 | 2024-06-03 | 38865 | Enforce unique property IDs |
| 2.4.2 | 2024-03-20 | 36302 | Don't extract state from the latest record if stream doesn't have a cursor_field |
| 2.4.1 | 2024-02-09 | 35073 | Manage dependencies with Poetry. |
| 2.4.0 | 2024-02-07 | 34951 | Replace the spec parameter from previous version to convert all conversions:* fields |
| 2.3.0 | 2024-02-06 | 34907 | Add new parameter to spec to convert conversions:purchase field to float |
| 2.2.2 | 2024-02-01 | 34708 | Add rounding integer values that may be float |
| 2.2.1 | 2024-01-18 | 34352 | Add incorrect custom reports config handling |
| 2.2.0 | 2024-01-10 | 34176 | Add a report option keepEmptyRows |
| 2.1.1 | 2024-01-08 | 34018 | prepare for airbyte-lib |
| 2.1.0 | 2023-12-28 | 33802 | Add CohortSpec to custom report in specification |
| 2.0.3 | 2023-11-03 | 32149 | Fixed bug with missing metadata when the credentials are not valid |
| 2.0.2 | 2023-11-02 | 32094 | Added handling for JSONDecodeError while checking for api qouta limits |
| 2.0.1 | 2023-10-18 | 31543 | Base image migration: remove Dockerfile and use the python-connector-base image |
| 2.0.0 | 2023-09-29 | 30930 | Use distinct stream naming in case there are multiple properties in the config. |
| 1.6.0 | 2023-09-19 | 30460 | Migrated custom reports from string to array; add FilterExpressions support |
| 1.5.1 | 2023-09-20 | 30608 | Revert : auto replacement name to underscore |
| 1.5.0 | 2023-09-18 | 30421 | Add yearWeek, yearMonth, year dimensions cursor |
| 1.4.1 | 2023-09-17 | 30506 | Fix None type error when metrics or dimensions response does not have name |
| 1.4.0 | 2023-09-15 | 30417 | Change start date to optional; add suggested streams and update errors handling |
| 1.3.1 | 2023-09-14 | 30424 | Fixed duplicated stream issue |
| 1.3.0 | 2023-09-13 | 30152 | Ability to add multiple property ids |
| 1.2.0 | 2023-09-11 | 30290 | Add new preconfigured reports |
| 1.1.3 | 2023-08-04 | 29103 | Update input field descriptions |
| 1.1.2 | 2023-07-03 | 27909 | Limit the page size of custom report streams |
| 1.1.1 | 2023-06-26 | 27718 | Limit the page size when calling check() |
| 1.1.0 | 2023-06-26 | 27738 | License Update: Elv2 |
| 1.0.0 | 2023-06-22 | 26283 | Added primary_key and lookback window |
| 0.2.7 | 2023-06-21 | 27531 | Fix formatting |
| 0.2.6 | 2023-06-09 | 27207 | Improve api rate limit messages |
| 0.2.5 | 2023-06-08 | 27175 | Improve Error Messages |
| 0.2.4 | 2023-06-01 | 26887 | Remove authSpecification from connector spec in favour of advancedAuth |
| 0.2.3 | 2023-05-16 | 26126 | Fix pagination |
| 0.2.2 | 2023-05-12 | 25987 | Categorized Config Errors Accurately |
| 0.2.1 | 2023-05-11 | 26008 | Added handling for 429 - potentiallyThresholdedRequestsPerHour error |
| 0.2.0 | 2023-04-13 | 25179 | Implement support for custom Cohort and Pivot reports |
| 0.1.3 | 2023-03-10 | 23872 | Fix parse + cursor for custom reports |
| 0.1.2 | 2023-03-07 | 23822 | Improve rate limits customer faced error messages and retry logic for 429 |
| 0.1.1 | 2023-01-10 | 21169 | Slicer updated, unit tests added |
| 0.1.0 | 2023-01-08 | 20889 | Improved config validation, SAT |
| 0.0.3 | 2022-08-15 | 15229 | Source Google Analytics Data Api: code refactoring |
| 0.0.2 | 2022-07-27 | 15087 | fix documentationUrl |
| 0.0.1 | 2022-05-09 | 12701 | Introduce Google Analytics Data API source |