Resettable device identifier matching

Resettable device identifiers (RDIDs) can be used for measurement and first-party data matching in Ads Data Hub. By querying against RDIDs, you can unpack in-app impressions and conversions. You can also join to first-party datasets, such as customer app transactions, to better understand the impact of media on first-party app conversions.

RDID analysis is ideal for advertisers whose first-party data comes primarily from mobile apps (such as ridesharing or mobile game companies), or deliver a large number of impressions via mobile apps (such as YouTube mobile exposures), and need to enrich their impression data by joining a first-party dataset where RDIDs are captured. Additionally, RDID matching requires a negligible amount of setup from you to get started.

Here are a few of the many use-cases RDID matching allows:

  • Enrich ad data with telemetry: By joining in-app behavior to Ads Data Hub data, you can assess the impact of ad exposures on user actions within your apps.
  • Measure YouTube performance: Since a large portion of Youtube traffic occurs in-app, RDID joins are useful in assessing the impact of Youtube campaigns on app performance.
  • Quantify the impact of branding campaigns on in-app-conversions and LTV: Join LTV data in your CRM to measure the degree to which branding campaigns increase in-app conversions and LTV.


  • For iOS events, you can only match data originating from apps on iOS 14.5+ from users who have granted permission under Apple's App Tracking Transparency framework.
  • Gmail data is not available in RDID tables.

How RDID matching works

Ads Data Hub builds RDID tables, which contain an additional device_id_md5 column. Each adh.* table that contains a user_id column will have a corresponding *_rdid table. The device_id_md5 column contains an MD5-hashed version of the RDID. Since device_id_md5 is hashed, you’ll need to hash the RDIDs in your first-party dataset using the transformation below:

UPPER(TO_HEX(MD5(UPPER(raw device id string))))

After you’ve hashed your RDID, you can join your device IDs to this column.

RDID matching query workflow

  1. Upload a first-party dataset containing RDIDs to a BigQuery dataset that your Ads Data Hub account has read-access to.
  2. Write and run a query that joins device_id_md5 with an MD5-hashed version of the RDIDs in your dataset.


Quantify the impact of branding campaigns on in-app-conversions and LTV

This query joins CRM data with a list of YouTube campaigns to measure users’ average LTV and number of in-app-conversions by campaign:

WITH crm_data as (
    UPPER(TO_HEX(MD5(UPPER(raw device_id)))) as device_id_md5, AVG(lifetime_value), SUM(iac)
  FROM 'projectname.crm_data' # first party transactions data keyed off device ID

  branding_campaigns.campaign_id, crm_data.iac, crm_data.lifetime_value
  adh.dv360_youtube_conversions_rdid AS branding_campaigns
  branding_campaigns LEFT JOIN crm_data
  ON branding_campaigns.device_id_md5 = crm_data.device_id_md5
WHERE branding_campaigns.campaign_id IN (list of branding campaigns)

Measure revenue by campaign

This query shows how to join transaction data to campaigns, allowing you to quantify revenue from conversions, sliced by Google Ads campaign ID:

WITH transactions AS (
    UPPER(TO_HEX(MD5(UPPER(raw device_id)))) as device_id_md5,
  FROM 'projectname.transactions' # first-party transactions data keyed off device ID

  SUM(transaction_amount) # first-party column for transaction amount as revenue
  adh.google_ads_conversions_rdid AS adh_conversions
  LEFT JOIN transactions ON (adh_conversions.device_id_md5 = transactions.device_id_md5)