To count the same person twice, for a frequency cap or a retarget, you need one identifier that holds still across visits. Device ID looks like the cleanest option: no login, no cookie sync, generated automatically just from using the device. None of that guarantees it shows up.
The field exists because an app-capable operating system generates an ID and hands it to whatever app is running. A browser tab never gets one, on any operating system, phone or desktop. iOS calls it IDFA, Android calls it GAID, and CTV has five more names for the same idea: Roku’s RIDA, Samsung’s TIFA, Amazon Fire TV’s AFAI, Vizio’s VIDA, LG’s LGUDID. Windows has one too, assigned to every Windows 10 and 11 install for apps bought through the Microsoft Store, and it stays invisible to a browser tab open on that same machine.
Inside an app that can generate the ID, two things still take it away. A user can decline tracking, and the field comes back as a defined placeholder: a string of all zeros, the exact same value on every device that declined. Apple started it on IDFA, Android matched it on GAID in 2022. It looks like an ID but means nothing, and it’s the same nothing for millions of people at once. A user can also reset it from settings, any time, with no notice to anyone who was counting on it.
CTV works the same way, and adds two more problems. The ID exists at the platform level, but five unrelated names with no shared standard means a cross-device campaign is stitching together five different systems, not one. And even when the platform hands over a real ID, the ad often doesn’t reach the viewer directly. Server-side ad insertion splices it into the stream on the publisher’s own infrastructure, so the device ID has to be carried through that step by hand.
OpenRTB used to name the platform that issued the ID: idfa, aaid, rida, afai. That field is deprecated now. The replacement names how the ID was generated instead: by the device, by the publisher, or as a short-lived session value meant to be thrown away. That’s what tells you whether an ID holds still. Cap on device ID and you’re only capping the slice of traffic that carries one, never all of it: a browser tab, an opt-out, a reset, or a stitching step can each leave the field empty.
The same Device ID goes by eight different names depending on the platform




