GTM Ultimate Stack
Check every GTM container against your standards
The complete guide to ODDVX Standardization Audit: check every container against built-in and custom standards for consent, GA4 configuration, naming and tag hygiene, read the findings per container, and know where each one gets fixed.
One standard, every container
Every team that manages GTM has rules. GA4 tags declare analytics consent. The Measurement ID lives in one variable, not typed into every tag. Event tags start with the same prefix. Nobody leaves a tag called Copy of test in a live container. Those rules are easy to agree and hard to keep, because nobody can check them in every container every month.
Standardization Audit is the ODDVX module that checks them. It reads every container of the brands you choose, tests each one against the standards you switch on, and names every tag, trigger and variable that doesn't conform, with the reason.
It only reads. Nothing in GTM changes when you run it, so you can run it as often as you like, on any container you can see.
This guide walks through the whole module: how a standard works, what is built in, how to run an audit and read the scorecard, how to write your own standards, and where each finding gets fixed. Each section links to a shorter guide for the job in front of you.
A standards audit fans out to six GTM containers: three pass, the others show an error, warnings or an info finding.
The one-by-one problem
Checking a standard in GTM's own interface means opening a container, opening each tag and reading its settings. Is consent declared? Is the Measurement ID a variable? Then the next tag, and the next container. A portfolio of twenty containers with forty tags each is eight hundred tags to open, for one standard.
ODDVX does the reading. You choose the standards once, and every run checks all of them in every container you pick.
| Standard | In GTM's interface | In ODDVX |
|---|---|---|
| GA4 tags declare analytics consent | Open each GA4 tag's consent settings, per container | Every GA4 tag in every container, in one run |
| No hardcoded Measurement IDs | Open each GA4 configuration and Google tag | Every literal ID listed with the tag it's in |
| Names follow the convention | Read every name, by eye | A pattern per type; every name that breaks it is listed |
| Open workspaces within GTM's limit | Open each container's workspace list | One check per container |
| Repeat next month | Do it all again | Run again, or schedule it (Premium) |
How a standard works
A standard has two halves and a severity:
- Applies to: which items it checks. Tags, triggers, variables, any of them, or the container itself, narrowed by type, by words in the name or by a name pattern. GA4 tags is three tag types: GA4 configuration, GA4 event and the Google tag.
- Must be true: what every one of those items has to satisfy. A name pattern, a consent type, a {{variable}} instead of a literal value, at least one firing trigger, or a count, such as exactly one GA4 configuration tag.
- Severity: error, warning or info, so the scorecard puts the serious findings first.
Run against a container, a standard passes when everything it applies to conforms, fails with one finding per item that doesn't, or is n/a when the container has nothing for it to check.
A four-step flow: applies to GA4 tags, must declare analytics consent, severity error, and a finding naming the item.
The built-in library
ODDVX ships 18 standards in four groups. Eleven are switched on from the start:
- Consent & privacy: a Consent Initialization trigger exists; GA4 tags declare analytics consent; ads and Floodlight tags declare ad consent.
- GA4 configuration: exactly one GA4 configuration tag; no hardcoded Measurement IDs; no Universal Analytics tags; snake_case event parameter keys (off by default).
- Naming & hygiene: no placeholder or junk names; no stray whitespace; and four naming patterns, for GA4 event tags, dataLayer triggers, Custom HTML tags and lookup tables, which need your convention first.
- Tag hygiene & structure: no document.write in Custom HTML; no tags without a firing trigger; open workspaces within GTM's limit; firing options set on purpose (off by default); required built-in variables enabled, which needs your list first.
Switch any standard on or off, edit it, or delete it. Tune the built-in standards covers each one.
A grid of the four standard groups with how many standards each holds and how many are on by default.
Running an audit
Pick the brands to audit and press Run standards audit. Every enabled standard runs against every container of those brands: there is no per-standard scope, so switch off what doesn't apply to your portfolio.
When one GTM account holds several brands, set each brand's container in ODDVX and the audit checks only that brand's container. Without it, the brand covers every container in the account.
The audit reads each container's Default Workspace: everything published, plus any unpublished edits sitting there. See Run your first standards audit.
A form with two brands ticked in one GTM account, two more locked behind Premium, and a Run standards audit button.
Reading the scorecard
Results open with one line: how many containers were checked and how many checks passed. Below it, every container has a row, worst first. A red dot means at least one error-level finding, amber means warnings or info, green means everything passed.
Open a container to see each failing standard and every finding: the item's name and the reason, such as consent not declared: analytics_storage (declares: none). The standards that fail most often across the portfolio are listed too, which is where a habit rather than a one-off shows. See Read the scorecard.
A scorecard listing containers worst first, two with error findings, one with warnings and two that pass every standard.
Your own standards
When the built-ins don't cover a house rule, add your own. Choose what it applies to, pick one of 14 checks, set the severity and a category, and save. Types come from your own containers, Community Template types included, so you never have to guess a type code. Write your own standard walks through the builder.
Free keeps one custom standard. Premium keeps any number.
A grid of the four kinds of check a standard can make and which items each applies to.
From finding to fix
The audit never changes anything. Each finding is fixed where it lives: names, junk items and tags without a trigger in Inventory & Cleanup, staged into a workspace and previewed; tag settings such as consent or a literal Measurement ID in GTM. Publish, then run the audit again. See Turn findings into fixes.
A grid routing each kind of finding to where it is fixed: Inventory & Cleanup or GTM.
Free and Premium
Every built-in standard runs on Free, against every container in one GTM account per run, and Free keeps one custom standard. Premium audits several GTM accounts in one run, keeps any number of custom standards, exports and emails the results, and runs the audit on a schedule. Compare the plans.
Two panels comparing Free and Premium for Standardization Audit.
What the module does not do
- Change anything. It only reads. Fix in Inventory & Cleanup or GTM.
- Read the published version. It reads the Default Workspace, including edits there that aren't published yet.
- Scope a standard to some brands. Every enabled standard runs against every container you pick.
- Check what a consent banner does. It checks which consent types each tag declares, not how your consent platform behaves on the page.
- Combine checks in one standard. A standard makes one check. Write two standards for a two-part rule.
A list of limits: it doesn't change anything, reads the Default Workspace, has no per-standard scope, doesn't test a consent banner and doesn't judge server or app logic.
Choose your workflow
Each guide covers one job:
| If you need to… | Read |
|---|---|
| Audit every container for the first time | Run your first standards audit |
| Understand pass, fail, n/a and severity | Read the scorecard |
| Decide which built-in standards to use | Tune the built-in standards |
| Turn a house rule into a standard | Write your own standard |
| Check consent settings on every GA4 and ads tag | Check consent on every tag |
| Check every container's GA4 setup | Check GA4 configuration |
| Hold a naming convention across brands | Enforce a naming convention |
| Fix what the audit found | Turn findings into fixes |
| Audit every week without remembering to | Schedule a standards audit |
A four-step cycle: audit, fix in Inventory & Cleanup or GTM, publish in GTM, audit again.
Questions people ask first
Does the audit change my containers?
No. It only reads. Fixes go through Inventory & Cleanup or GTM, and you publish them.
Which version of a container does it check?
The Default Workspace: everything published plus any unpublished edits in that workspace. Changes waiting in another workspace aren't checked until they're published.
Can I turn a built-in standard off?
Yes. Switch it off, edit it, or delete it. Restore defaults brings back the shipped library.
Can a standard apply to only some brands?
No. Every enabled standard runs against every container you pick. Choose the brands per run instead.
Is “No orphaned tags” the same as Inventory & Cleanup's Orphaned?
No. Here it means a tag with no firing trigger attached. Inventory & Cleanup's Orphaned means nothing references the item at all.
Do I need Premium?
Not to run every built-in standard on one GTM account. Premium is for several accounts in one run, more than one custom standard, exports, email and schedules.
ODDVX for Windows
One standard, every container.
Start free on one GTM account with every built-in standard. Premium adds several accounts in one run, any number of custom standards, exports and scheduled audits.