This document describes Ads Data Hub product and policy changes related to EEA
user consent requirements. It is intended for all users of Ads Data Hub.

## What's changing?

Ads Data Hub includes the following requirements and schema updates:

- A new attestation to indicate that you have obtained consent for data uploaded into Ads Data Hub
- New policy-isolated tables that split data out by Google services, and
- Updated templates to help you write queries that comply with our [EU user
  consent policy](https://www.google.com/about/company/user-consent-policy/)

## Why is Google making these changes?

As a part of Google's ongoing commitment to a privacy-centric digital
advertising ecosystem, we are strengthening the enforcement of our [EU user
consent policy](https://www.google.com/about/company/user-consent-policy/).

## What do I need to do?

**All customers:**

- Beginning January 16, 2024, all Ads Data Hub customers, irrespective of region, will need to **attest that appropriate consent has been obtained
  pursuant to the [Ads Data Hub policies](https://developers.google.com/ads-data-hub/resources/policies.md.txt), complying with
  the [EU user consent policy](https://www.google.com/about/company/user-consent-policy/) and the Ads Data Hub
  policies, where applicable, for any first-party data uploaded to Ads Data
  Hub by March 2024**.
- Failure to do so could impact ability to use advanced measurement, ad personalization, and remarketing features.

**Customers with EEA data:**

- All EEA data is split by Google service into policy-isolated tables.
- Queries that don't use policy-isolated tables don't return EEA traffic, and you cannot combine EEA data between Google services tables or across non-EEA and EEA tables.

To learn more about these changes, and what actions you should take, read the
following sections.

## Learn key terms

**Google service:** A product or a service, such as online advertising services,
online search engines, and video-sharing platform services. Examples of Google
services are Ads, Search, and YouTube.
[Learn more about Google services](https://business.safety.google/privacy/).

**European Economic Area (EEA):** The [European Economic Area](https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Glossary:European_Economic_Area_(EEA))
consists of the member states of the European Union (EU) and three countries of
the European Free Trade Association (EFTA)---Iceland, Liechtenstein and Norway.

**First-party data (1PD):** First-party data is information you collected from
your websites, apps, physical stores, or other situations where customers shared
their information directly with you. To learn more, see
[Customer data](https://developers.google.com/ads-data-hub/resources/policies.md.txt#customer-data) in the
Policies page.

## Understand important dates

**January 16, 2024** Product changes begin to go into effect.

- All customers, irrespective of region, may begin to attest that appropriate consent has been obtained, complying with the [EU user consent policy](https://www.google.com/about/company/user-consent-policy/) and [Ads Data Hub
  policies](https://developers.google.com/ads-data-hub/resources/policies) where applicable, for any personal data uploaded to Ads Data Hub. This acknowledgment must be completed by March 2024. [Learn how to acknowledge consent](https://developers.google.com/ads-data-hub/resources/consent-requirements.md.txt#consent-ack).
  - Errors will be present in the UI and API for disallowed cross-service combinations. [Learn about changes to cross-service
    combinations](https://developers.google.com/ads-data-hub/resources/consent-requirements#cross-service-queries).
  - Ads Data Hub will dual-write EEA data in both the policy-isolated tables and the non-isolated tables. This lets you begin migrating your queries ahead of the cutoff date. [Learn how to migrate your queries to use the
    new tables](https://developers.google.com/ads-data-hub/resources/consent-requirements#update-queries).

**March 2024** Product changes go into full effect.

- All customers, irrespective of region, must attest that appropriate consent has been obtained, complying with the [EU user consent policy](https://www.google.com/about/company/user-consent-policy/) where applicable, for any personal data uploaded to Ads Data Hub. Failure to acknowledge consent or refusing consent acknowledgment results in the inability to use your first-party data (1PD) within Ads Data Hub. For example, you cannot bring in new 1PD or join existing 1PD with your linked ads data. All use cases, such as user-provided data matching and audience activation using 1PD, are unavailable. This includes any scheduled 1PD imports.
- Ads Data Hub will stop dual-writing EEA data, using only the per-service tables going forward. See the section called [Schema changes](https://developers.google.com/ads-data-hub/resources/consent-requirements.md.txt#schema-changes).
  - Saved queries using the old tables will no longer represent EEA traffic. Existing queries using the tables will continue to measure any non-EEA traffic.
  - For any EEA data, you won't be able to join between Google Services tables, such as Ads and YouTube.
  - You won't be able to join non-EEA tables with EEA tables.

## Complete the user consent acknowledgment

> [!WARNING]
> **Warning:** Failure to acknowledge consent or refusing consent acknowledgment results in the inability to use your first-party data (1PD) within Ads Data Hub. For example, you cannot bring in new 1PD or join existing 1PD with your linked ads data. All use cases, such as user-provided data matching and audience activation using 1PD, are unavailable. This includes any scheduled 1PD imports.

To ensure you are able to use your first-party data in Ads Data Hub, you must
confirm that you have obtained proper consent to share data from EEA end users
with Google per the [EU user consent policy](https://www.google.com/about/company/user-consent-policy/) and [Ads
Data Hub policy](https://developers.google.com/ads-data-hub/resources/policies). This requirement applies to each Ads Data
Hub account, and must be updated every time you upload new first-party data. Any
one user can make this acknowledgement on behalf of the entire account.

> [!IMPORTANT]
> **Important:** You must acknowledge consent for every Ads Data Hub account regardless of whether you are bringing in EEA data. Consent acknowledgment is not inherited from parent to child, so you must complete this step for each child account. This consent must be updated every time you upload new first-party data.

To acknowledge consent from the consent warning banner or the first-party data
consent dialog:

1. Click **Configure consent settings**.
2. In the slider that opens, click **Yes, consent has been obtained where
   legally required**.
3. Click **Save**.

To acknowledge consent manually or from a query validation warning:

1. In your Ads Data Hub account, go to the **Settings** page.
2. Under **First-party data use consent settings** , click **Configure consent
   settings**.
3. In the slider that opens, click **Yes, consent has been obtained where
   legally required**.
4. Click **Save**.

To view a record of consent acknowledgment changes:

1. In your Ads Data Hub account, go to the **Settings** page.
2. Click **Change history**.
3. Filter by type: **Customer settings change**.

## Schema changes

During the transition period between January 16, 2024 and
March 2024, Ads Data Hub dual-wrote EEA data in both the non-isolated
tables and the policy-isolated tables.

- Saved queries using the non-isolated tables only represent non-EEA traffic.
- To learn how to migrate your queries to use the policy-isolated tables, see [Update impacted queries](https://developers.google.com/ads-data-hub/resources/consent-requirements.md.txt#update-queries).
- You cannot combine data between any of the policy-isolated tables.
- You cannot combine non-isolated tables with policy-isolated tables.

### Schema changes for Marketers

EEA user data is split by Google service into policy-isolated tables. Non-EEA
users remain in the non-isolated tables.

The following example uses the Google Ads impressions table to show how a table
is split by Google service:

| Before March 2024 ||| Beginning March 2024 |||
|---|---|---|---|---|---|
| Users | Google service | Table | Users | Google service | Table |
| Non-EEA users EEA users | YouTube Gmail Network | google_ads_impressions | Non-EEA users | YouTube Gmail Network | google_ads_impressions |
| Non-EEA users EEA users | YouTube Gmail Network | google_ads_impressions | EEA users | YouTube | google_ads_impressions_policy_isolated_youtube |
| Non-EEA users EEA users | YouTube Gmail Network | google_ads_impressions | EEA users | Gmail | google_ads_impressions_policy_isolated_gmail |
| Non-EEA users EEA users | YouTube Gmail Network | google_ads_impressions | EEA users | Network | google_ads_impressions_policy_isolated_network |

### Schema changes for Measurement Partners

All user data is split by Google service into policy-isolated tables.

The following example uses the Google Ads impressions table to show how a table
is split by Google service:

| Before March 2024 ||| Beginning March 2024 |||
|---|---|---|---|---|---|
| Users | Google service | Table | Users | Google service | Table |
| Non-EEA users EEA users | YouTube Network | google_ads_impressions | Non-EEA users EEA users | YouTube | google_ads_impressions_youtube |
| Non-EEA users EEA users | YouTube Network | google_ads_impressions | Non-EEA users EEA users | Network | google_ads_impressions_network |

## Update impacted queries

To prevent interruption in reporting, you can update your queries to use the
policy-isolated tables before enforcement is in effect. The following example
demonstrates how to rewrite queries to be compliant with the consent requirement
policy.

Consider the following example query, which counts YouTube impressions by
platform. Before March 2024, all YouTube impressions for EEA and
non-EEA users are grouped together in the `google_ads_impressions` table.

```sql
SELECT
  CASE
    WHEN mobile_browser_class = 3 THEN 'DESKTOP'
    WHEN mobile_browser_class = 2 THEN 'MOBILE'
    WHEN mobile_browser_class = 4 THEN 'TABLET'
    WHEN mobile_browser_class IN (5, 6, 7) THEN 'CONNECTED_TV'
    ELSE 'UNKNOWN'
    END AS platform,
  COUNT(*) AS num_imp,
  COUNT(DISTINCT user_id) AS num_cookie
FROM adh.google_ads_impressions
WHERE customer_id IN UNNEST(@customer_ids)
  AND inventory_type = 'YOUTUBE'
GROUP BY platform
```

If you don't have any data from EEA users, you don't need to change your query.
It will continue to return non-EEA results. However, if your data represents any
EEA users, you will need to update or create an additional query to find EEA
impressions after March 2024.

By replacing the table with `google_ads_impressions_policy_isolated_youtube`,
the following query counts YouTube impressions for EEA end users only. Note that
when you use this table, it is no longer necessary to filter by inventory type,
so that line can be omitted from the `WHERE` clause.

```sql
SELECT
  CASE
    WHEN mobile_browser_class = 3 THEN 'DESKTOP'
    WHEN mobile_browser_class = 2 THEN 'MOBILE'
    WHEN mobile_browser_class = 4 THEN 'TABLET'
    WHEN mobile_browser_class IN (5, 6, 7) THEN 'CONNECTED_TV'
    ELSE 'UNKNOWN'
  END AS platform,
  COUNT(*) AS num_imp,
  COUNT(DISTINCT user_id) AS num_cookie
FROM adh.google_ads_impressions_policy_isolated_youtube
WHERE customer_id IN UNNEST(@customer_ids)
GROUP BY platform
```

## Unsupported use cases

> [!IMPORTANT]
> **Important:** The following sections describe use cases that are not supported using EEA user data when the consent requirement is enforced.

### Don't: Combine EEA data with non-EEA data

*Applies to: Marketers*

Queries that combine EEA data with non-EEA data show an error message in the
query editor and fail to run. For example a query combining the Google Ads
impressions table (containing non-EEA user data) with the Google Ads YouTube
impressions table (containing EEA user data) is not allowed, and fails with an
error.

```sql
-- This query results in an error
SELECT
  COUNT(*) AS num_imp,
  COUNT(DISTINCT user_id) AS num_cookie
# Non-EEA table
FROM adh.google_ads_impressions
WHERE inventory_type = 'YOUTUBE'
UNION ALL
SELECT
  COUNT(*) AS num_imp,
  COUNT(DISTINCT user_id) AS num_cookie
# EEA table
FROM adh.google_ads_impressions_policy_isolated_youtube
```

To clear the error, query the policy-isolated table separately. See [Update
impacted queries](https://developers.google.com/ads-data-hub/resources/consent-requirements#update-queries).

### Don't: Combine EEA data across multiple Google services

*Applies to: Marketers, Measurement Partners*

Queries that combine the policy-isolated tables from different Google services
show an error message in the query editor and fail to run. For example, a query
joining EEA Google Ads Gmail data with EEA Google Ads YouTube data is not
allowed, and fails with an error.

Note that you may combine policy-isolated tables *from the same Google service*
across buying doors.

Do:
`dv360_youtube_impressions_policy_isolated_youtube` +
`google_ads_impressions_policy_isolated_youtube`

Do:
`google_ads_impressions_youtube` +
`google_ads_conversions_youtube`

Don't:
`google_ads_impressions_policy_isolated_youtube` +
`google_ads_impressions_policy_isolated_gmail`

To learn more about impacts specific to Measurement Partners, see [Inventory
split migration guide](https://developers.google.com/ads-data-hub/mp/brandmeasurement/brand_measurement/inventory_split_migration_guide).