---
title: "Google Analytics 4"
slug: "google-analytics-4"
description: "Automate data synchronization with Dataddo's Google Analytics 4 connector. Securely extract data from multiple accounts, configure snapshotting preferences."
updated: 2026-03-18T19:51:06Z
published: 2026-03-18T19:51:06Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dataddo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Analytics 4

**Google Analytics 4 (GA4)** is a web analytics platform that provides businesses with advanced tracking and measurement capabilities, focusing on a user-centric data model that enables tracking of user interactions across multiple devices and platforms, allowing for a more comprehensive understanding of customer behavior and journey. GA4 also incorporates machine learning features to provide actionable insights and predictions for businesses to optimize their marketing strategies.

Refer to Google's official documentation:

- See [all available endpoints from the GA4 API](https://support.google.com/analytics/answer/9143382).
- Use the interactive [Google Ads Query Builder](https://ga-dev-tools.google/ga4/dimensions-metrics-explorer/) to check metrics and dimensions compatibility.

If you have multiple GA4 accounts and would like to extract the same data from all of them, it's possible through [multi-account extraction](/docs/multi-account-extraction) (MAE). Contact our Solutions team to enable this feature.

**DATADDO TIP**

If you want to use MAE, make sure your **Include property ID** option is turned on. to be able to identify which records belong to each account when doing your data analysis.

## Authorize Connection to Google Analytics 4

To authorize this service, use **OAuth 2.0** to share specific data with Dataddo while keeping usernames, passwords, and other information private.

1. On the **Authorizers** page, click on [Authorize New Service](https://app.dataddo.com/service/new) and select your service.
2. Follow the on-screen prompts to grant Dataddo the necessary permissions to **access and retrieve** your data.
3. **[Optional]** Once your ***authorizer*** is created, click on it to **change the label** for easier identification.

Ensure that the account you're granting access to holds at least **admin-level permissions**. If necessary, assign a team member with the required permissions with the [authorizer role](https://docs.dataddo.com/docs/user-roles#authorizer) to authenticate the service for you.

For more information, see our article on [***authorizers***](https://docs.dataddo.com/docs/authorized-services).

## How to Create a Google Analytics 4 Data Source

1. On the **Sources** page, click on the [**Create Source**](https://app.dataddo.com/sources/new) button.
2. Select the connector from the list and name your ***data source***.
3. On the **Account** step select your ***authorizer*** from the drop-down menu.
          **Didn't find your authorizer?**

          

Click on **Add new Account** at the bottom of the drop-down and follow the on-screen prompts. You can also go to the **Authorizers** tab and click on [**Add New Service**](https://app.dataddo.com/service/new).
4. On the **Attributes and Metrics** step, select the **metrics and attributes** you want to extract.  

![Create a source using a custom-schema connector.](https://cdn.document360.io/084ed225-3f99-4644-a2da-39ca0cd5ef45/Images/Documentation/Create%20Source%20-%20Custom-Schema%20Connector.png)
5. On the **Metadata** step, select which [**metadata fields**](/docs/metadata-inclusion) such as extraction time to add to your data.
6. On the **Snapshot** step:
  1. Configure your [**sync frequency**](/docs/extraction#extraction-frequency) or click **Show advanced settings** to set the exact synchronization time.
          **DATADDO TIP**

          

To **load historical data**, refer to the [**Data Backfilling**](https://docs.dataddo.com/docs/data-backfilling) article.
  2. [Optional] Enable the **Allow Empty Data Extractions** toggle to allow the extraction when no data is available.
7. In the top-right corner, click **Test Data** button to preview extracted data. **Adjust the date range** for a specific time frame.
8. Click on **Save** and **congratulations, your new data source is ready!**

---

## Limitations

### Metrics and Dimensions Combinations

Not all GA4 metrics and dimensions combinations will work, even though they might be available to select. For available combinations, refer to [the official GA4 website](https://ga-dev-tools.web.app/ga4/dimensions-metrics-explorer/).

### Rows Limit per Batch

The GA4 API allows the extraction of up to **10,000 rows** at a time. In case you need need to extract more rows, load data in multiple batches using [manual data load](/docs/data-backfilling).

### Historical Data Limitation

The GA4 API allows you to extract **up to 1 year** of historical data.

### Fresh Data Unavailable

Google takes between 24 – 72 hours to process data which is why it’s possible to get data only from 3 days ago or older.

You can extract last 3 days of GA4 data but **keep in mind that this data will most likely change**.

Send fresh GA4 data to a

- [Data warehouse](/docs/google-analytics-4#warehouse)
- [Dashboarding app](/docs/google-analytics-4#dashboard)

#### Fresh GA4 Data to a Data Warehouse

First, make sure that **deduplication** is possible in your case. Then set

- [Snapshot keeping policy](/docs/extraction#snapshot-keeping-policy) to **replace**
- [Date range expression](/docs/setting-date-range) to **3d1 or 3d0** (to extract last 3 days worth of data every day)
- [Write mode](/docs/data-storages#write-modes) to **upsert**

1. Click on your ***data source***.
2. In the **Snapshotting** tab, select **Replace**.
3. In the **Advanced** tab, change the date range expression to **3d1** or **3d0**.  

![Google Analytics 4 - fresh data to DWH date range.png](https://cdn.document360.io/084ed225-3f99-4644-a2da-39ca0cd5ef45/Images/Documentation/Google%20Analytics%204%20-%20fresh%20data%20to%20DWH%20date%20range.png)
4. **Save** your configuration.
5. When [creating a data flow](https://app.dataddo.com/flows), select **upsert** (limited to 4 unique columns) as your write mode.

**DATADDO TIP**

In case **upsert** is not possible (e.g. you need more than 4 unique columns), you can deduplicate in your own storage using the`dataddo_extraction_timestamp` field.

#### Fresh GA4 Data to a Dashboarding App

Create **two *data sources***, one for **historical data**, the second for **fresh data**.

**[Data Source 1: Historical Data]** This ***data source*** will add data from 4 days ago to your table every day. Click on your ***data source*** and set the following:

- [Snapshot keeping policy](/docs/extraction#snapshot-keeping-policy) to **append**
- [Date range expression](/docs/setting-date-range) (in the **Advanced Settings** tab) to **4d4** or older  

![Google Analytics 4 - fresh data to dashboard date range.png](https://cdn.document360.io/084ed225-3f99-4644-a2da-39ca0cd5ef45/Images/Documentation/Google%20Analytics%204%20-%20fresh%20data%20to%20dashboard%20date%20range.png)

**[Data Source 2: Fresh Data]** This ***data source*** will be a running window of the last three days (it will always contain the last 3 days' fresh data without duplicates). Click on your ***data source*** and set the following:

- [Snapshot keeping policy](/docs/extraction#snapshot-keeping-policy) to **replace**
- [Date range expression](/docs/setting-date-range) (in the **Advanced Settings** tab): **3d1** or **3d0**  

![Google Analytics 4 - fresh data to dashboard snapshotting.png](https://cdn.document360.io/084ed225-3f99-4644-a2da-39ca0cd5ef45/Images/Documentation/Google%20Analytics%204%20-%20fresh%20data%20to%20dashboard%20snapshotting.png)

As both of these sources have the same schema, they can be added into **the same flow**. For more information, see the article on [data union](/docs/data-union).

## Troubleshooting

### Data Preview Unavailable

No data preview when you click on **Test Data** might be caused by an issue with your ***source*** configuration. The most common causes are:

- **Date range**: Try a smaller date range. You can load the rest of your data afterward using [manual data load](https://docs.dataddo.com/docs/data-backfilling).
- **Insufficient permissions**: Please make sure your authorized account has at least admin-level permissions.
- **Invalid metrics, attributes, or breakdowns**: You may not have any data for the selected metrics, attributes, or breakdowns.
- **Incompatible combination of metrics, attributes, or breakdowns**: Your selected combination cannot be queried together. Please refer to the service's documentation to view a full list of metrics that can be included in the same ***data source***.

### Duplicates

Duplicates may be the result of selecting too many dimensions during ***data source*** configuration. Choose fewer dimensions or make sure they are compatible.

**Example**: We want to get the total daily number of sessions.

Original table

| Date | Number of Sessions |
| --- | --- |
| Jan 1 2022 | **2** |

Total number of sessions: **2**

When the `pagepath` dimension (what pages are visited by every user) is added, we get the following numbers:

| Date | Number of Sessions | Page |
| --- | --- | --- |
| Jan 1 2022 | **2** | Page 1 |
| Jan 1 2022 | **1** | Page 2 |

Total number of sessions: **3**

**The issue:** One user visited both **Page 1** and **Page 2** during the same session. The same session appeared twice in combination with each page and resulted in a duplicate.

### Missing Data Error

Missing data occurs when the total values was **broken down into subcategories** and the **sum of the two subcategories differs**. When working with your data, you need to keep this difference in mind.

When Google is unable to retrieve the subcategory information on all of its users, this value is left blank. These blank values are then disregarded instead of being put into their own category. This error happens most often with `gender` or `country` dimensions.

**Example**: We want to find out how many men and how many women visited the website last week.

Original table

| Total | Number |
| --- | --- |
| Total Users | 500 |

When the `gender` dimension is added, the table will look like this:

| Total | Number |
| --- | --- |
| Total Female Users | 200 |
| Total Male Users | 200 |

**The issue:** 100 from the total is missing as Google was not able to retrieve information on 100 users’ genders and the undetermined values **were not put into a separate row**.

### No Data Error

If you have no data in your source, it may lead to a broken ***data source*** and issues with synchronization. Check the [**Allow Empty**](/docs/extraction-logs#no-data-retrieved) box in the source's settings, to send empty data to your destination.

### Too Much Data Error

Please note that when you repeatedly attempt to extract **unavailable** GA4 data, you may encounter a `5xx error`. After several tries, data extraction will be **blocked for 16 hours**. This error often shows up when there's a too much data in your GA4.

### Failed to Save Extracted Data to Storage Error

When it GA4 hasn't received any information for a dimension, it will return **(not set)** as a value which is a `string`. This may cause your ***data source*** to break if the expected data type is `integer`.

1. To fix this issue, [change the data type](/docs/schema#changing-data-types) of the field to `string`. Click on the ***data source*** and navigate to the **Schema** tab.
2. If your ***data source*** is connected to a ***data destination***, don't forget to change the data type in the ***destination*** as well.

## Related Articles

Now that you have successfully created a ***data source***, see how you can connect your data to a dashboarding app or a data storage.

**Sending Data to Dashboarding Apps**

- [Simple Data Integration to Dashboards](https://docs.dataddo.com/docs/simple-data-integration-to-dashboards)
- [Data Backfilling to Dashboarding Apps](https://docs.dataddo.com/docs/data-backfilling-to-dashboarding-apps)

**Sending Data to Data Storages**

- [Batch Ingestion to Data Warehouses](https://docs.dataddo.com/docs/ingestion-to-data-warehouses)
- [Data Backfilling to Storages](https://docs.dataddo.com/docs/data-backfilling-to-storages)

**Other Resources**

- [Troubleshooting](https://docs.dataddo.com/docs/troubleshooting)
- [Extraction Logs](https://docs.dataddo.com/docs/extraction-logs)
- [Data Duplication](https://docs.dataddo.com/docs/data-duplication)

Multi-account extraction (MAE) enables simultaneous data extraction from multiple e.g. Facebook accounts within a single source setup. This ensures consistent configuration of your data sources across all accounts.

Authorizers act as credentials for external services (e.g. Facebook or Google). To enable Dataddo to access and retrieve your data, you need to grant access to accounts that possess admin-level permissions or higher within these services.

Upsert inserts new rows and updates existing ones in the destination. By ensuring that the data in the table is updated if a matching record exists, or a new one is inserted, upsert prevents data duplication.

A source is a collection of data from an authorized service that's been connected via a Dataddo connector. Data within the source is automatically refreshed based on the source's configuration.

A data type, specified within a data source’s schema, determines the kind of value that can be stored in a column for organized data management. The available data types include integer, float, date, and string.

A destination is the endpoint where the data from your sources will be loaded. Destinations include dashboarding tools, data warehouses, and other online services.
