The short answer

Four distinct levels of website tracking evidence: found in public HTML, configured in live GTM, observed firing in a browser, and received by the destination.

To check website tracking properly, collect four different kinds of evidence:

  1. Found in public HTML: the page contains a GTM container ID, Google tag, GA4 measurement ID, Google Ads conversion ID, consent clue, or conversion-point markup.

  2. Configured in the live GTM container: the published container contains the expected tag, trigger, variables, identifiers, and blocking conditions.

  3. Observed in a browser: the tag fires – or is correctly blocked – during the intended page load, click, form submission, booking, or purchase journey.

  4. Received by the destination: GA4, Google Ads, or another platform records the expected event and parameters.

Each layer answers a different question. A static scan can discover IDs and suspicious coverage gaps quickly. A GTM inventory explains what the live container is configured to do. Tag Assistant and GA4 DebugView provide runtime evidence. None of those layers should impersonate the others.

The useful output is not a list of scripts. It is a page-by-page evidence matrix and a prioritized queue of checks.

What “tracking is installed” can mean

Teams often use “installed” for four states that are not equivalent.

Evidence state

What it establishes

What it does not establish

Identifier or loader found in HTML

A tracking-related reference was served in the page response

That JavaScript executed, consent allowed it, or an event was sent

Tag found in live GTM configuration

The published container includes the tag and its wiring

That the container loaded on this page or the trigger conditions occurred

Tag observed in Tag Assistant

The browser evaluated the container and shows firing behavior for that test

That every user, device, consent state, or journey behaves identically

Event visible in a destination

The platform received data for the tested event

That naming, parameters, deduplication, attribution, and business meaning are correct

That distinction prevents two common mistakes: declaring tracking healthy because an ID exists, or declaring tracking absent because a static fetch could not see JavaScript-rendered or consent-gated code.

Start with a measurement map, not a crawler

Before scanning, define the website journeys that matter. A B2B site may need the homepage, pricing, demo request, contact, booking, and thank-you pages. Ecommerce may need category, product, cart, checkout, and confirmation pages.

For each journey, record:

  • the business outcome

  • the page or interaction where it occurs

  • the expected platform destination

  • the expected identifier, event name, or conversion action when known

  • the consent state that should allow or block collection

  • the human owner who can validate the result

This becomes the expectation column in the audit. Without it, AI can tell you what it found but not whether the implementation covers the business.

Include confirmation pages explicitly when they are not linked from the public site. Do not submit real customer information during testing. Use approved test details and a test environment where the journey changes production data, inventory, or bookings.

A reliable website tracking audit workflow

1. Select representative pages

Start with the base URL and a small set of high-value journeys. A useful first pass usually includes:

  • homepage

  • pricing or product page

  • contact or demo page

  • form or booking page

  • checkout page where applicable

  • confirmation or thank-you page

Do not crawl hundreds of pages before understanding the signal. Coverage patterns across a few representative pages often reveal inconsistent container IDs, missing loaders, broken redirects, or pages that need browser testing.

2. Scan the publicly served HTML

Ask the AI to scan public pages for tracking and conversion-point signals. Capture each page’s requested URL, final URL after redirects, HTTP status, and any page-level error.

Useful discovery signals include:

  • GTM container IDs and install-loader clues

  • GA4 measurement IDs and Google Ads conversion IDs

  • legacy Universal Analytics IDs

  • the Google tag loader

  • forms, telephone links, email links, and embedded frames

  • recognizable form and booking providers

  • consent-management signals

  • JavaScript-framework clues

Keep the raw page-level findings. A cross-page summary is helpful, but it can hide the exact URL where a different container appeared.

3. Compare coverage across pages

Create one row per page and one column per expected signal. Then flag:

  • no GTM ID on an important page

  • multiple GTM IDs across the site

  • the same container appearing more than once in executable loader positions

  • a GA4 or Google Ads ID that changes between comparable pages

  • legacy Analytics identifiers that still appear

  • forms or booking widgets without an obvious measurement path

  • redirects that move the visitor to another domain or page family

  • failed or blocked page fetches

Treat duplicate and inconsistency flags as review candidates. Themes, consent tools, server-side rendering, embedded applications, serialized code, and intentional multi-container designs can produce confusing evidence. Inspect before removing anything.

4. Downgrade confidence when static evidence is incomplete

A static HTML scan does not run the page. It cannot wait for a consent choice, execute client-side JavaScript, click a button, submit a form, complete a booking, or trigger a single-page-application route change.

If the scan detects a JavaScript framework, embedded application, consent manager, login boundary, or interaction-based conversion, mark negative findings as inconclusive. “Not found in the initial response” is the accurate statement. “Tracking is missing” is not.

Also remember that direct gtag.js implementations may not use GTM at all. The absence of a GTM-* identifier does not prove the site is unmeasured.

5. Resolve the container and inspect the live configuration

When the public scan finds a GTM ID, resolve it to the accessible account and internal container. Then inspect the live published inventory – not an arbitrary workspace – when the question is what production visitors should receive.

Review:

  • Google tags, GA4 event tags, and Google Ads conversion or remarketing tags

  • tag identifiers, event names, and conversion labels

  • firing and blocking triggers

  • trigger conditions

  • paused state

  • variables that supply URLs, selectors, values, IDs, or event parameters

  • folders and naming patterns that help establish ownership

A workspace may contain unpublished changes. Inspect it only when reviewing work in progress, and label it as unpublished. Do not describe workspace inventory as the production setup.

6. Reconcile the website evidence with GTM wiring

Compare what the public pages served with what the live container contains.

Pattern

Plausible explanations

Next check

GTM ID appears across pages and the live inventory contains expected tags

Basic installation and configuration evidence exists

Run the real journeys in Preview mode

GTM ID is absent on one important page

Separate application, template gap, consent gating, blocked fetch, or missing snippet

Open the page in a browser and inspect the network and DOM

Website ID differs from the intended live container

Old deployment, separate property, environment mix-up, or intentional multi-container setup

Confirm ownership and deployment before editing GTM

Tag exists in GTM but no public container loader is found

Static-scan limitation, consent or JavaScript loading, or missing deployment

Test page load in Tag Assistant and browser developer tools

Form exists but no matching tag or trigger is visible

Measurement may be direct-coded, server-side, embedded, or absent

Submit an approved test and inspect runtime events

Duplicate installation is suspected

Theme/plugin duplication, repeated loader, or false-positive source reference

Count executable loaders and verify firing order before removing code

Legacy Universal Analytics ID appears

Old code, plugin, or migration residue

Confirm whether it sends requests; remove only after dependency review

This step narrows the runtime test. Instead of “check the whole site,” the analyst can test one page, one trigger, one consent state, and one destination.

Decision tree routing a tracking signal from static HTML detection through JavaScript and consent checks, live GTM configuration, Tag Assistant firing, and destination receipt.

7. Validate the critical journeys in a browser

Use GTM Preview mode and Tag Assistant for the important paths. Google’s debug interface shows which tags fired, which did not, their order, trigger decisions, and the data processed during the session.

For each journey, record:

  • page and device

  • consent state

  • action performed

  • expected tag and event

  • observed firing or blocking status

  • important parameters and values

  • duplicate firing

  • destination receipt

For GA4, use DebugView to confirm that the test device’s events and parameters arrive. A tag marked “fired” in Tag Assistant is valuable evidence, but destination receipt closes another gap in the chain.

Test more than the happy path when the implementation depends on consent or redirects. At minimum, check the relevant accepted and denied consent states, mobile and desktop where behavior differs, and the final confirmation step.

8. Produce an evidence-based action queue

Classify each issue by evidence strength and risk:

  • Confirmed: directly observed in the relevant layer

  • Likely: several signals agree, but runtime or destination evidence is missing

  • Inconclusive: the method cannot see the required behavior

  • Expected: the tag is correctly absent or blocked for the tested state

Prioritize high-value journeys, broken destination receipt, missing sitewide base tags, inconsistent production containers, duplicate conversions, and privacy-sensitive consent behavior. Put naming cleanup and organizational debt below revenue or compliance risk unless they are causing errors.

Every action should include the affected page or journey, evidence, next test or proposed repair, owner, and review gate. Do not let AI publish a GTM change merely because a pattern looks suspicious.

The exact prompt

Copyable prompt

Audit the tracking installed on my public website. Start with [BASE_URL]. Do not change Google Tag Manager or the website.

1. Discover and scan up to six representative public pages, prioritizing the homepage, pricing or product, contact or demo, booking or form, checkout, and confirmation pages. Force-include these known pages: [ADDITIONAL_URLS].
2. For every page, show the requested URL, final URL, HTTP status, page-level errors, GTM container IDs and loader signals, GA4 measurement IDs, Google Ads conversion IDs, legacy Universal Analytics IDs, Google tag clues, forms, telephone and email links, embedded frames, recognized form or booking providers, consent signals, and JavaScript-framework clues.
3. Produce a page-by-page coverage matrix. Flag inconsistent identifiers, suspected duplicate GTM installation, failed pages, redirects, and important conversion points that need deeper review. Treat every flag as a review candidate, not a confirmed defect.
4. Explicitly label static-scan limitations. If JavaScript, consent, login, an embedded application, or an interaction may hide a signal, say “not visible in static HTML” rather than “missing.”
5. If a GTM ID is found and I have access, resolve it to the matching account and container. Inspect the live published container inventory. Keep workspace configuration separate and label it unpublished if I ask for it later.
6. Compare the website evidence with the live GTM tags, firing and blocking triggers, important conditions, variables, identifiers, event names, labels, paused state, and folders.
7. For each business journey, classify the evidence as found in public HTML, configured in live GTM, observed firing, received by the destination, or still unverified. Do not infer later layers from an earlier one.
8. End with a prioritized browser-QA plan for Tag Assistant and the relevant destination debug view. Include page, device, consent state, action, expected tag or event, parameters, and pass condition.
9. Produce a final action queue with confidence, business risk, owner, and human review gate. Do not create, edit, version, or publish anything.

How HireOtto helps with this audit

HireOtto can scan public website HTML without requiring a GTM platform connection. It starts from the supplied site, uses sitemap discovery when possible, falls back to homepage links, and prioritizes likely conversion pages. The default is six pages, with a maximum of ten; you can force-include known pages such as an unlinked thank-you URL.

The scan can surface GTM, GA4, Google Ads, and legacy Analytics identifiers; forms, phone and email links; embedded providers; consent and JavaScript-framework clues; redirects; page errors; inconsistent IDs; and suspected duplicate installations.

When you connect the read-only GTM server, HireOtto can resolve an accessible public container ID, inspect the live or selected workspace inventory, join tags with firing and blocking triggers, and export the wiring. That makes it practical to compare what the site served with what the container is configured to do.

HireOtto cannot execute the page, choose consent, click or submit elements, prove runtime firing, confirm destination receipt, edit GTM, create a version, or publish. A practitioner must validate critical journeys in Tag Assistant and destination tools, decide whether an apparent inconsistency is intentional, and approve every repair.

Use the GTM tools reference for the website-scan inputs and limits, the container inventory guide for live-versus-workspace review, and the GTM quickstart for connection steps. To add HireOtto to a new AI client, follow Connect a HireOtto server.

What the final audit should look like

The audit should preserve the evidence chain instead of collapsing it into “working” or “broken.”

Field

Required output

Journey

Page, device, consent state, action, and business outcome

Public-page evidence

Served identifiers, loader clues, form or booking signals, redirects, and scan limitations

GTM evidence

Live tag, trigger, blocking condition, important variables, and source context

Runtime evidence

Tag Assistant firing or blocking result and relevant parameters

Destination evidence

Received event, timestamp, parameters, and any processing caveat

Conclusion

Confirmed, likely, inconclusive, or expected

Next action

Owner, priority, exact test or repair, and approval gate

That format is useful to the PPC operator, analytics owner, developer, and privacy reviewer. Each person sees the same journey without treating a source-code clue as a completed implementation.

Common mistakes

Checking only the homepage

The homepage may use a different template from checkout, booking, authentication, or embedded applications. Include the pages where business outcomes actually happen.

Treating View Source as runtime truth

View Source shows the initial response. Modern sites can add tags, forms, and routes after JavaScript executes. Consent may also change what loads. Use static evidence to choose browser tests.

Inspecting a workspace and calling it live

Workspaces contain unpublished configuration. Use the published container for production-state questions and preserve the source label in every conclusion.

Removing a suspected duplicate immediately

A repeated identifier in HTML can come from serialized source, a plugin, a theme, a real duplicate loader, or an intentional setup. Confirm executable loaders and firing behavior first.

Proving firing but not receipt

Tag Assistant can show that a tag fired. Confirm that the destination received the correct event and parameters, especially for conversions that affect reporting or bidding.

Frequently asked questions

Can AI tell whether a website has Google Analytics?

It can detect common GA4 or Google tag identifiers in accessible public HTML and inspect related GTM configuration. A negative static result is inconclusive when the site loads tracking through JavaScript, consent, an embedded application, authentication, or server-side measurement.

Can the scan prove that a conversion tag fires?

No. A static scan does not execute the interaction. Use GTM Preview mode and Tag Assistant to observe the trigger decision, then confirm receipt in the destination.

Does the website scan require Google Tag Manager access?

No GTM authorization is needed to read publicly served HTML. A connected HireOtto server and eligible access are still required. GTM access is needed when you want to resolve an accessible container or inspect its configuration.

What if the site does not use GTM?

Direct Google tag installations and other tag managers are possible. Inventory the identifiers and network requests that exist, then adapt the runtime validation. Do not interpret “no GTM ID” as “no tracking.”

Should every page have the same tracking identifiers?

Often, a sitewide base implementation should be consistent. But multiple applications, domains, regional properties, consent requirements, and intentionally separate containers can make variation legitimate. Verify the measurement design before standardizing it.

About Me

I’m Suyash – badminton junkie, ex‑GroupM ad‑ops grunt, first marketer at a B2B SaaS startup, and creator of Hiretto: MCP servers for performance marketers.

My mission: less clicking, more thinking.

Let’s build leverage together.

Reply

Avatar

or to participate