How Google's RTB and Push Pages allow hundreds of DSPs to tie their tracking proﬁles about people together
Many “Demand Side Partners” (only ﬁve shown here)

User

Publisher

Google

DSP 1

DSP 2

DSP 3

DSP 4

DSP 5

Initial RTB auction (user is unknown)
Initial bid request process
Request page
Send page
Request ad (includes google_gid
from new/unknown user)
Send bid request (contains "google_gid")
Send bid response
Send bid response
Send bid response

DSP 1 wins RTB auction

Cookie matching
Request ad & "match tag"
Send ad & "match tag" and pixel for DSP 1(contains google_nid & google_cm & custom
DSP parameters via "google_hm")
Send adSend "match tag" & pixel (cookie) for DSP 1

Store "google_gid" user cookie (appears as "google_user_id" in future RTB auctions)

Sync cookie (contains google_gid, google_cver,the "buyer cookie", and google_hm)

Associate DSP 1's own cookie ID
with a Google ID(google_user_id and google_gid)

Pixel matching

Google selects DSPs that will receive a Google ID.
This initiates Google’s Push Page mechanism.

Send "cookie_push" redirect

Request "cookie_push" URL

Send the "match tag" & pixel for DSP 2 (contains google_gid, google_cver, google_push)

Request pixel

Store DSP 2 cookie

Send redrect after match tag request to the Google pixel with google_nid & google_push (optional: google_ula & google_hm)

Send the "match tag" & pixel for DSP 3 (contains google_gid, google_cver, google_push)
Request pixel
Store DSP 3 cookie
Send redrect after match tag request to the Google pixel with google_nid & google_push (and optional google_ula & google_hm)

DSP 2 and 3 associate their cookie ID with google_user_id/google_gid
in the Google "hosted match table" for future RTB auctions.
DSP 2 and3 areandcanboth
now given
use the same google_push ID, and can now
use it to tie their tracking proﬁles together and trade data.

Subsequent RTB auction (user is now known)
Bid request process
Request page
Send page

Send bid request (includes google_gid/google_user_id from previously identified user)(Cookie Match pretargeting allows filtering basedon whether or not a cookie match exists)

Send bid request (includes google_gid from previously
identified user & DSP "match data")

Send bid request (includes google_gid from previously identified user & DSP 2 "hosted match data")
Send bid request (includes google_gid from previously identified user & DSP 3 "hosted match data")
Send bid request (contains "google_gid")
Send bid response
Send bid response
Send bid response
Send bid response

DSP 4 wins RTB auction

Cookie matching
Request ad & "match tag" (DSP pixel)
Send ad & "match tag" (contains google_nid & google_cm & custom DSP parameters via "google_hm")"google_cm" is included only on match tags
for unknown users, otherwise "google_push" is used

Serve adSend the "match tag" & pixel (cookie) for DSP 4

Send "google_gid" cookie (appears as"google_user_id" in future RTB auctions)
Sync new user cookie (contains google_gid, google_cver, the "buyer cookie" [google_push?], and google_hm)

Associate DSP 4's own cookie ID
with a Google ID(google_user_id and google_gid)

Pixel matching

Google selects multiple DSPs
that will recieve a Google ID.

Send "cookie_push" redirect
Request "cookie_push" URL

Send "match tag" & pixel for DSP 2 (contains google_gid, google_cver, google_push)

Send "match tag" & pixel for DSP 3 (contains google_gid, google_cver, google_push)

Send "match tag" & pixel for DSP 5 (contains google_gid, google_cver, google_push)
Request pixel
Request pixel
Request pixel

Store DSP 3 cookie
Store DSP 5 cookie

Send redrect after match tag request to the Google pixel with google_nid & google_push (optional: google_ula & google_hm)

Send redrect after match tag request to the Google pixel with google_nid & google_push (and optional google_ula & google_hm)

Send redrect after match tag request to the Google pixel with google_nid & google_push (and optional google_ula & google_hm)

DSP 2, 3, and 5 associate their cookie ID with google_user_id/google_gid in the Google "hosted match table" for future RTB auctions.
DSP 2, 3, and 5 are all given the same google_push ID, and can now use it to tie their tracking proﬁles together and trade data.

Note: This is a snapshot of data proliferation within the Google RTB system and Push Page mechanism. A large number of DSPs are involved. Only ﬁve are shown here for simplicity.

Credit: Johnny Ryan and Zach Edwards, for Brave Software.

Store DSP 2 cookie