GoogleAds conversion - multiple network requests - what for?
When I implement a GoogleAds conversion event I recognize multiple network requests to various domains. Can someone explain what (and why) is happening here?
I got the idea of providing information about a certain event to a specific endpoint (or monitoring system -> GoogleAds) but I do not understand the different purposes of these multiple requests.
Code Example
var script = document.createElement('script'); script.src = "https://www.googletagmanager.com/gtag/js?id=AW-XYZ"; document.querySelector("head").appendChild(script); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-XYZ'); gtag('event', 'conversion', { 'send_to': 'AW-XYZ/abc123', 'transaction_id': '123456789' });
Network Requests
Domain: googletagmanager.com/gtag/js?id=AW-XYZ Status: 200 Type: Script
Domain: googleads.g.doubleclick.net/pagead/... Status: 200 Type: script
Domain: googleadservices.com/pagead/... Status: 200 Type: script
Domain: googleads.g.doubleclick.net/pagead/... Status: 302 Type: gif
Domain: google.com/pagead/... Status: 302 Type: gif
Domain: google.de/pagead/... Status: 302 Type: gif
Inits download of gtag core library from https://www.googletagmanager.com/gtag/js?id=AW-XYZ
gtag('config', 'AW-XYZ');Init gtag's tracker.
Next, you track conversion:
gtag('event', 'conversion', { 'send_to': 'AW-XYZ/abc123', 'transaction_id': '123456789' });JavaScript for conversions is downloaded:
https://www.google.com/pagead/conversion_async.jsIt makes first tracking request.
This goes into https://www.google.com/**pagead/1p-conversion**/XYZ/
Cookie is dropped:
SIDCC=AJi4QfEKDZ05LwN4g23OLyoW…in=.google.com; priority=high Permanent Cookies SIDCC AJi4QfEKDZ05LwN4g23OLyoW017 Expires Fri, 02-Jul-2021 10:46:18 GMT Domain .google.com Path / Other attributes priority highThen Doubleclick (in this case a DMP platform) is contacted.
https://googleads.g.doubleclick.net/**pagead/viewthroughconversion**/XYZ/
It also contains small JavaScript that makes doubleclick request.
(function() { var s = {}; (function() { /* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ var c = this || self; var f = /#|$/; function l(d) { var g = d.search(f), a; a: { for (a = 0; 0 <= (a = d.indexOf("fmt", a)) && a < g;) { var b = d.charCodeAt(a - 1); if (38 == b || 63 == b) if (b = d.charCodeAt(a + 3), !b || 61 == b || 38 == b || 35 == b) break a; a += 4 } a = -1 } if (0 > a) return null; b = d.indexOf("&", a); if (0 > b || b > g) b = g; a += 4; return decodeURIComponent(d.substr(a, b - a).replace(/\+/g, " ")) }; function n(d, g, a) { function b() { --p; if (0 >= p) { var e; (e = d.GooglebQhCsO) || (e = {}); var q = e[g]; q && (delete e[g], (e = q[0]) && e.call && e()) } } for (var p = a.length + 1, m = 0; m < a.length; m++) { var h = l(a[m]), k = null; 1 != h && 2 != h || !(h = d.document.getElementById("goog_conv_iframe")) || h.src || (k = h); k || (k = new Image); k.onload = b; k.src = a[m] } b() } var r = ["ss_"], t = s || c; r[0] in t || "undefined" == typeof t.execScript || t.execScript("var " + r[0]); for (var u; r.length && (u = r.shift());) r.length || void 0 === n ? t[u] && t[u] !== Object.prototype[u] ? t = t[u] : t = t[u] = {} : t[u] = n; }).call(this);; s.ss_(window, 'OjE1OTM2ODY3Nzg2Mjc', ['https://www.google.com/pagead/1p-user-list/XYZ/?random\x3d1593686778627\x26cv\x3d9\x26fst\x3d1593684000000\x26num\x3d1\x26bg\x3dffffff\x26guid\x3dON\x26u_h\x3d920\x26u_w\x3d1472\x26u_ah\x3d920\x26u_aw\x3d1472\x26u_cd\x3d24\x26u_his\x3d3\x26u_tz\x3d120\x26u_java\x3dfalse\x26u_nplug\x3d0\x26u_nmime\x3d0\x26gtm\x3d2oa6o0\x26sendb\x3d1\x26data\x3devent%3Dgtag.config\x26frm\x3d0\x26url\x3dhttps%3A%2F%2Fwww.optimics.cz%2F\x26tiba\x3dOptimics%20%7C%20Chytr%C3%BD%20online%20marketing%20d%C3%ADky%20analytice\x26async\x3d1\x26fmt\x3d3\x26is_vtc\x3d1\x26random\x3d2253878667\x26resp\x3dGooglemKTybQhCsO\x26rmt_tld\x3d0\x26ipr\x3dy', 'https://www.google.cz/pagead/1p-user-list/XYZ/?random\x3d1593686778627\x26cv\x3d9\x26fst\x3d1593684000000\x26num\x3d1\x26bg\x3dffffff\x26guid\x3dON\x26u_h\x3d920\x26u_w\x3d1472\x26u_ah\x3d920\x26u_aw\x3d1472\x26u_cd\x3d24\x26u_his\x3d3\x26u_tz\x3d120\x26u_java\x3dfalse\x26u_nplug\x3d0\x26u_nmime\x3d0\x26gtm\x3d2oa6o0\x26sendb\x3d1\x26data\x3devent%3Dgtag.config\x26frm\x3d0\x26url\x3dhttps%3A%2F%2Fwww.optimics.cz%2F\x26tiba\x3dOptimics%20%7C%20Chytr%C3%BD%20online%20marketing%20d%C3%ADky%20analytice\x26async\x3d1\x26fmt\x3d3\x26is_vtc\x3d1\x26random\x3d2253878667\x26resp\x3dGooglemKTybQhCsO\x26rmt_tld\x3d1\x26ipr\x3dy']); })();302 Redirect following this request was in my case unsuccessfull HTTP2 handshake request. With http2_handshake_failed base64 encoded information.
Then you are requesting global Google user list:
https://www.google.com/**pagead/1p-user-list**/XYZ/
And local user list:
https://www.google.de/**pagead/1p-user-list**/XYZ/
User lists
Documentation
UserList object is a list of users an account may target.
And pixel request setting test_cookie checking your privacy options.
This cookies represent your Google's Ad Settings.
https://googleads.g.doubleclick.net/**pagead/viewthroughconversion**/XYZ/
Permanent Cookies test_cookie CheckForPermission Expires Thu, 02-Jul-2020 11:01:19 GMT Domain .doubleclick.net Path / Secure true Other attributes SameSite noneIf you are interested more in Google's cookies, follow this link https://www.gresearch.co.uk/cookie-policy/
thank you! can you elaborate a little bit about the purpose of those requests? why is doubleclick contacted in case of a simple GoogleAds conversion, what about those different "user lists" and why is Google checking my privacy options here?
@funkfux Hi, Doubleclick is Google's network providing most of services for ad business. It runs multiple products such as Doubleclick, AdWords, Demographic reports in Analytics, etc... User Lists are list of targetable users and Privacy options are related to Ad Settings. I add both into the reply.