← All postsDoes Google Analytics 4 Expose IDFA or GAID?

Does Google Analytics 4 Expose IDFA or GAID?

Carlos GarciaCarlos GarciaPublished

Does Google Analytics 4 Expose IDFA or GAID?

If you are asking this question, you are probably doing one of two things: answering a privacy review, or trying to join Analytics data to an advertising platform that works in device identifiers.

Both are reasonable. Neither is well served by Google's documentation, because the answer depends entirely on which surface of Google Analytics 4 you mean, and because Google uses the phrase "Device ID" to mean two completely different things on two different help pages.

This guide separates those surfaces, quotes the schema exactly, and is honest about the large number of questions Google's own pages simply do not answer.

What is the short answer?

No, not in the reporting interface. Nothing you can click on in Google Analytics 4 shows you a raw advertising identifier for an individual device.

The reports deal in aggregates and in pseudonymous identifiers, not in IDFAs.

There is one exception, and it is not in the interface at all. If you have the BigQuery export switched on, the export schema contains a single field for the advertising identifier.

It sits in the device record, and Google's description of it is four words long.

So the accurate answer to a privacy reviewer is: the product does not surface it, one data pipeline out of the product has a field for it, and whether that field holds anything in your particular property is something you have to go and look at rather than something Google tells you in advance.

Not sure what your analytics setup is actually collecting? Get a free SEO and analytics audit and see what is really being tracked.

Free audit

Where do you stand in AI search?

A manual SEO + AI search audit of your site: how ChatGPT, Gemini, Perplexity and Claude read and cite it today, and what to fix first. Report within 48 hours, no credit card.

Get my free audit

Or have it all done: AI SEO services, $999 once

Why "Device ID" means two different things here

This is the trap, and it is worth understanding before you read any Google page on the subject.

On the Analytics help page comparing reports with the BigQuery export, "Device ID" is the name of a reporting identity — one of the options for how Analytics stitches events together into users.

That page says plainly that Google Analytics 4 "only exports data based on Device ID to BigQuery," and warns that "if you have another reporting identity set in GA4, the comparison with BigQuery will be inaccurate."

The reporting identity sense

In that sense, a Device ID is an internal, pseudonymous stitching key. It is not an IDFA and it is not a GAID.

The same page is explicit that your choice of reporting identity "does not affect data collection or processing" — it changes how existing data is assembled for reporting, nothing more.

The advertising identifier sense

On the Google Ads side, "Mobile Device IDs" means something entirely different: the real advertising identifiers themselves.

That page spells out the acronyms, describing segments built from "AAIDs (Android Advertising IDs) and IDFAs (Identifier For Advertisers)."

So one Google product uses "Device ID" for a pseudonymous reporting key and another uses it for the advertising identifier.

If you search Google's documentation for the phrase and read whichever page comes back first, you can easily end up confidently wrong.

The Google Ads page makes the collision worse rather than better, because it tells you that you "can export the Device ID using Big Query to escalate the process" and links that advice to the BigQuery export schema article.

Read in isolation, that sentence reads like confirmation that the export hands you advertising identifiers on request. It does not say which schema field it means, and the field it would have to mean is the four-word one covered in the next section.

The one field that actually holds it

The GA4 BigQuery export schema does contain the advertising identifier. The field is device.advertising_id, its type is STRING, and Google's entire description of it reads: "Advertising ID/IDFA."

That is the whole definition. There is no expanded explanation anywhere on the page.

It sits inside the device record, which the schema introduces as containing "information about the device from which the event originated." Two neighbouring fields in the same record are more informative than the field itself:

  • device.vendor_id, a STRING, described as "IDFV (present only if IDFA is not collected)."
  • device.is_limited_ad_tracking, a BOOLEAN, described as "The device's Limit Ad Tracking setting," followed by the note "On iOS14+, returns false if the IDFA is non-zero."

Those two descriptions tell you more about when an IDFA is present than the IDFA field's own description does.

The vendor ID note implies that IDFA collection is conditional, since IDFV is populated only in its absence. The limited-ad-tracking note implies that a zero IDFA is a real state the pipeline expects.

Running analytics across a site and an app? Request a free technical audit and get a clear picture of both.

Note also what the schema does not say. It never uses the terms GAID or AAID. "Advertising ID/IDFA" is the only wording, so on the strength of that page you cannot claim the export delivers a Google Advertising ID by name, even though Android devices plainly have one.

How to check your own export, step by step

Because Google does not publish the conditions under which the field is populated, checking your own data is the only reliable method.

  1. Confirm the BigQuery export is linked at all. In Google Analytics, open Admin, then Product links, then BigQuery links. No link means no device.advertising_id anywhere, because the reporting interface never exposes it.
  2. Confirm you have an app data stream. The advertising identifier is a mobile operating system concept. A property with only a web stream has no plausible source for one.
  3. In BigQuery, inspect the schema of your events table and look for advertising_id inside the device record. If your export predates the field, it will not be there.
  4. Count how often it is actually populated rather than assuming. Compare the number of rows where the field is non-null and non-empty against your total row count for the same window, split by device.operating_system.
  5. Check device.is_limited_ad_tracking and device.vendor_id over the same window. A high rate of populated vendor IDs alongside empty advertising IDs is the signature the schema's own wording predicts.

Step four is the one people skip. The presence of a column in a schema is not evidence that the column contains data, and in this specific case Google has published no statement about when it will.

What the reports give you instead

The identifier the reporting side runs on is user_pseudo_id, which the export schema describes as "the pseudonymous id (e.g., app instance ID) for the user." That is the value Analytics treats as a user, and it is deliberately not an advertising identifier.

If you need demographic or interest data rather than an identifier, that path exists and it does depend on the advertising identifier underneath.

Google states that without the device advertising ID present, Analytics cannot derive demographics and interest data, and that iOS apps must collect the IDFA for age, gender and interests to be derived automatically.

That is a useful piece of logic to hold onto, because it works in reverse as a diagnostic.

If your app's demographic reporting is thin or empty, limited IDFA availability is a leading candidate for why, and the cause sits in consent rather than in your Analytics configuration.

Wondering whether your reporting gaps are a tracking problem or a content problem? Get a free audit and find out which.

What Google does not document

This section exists because the absences here are unusually large, and knowing they are absences is more useful than guessing.

The schema never states whether device.advertising_id is populated on iOS, on Android, or on both.

It never states whether the field depends on consent mode or on App Tracking Transparency; the consent-related language on that page is attached to the separate privacy_info fields as a group, not to the advertising ID. It never states whether the field can ever be populated for a web stream.

The companion user-data export schema, which covers the user-level tables rather than the event tables, contains no advertising identifier field at all.

Its device section lists only the operating system, device category, brand name, model name and screen name.

None of the four Google pages behind this article displays a last-updated date in its text.

For a subject where the platform rules have changed repeatedly, that is worth noting before you treat any of it as settled.

How this differs from Google Ads device ID segments

It is worth separating this question from the adjacent one, because people often arrive here while trying to do something Google Ads handles rather than something Analytics does.

Google Ads documents building audience segments by uploading mobile device IDs directly.

Its page is written in the present tense as live instructions, telling you to "select Upload Mobile Device IDs," and describing segments built from them as a way to "re-engage with customers." It carries no withdrawal notice and no date, so the honest description is that it is documented as current on that page rather than confirmed current.

Two constraints on that page matter. The identifiers must be ones "you collected from your customers with their consent." And they are quarantined from everything else: "Mobile Device IDs cannot be combined with any other type of customer data (email addresses, phone numbers, zip codes, etc)."

So the Ads side is an upload path you supply, with its own consent obligation.

It is not Analytics handing you identifiers, and conflating the two is how privacy reviews end up describing a data flow that does not exist.

The practical distinction to write down is the direction of travel. In the Ads case the identifiers start with you and you push them to Google.

In the Analytics case there is a field that Google may populate from the device, with no documented rule for when, and no interface anywhere in the product that will show you the value.

Need this written up properly for a privacy review? Start with a free audit and get the data flows documented.

Final thoughts

The short version worth repeating to anyone who asks: Google Analytics 4 does not show you an IDFA or a GAID, the BigQuery export has one four-word field that may hold one, and Google publishes no rule for when it does.

That makes this a question you answer with a query against your own export rather than with a citation.

Run the population counts in step four before you write anything down, because the schema tells you the field exists and nothing more.

If you are chasing this because your demographic reporting looks incomplete, the related question of what GA4 will and will not show you for a specific URL covers the reporting-side constraints in detail, including the consent conditions that gate demographics in the first place.

Want this done for you?

SEO Stuff gets businesses cited by ChatGPT, Gemini, Perplexity and Claude, and ranking in Google. Start with the free audit, a call, or the package.

See where you stand

A free, manual SEO + AI search audit of your site, with a report within 48 hours. No credit card, no sales call.

Get my free audit

Talk it through

A free 15-minute call with the founder about whether AI search is a meaningful opportunity for your business.

Free strategy call

Have it done

The Done-For-You Package: audit, 10 pages of content, 3 DR50+ placements, dashboard. $999 once, delivered in 21 business days.

See the package