Blog  /  Measurement

I looked for the conversion tag on 40 sites. The page source found 1. It was on 20.

A client's developer told us the conversion tag was gone. He had checked the way everyone checks, and the way everyone checks does not work any more.

Dana Whitlock · Principal analyst  /  August 25, 2026  /  7 min read  /  5 sources
What this piece concludes
  • Across 40 homepages, a Google Ads conversion ID appeared in the raw HTML exactly once. A GA4 measurement ID appeared zero times.
  • Twenty of the forty exposed a Tag Manager container ID, and all twenty containers held at least one Google Ads account: 31 accounts in total.
  • Seven of those twenty run more than one Google Ads account through one container. Hotjar runs four.
  • Eleven of twenty send data to more than one GA4 property, which is the usual reason an imported conversion goes missing.
  • Five of the forty sites refused a plain request with a 403, so an audit that only reads HTML would have scored them as untagged twice over.

A developer on a client account told us the Google Ads conversion tag had been removed during a redesign. He was certain. He had opened the page, viewed the source, searched for the conversion ID and found nothing.

The tag was there. It had been firing the whole time, and the account had the conversions to prove it.

He had not made a mistake so much as used a method that stopped working around a decade ago. That bothered me enough to find out how often the method fails, so I checked forty sites the same way he had.

What I measured

Forty homepages of well known software and hosting companies, fetched on 25 August 2026 with a browser user agent, and searched for three patterns in the HTML that came back:

Then, for every container ID I found, I fetched the container itself and searched that.

Before trusting any of it I ran a control. I pointed the same patterns at a site whose GA4 ID I already knew, and the pattern found it. The regular expressions work. What follows is not a broken script.

The result

Looking at the raw HTMLSites
Google Ads conversion ID visible1 of 40
GA4 measurement ID visible0 of 40
Tag Manager container ID visible20 of 40
Refused the request with 4035 of 40

One site out of forty puts a Google Ads conversion ID in the page it serves. That site is Ahrefs, and the ID is AW-792779674.

Everybody else who advertises loads the tag some other way, and for twenty of them I could prove it, because I read the container.

Looking inside the 20 containersResult
Contained at least one Google Ads account20 of 20
Distinct Google Ads accounts in total31
Ran more than one Ads account7 of 20
Contained at least one GA4 property18 of 20
Distinct GA4 properties in total40
Ran more than one GA4 property11 of 20

Every single container held advertising tags. The method that found one site found twenty when pointed at the right file.

Why the source is blind

The HTML your server sends is not the page a visitor ends up with. Tag Manager arrives as a small snippet that does one thing: it downloads a container full of JavaScript and runs it. Everything configured inside that container, the Ads tag included, exists only after that download completes.

Viewing source shows you the moment before. It is a photograph taken with the lens cap on, and the picture is always the same.

This is not obscure. It is how Tag Manager has worked since it launched. The reason the belief survives is that nothing ever corrects it: the developer looks, sees nothing, reports the tag as missing, and no part of that chain produces an error message.

How to check properly

This is the part worth keeping, and it takes about a minute.

Step one. Find your container ID. It is in the page source, because the snippet genuinely is in the HTML. Search for GTM- and copy what follows.

Step two. Read the container. Open this in a browser, substituting your own ID:

https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXXX

That file is public. It has to be, because every visitor’s browser downloads it. You are not looking at anything privileged.

Step three. Search it for AW-. Your browser’s find function is enough. Every Google Ads account wired into that container appears there as AW- followed by nine or ten digits.

If you find your account number, the tag is installed. If you find nothing, now you have a real finding.

Step four, and this is the one people skip. Count what you found. Seven of the twenty sites I read run more than one Google Ads account through a single container. Hotjar runs four. HubSpot and Squarespace run three each. Airtable, Klaviyo, Grammarly and Hostinger run two.

There are ordinary reasons for that. An agency set up an account, then a second agency set up another. A region got its own. A brand was acquired. None of those are wrong, and all of them create the same question: which account receives the conversion you are optimising towards?

Smart Bidding uses conversion data from the account that is bidding. A conversion landing in an account nobody looks at is not a reporting inconvenience. It is a bid algorithm running on less evidence than you believe it has.

The GA4 count is worse and nobody checks it

Eighteen of the twenty containers carry GA4 properties, and between them they carry forty distinct measurement IDs. Eleven sites run more than one. Hotjar has seven. Klaviyo has five.

That matters specifically for imported conversions. Many accounts do not use a native Ads tag at all, and instead import a GA4 conversion event. The import is bound to one property. When a container feeds several, an event can be recorded perfectly and still never reach the property the import reads from.

The symptom is a conversion that exists in Analytics and does not exist in Ads. It gets blamed on attribution windows, on consent, on Google. Usually it is two IDs and one import pointing at the wrong one.

A digression that turned out to be worth a paragraph

While reading the containers I logged their size. The twenty weigh between 363 KB and 869 KB, median 657 KB, and 12.8 MB in total.

That is a lot of JavaScript to describe what should be a handful of tags. It arrives asynchronously and it is rarely the thing holding a page back, so I am not going to pretend it is an emergency. But if a landing page is struggling and the quality score is being blamed on the copy, the container is at least worth weighing before the copy gets rewritten again.

Eighteen of the twenty also load Facebook’s tag host, seventeen load LinkedIn’s, and seven carry a Floodlight ID. Almost none of that is visible in the HTML either.

The five that said no

Five of the forty returned 403 to a plain request: Canva, Freshworks, GoDaddy, Namecheap and Bluehost. Bot protection, most likely, since all five load normally in a browser.

Worth noting because it doubles the error rate of the naive method. Those sites would have been scored as untagged not because the tag was hidden, but because nothing was read at all. If a third-party tool has ever told you your competitor runs no advertising tags, this is one of the reasons to disbelieve it.

The thing I could not work out

Hotjar’s container carries four Google Ads accounts and seven GA4 properties. I read it twice to be sure.

There is probably a sensible history behind that, and somebody inside the company can almost certainly explain it in a sentence. What I cannot tell from the outside, and what an internal auditor would have exactly as much trouble telling, is which of the four accounts is the one currently making bidding decisions.

That is the question to walk into your own container with.

Questions people ask about this

Why can I not see my conversion tag when I view the page source?

Because it is almost certainly loaded by Google Tag Manager after the page renders. The HTML that arrives from the server contains the container, not the tags inside it. The container is fetched and executed by the browser a moment later.

How do I check whether the tag is really there?

Fetch your container directly at googletagmanager.com/gtm.js with your GTM ID, and search the response for AW- followed by digits. That file is public. It is the same file every visitor downloads.

Is it a problem to have several Google Ads accounts in one container?

Not by itself. Agencies, regions and legacy accounts all leave traces. It becomes a problem when nobody can say which account receives which conversion, because that is the number the bidding uses.

Does Tag Manager slow the site down?

The containers we read were between 363 KB and 869 KB of JavaScript, with a median of 657 KB. That is real weight, though it is fetched asynchronously and is rarely the first thing to fix.

My site returns 403 to scripts. Does that hurt anything?

It hurts third-party auditing tools and some crawlers. It does not affect ordinary visitors or the tags themselves, but it does mean you cannot trust an external report that scored you as untagged.

Read next
Paid media
I measured 24 pages Google ranks for landing page advice. Four of them put the form above the fold.
Auction mechanics
I simulated the auction. Winning by bid costs 80% more than winning by quality.
Before you raise another bid

Put your own numbers through the calculator. It shows what your budget burns each month on clicks that were never going to buy, and the arithmetic is printed underneath.

Open the free calculator → Open the glossary