{
 "nodes": [
  {
   "id": "/okf/log.md",
   "title": "Change history",
   "type": "Change Log",
   "description": "Change history for the Tracking Audit Knowledge Base bundle.",
   "resource": "https://www.trackingauditor.io/okf"
  },
  {
   "id": "/okf/index.md",
   "title": "The Tracking Audit Knowledge Base",
   "type": "Knowledge Bundle",
   "description": "Structured knowledge about auditing GA4 and Google Tag Manager tracking setups, published by Tracking Auditor as an Open Knowledge Format bundle.",
   "resource": "https://www.trackingauditor.io/okf"
  },
  {
   "id": "/okf/findings/legacy-universal-analytics-tags.md",
   "title": "Legacy Universal Analytics tags",
   "type": "Common Finding",
   "description": "Universal Analytics tags still fire years after the platform stopped processing data, wasting page performance and confusing debugging.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/findings/duplicate-purchase-events.md",
   "title": "Duplicate purchase events",
   "type": "Common Finding",
   "description": "Purchases fire on every load of the confirmation page with no transaction ID to de-duplicate, so reported revenue runs above reality.",
   "resource": "https://www.trackingauditor.io/ga4-purchase-event-not-firing"
  },
  {
   "id": "/okf/findings/duplicate-ga4-configuration.md",
   "title": "Duplicate GA4 configuration tags",
   "type": "Common Finding",
   "description": "Two configuration tags with the same measurement ID double-count every session, event and conversion.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/findings/undeclared-cookies.md",
   "title": "Undeclared cookies",
   "type": "Common Finding",
   "description": "The site sets cookies that its consent banner has never declared, usually from tags added after the banner was configured.",
   "resource": "https://www.trackingauditor.io/cookie-compliance-audit"
  },
  {
   "id": "/okf/findings/paused-cmp-tag.md",
   "title": "Paused CMP tag",
   "type": "Common Finding",
   "description": "The consent management platform tag is paused or broken, so no consent signals reach any other tag while the banner may still render from cache.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  },
  {
   "id": "/okf/findings/internal-traffic-unfiltered.md",
   "title": "Internal traffic unfiltered",
   "type": "Common Finding",
   "description": "The team's own sessions are counted in reports, inflating engagement and polluting conversion rates.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/findings/consent-default-set-too-late.md",
   "title": "Consent Mode default set too late",
   "type": "Common Finding",
   "description": "The Consent Mode default state is set after tags load, so the first pageview runs unconsented regardless of configuration.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  },
  {
   "id": "/okf/findings/misclassified-cookies.md",
   "title": "Misclassified cookies",
   "type": "Common Finding",
   "description": "Advertising or analytics cookies are filed as strictly necessary so they always load, regardless of the visitor's choice.",
   "resource": "https://www.trackingauditor.io/cookie-compliance-audit"
  },
  {
   "id": "/okf/findings/tags-fire-before-consent.md",
   "title": "Tags fire before consent",
   "type": "Common Finding",
   "description": "Tracking tags collect data before the visitor has responded to the cookie banner, which does not meet opt-in consent requirements.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  },
  {
   "id": "/okf/findings/index.md",
   "title": "Common findings",
   "type": "Index",
   "description": "The failure patterns tracking audits find most often, grouped by audit dimension.",
   "resource": "https://www.trackingauditor.io/google-analytics-audit"
  },
  {
   "id": "/okf/findings/conversion-stopped-recording.md",
   "title": "Conversion stopped recording",
   "type": "Common Finding",
   "description": "A conversion silently stopped being captured after a site change, and the gap was discovered weeks or months later.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/findings/test-tags-in-production.md",
   "title": "Test tags in production",
   "type": "Common Finding",
   "description": "Test pixels, staging domains and debug-triggered tags left live in the production container, polluting real data or sending it to the wrong place.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/findings/key-events-mapped-to-noise.md",
   "title": "Key events mapped to noise",
   "type": "Common Finding",
   "description": "Auto-collected events like page_view or session_start are marked as key events, flooding reports with conversions that mean nothing.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/concepts/cmp.md",
   "title": "Consent management platform (CMP)",
   "type": "Definition",
   "description": "The tool that displays the cookie banner, records visitor choices and publishes consent signals for tags to obey.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  },
  {
   "id": "/okf/concepts/gtm-container.md",
   "title": "GTM container",
   "type": "Definition",
   "description": "The published bundle of tags, triggers and variables that Google Tag Manager serves to a website, controlling all tracking that runs on it.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/concepts/ga4-key-events.md",
   "title": "GA4 key events",
   "type": "Definition",
   "description": "The events a GA4 property counts as conversions, which feed reports and can feed Google Ads bidding.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/concepts/unassigned-traffic.md",
   "title": "Unassigned traffic",
   "type": "Definition",
   "description": "Sessions and conversions GA4 recorded but could not credit to any channel, usually from non-standard UTMs, missing session context or consent effects.",
   "resource": "https://www.trackingauditor.io/ga4-unassigned-traffic"
  },
  {
   "id": "/okf/concepts/consent-mode-v2.md",
   "title": "Consent Mode v2",
   "type": "Definition",
   "description": "The mechanism Google tags use to adapt their behaviour to visitor consent choices, extended in v2 with ad_user_data and ad_personalization signals.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  },
  {
   "id": "/okf/concepts/data-retention.md",
   "title": "GA4 data retention",
   "type": "Definition",
   "description": "How long GA4 keeps event-level data for explorations, defaulting to two months unless deliberately extended.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/concepts/strictly-necessary-cookies.md",
   "title": "Strictly necessary cookies",
   "type": "Definition",
   "description": "Cookies the site cannot function without, which are the only category that may load before consent under opt-in regimes.",
   "resource": "https://www.trackingauditor.io/cookie-compliance-audit"
  },
  {
   "id": "/okf/concepts/measurement-id.md",
   "title": "Measurement ID",
   "type": "Definition",
   "description": "The G- identifier that routes collected data to a specific GA4 data stream; duplicated initialisation of one ID double-counts everything.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/concepts/index.md",
   "title": "Concepts & definitions",
   "type": "Index",
   "description": "Definitions of the core concepts a tracking audit works with, from Consent Mode v2 to transaction de-duplication.",
   "resource": "https://www.trackingauditor.io/google-analytics-audit"
  },
  {
   "id": "/okf/concepts/internal-traffic-filter.md",
   "title": "Internal traffic filter",
   "type": "Definition",
   "description": "The GA4 mechanism for excluding a team\u2019s own visits from reports, which ships in testing mode and does nothing until activated.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/concepts/cross-domain-tracking.md",
   "title": "Cross-domain tracking",
   "type": "Definition",
   "description": "Linking configuration that preserves one session and its attribution when a user journey spans multiple domains.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/concepts/referral-exclusions.md",
   "title": "Referral exclusions",
   "type": "Definition",
   "description": "The GA4 setting that stops payment gateways and auth providers from breaking sessions and stealing attribution mid-checkout.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/concepts/transaction-deduplication.md",
   "title": "Transaction de-duplication",
   "type": "Definition",
   "description": "Using a unique transaction_id on purchase events so repeated fires of the same order are counted once.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/concepts/debugging-tools.md",
   "title": "GTM Preview & GA4 DebugView",
   "type": "Definition",
   "description": "The two debugging surfaces used together to trace an event from the website through the container into GA4.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/concepts/datalayer.md",
   "title": "dataLayer",
   "type": "Definition",
   "description": "The JavaScript array a website uses to pass structured information (events, transaction details, user context) to Google Tag Manager.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/concepts/enhanced-measurement.md",
   "title": "Enhanced measurement",
   "type": "Definition",
   "description": "GA4\u2019s automatic collection of scrolls, outbound clicks, site search, video and file downloads, enabled per data stream.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/dimensions/conversion-integrity.md",
   "title": "Conversion integrity",
   "type": "Audit Dimension",
   "description": "Whether every conversion a business relies on is captured once, with the right value, attributed to the right source, and consistent with the order system.",
   "resource": "https://www.trackingauditor.io/conversion-tracking-audit"
  },
  {
   "id": "/okf/dimensions/gtm-governance.md",
   "title": "GTM governance",
   "type": "Audit Dimension",
   "description": "The health of the Google Tag Manager container: duplicates, legacy and test tags, trigger hygiene, dataLayer integrity, access control and version history.",
   "resource": "https://www.trackingauditor.io/gtm-audit"
  },
  {
   "id": "/okf/dimensions/cookie-classification.md",
   "title": "Cookie classification",
   "type": "Audit Dimension",
   "description": "Whether the cookies a site actually sets match what its consent banner declares, in the right categories, with accurate durations.",
   "resource": "https://www.trackingauditor.io/cookie-compliance-audit"
  },
  {
   "id": "/okf/dimensions/ga4-event-quality.md",
   "title": "GA4 event quality",
   "type": "Audit Dimension",
   "description": "Whether the events a GA4 property collects are named consistently, mapped to real conversions, carry usable parameters, and are free of internal and bot noise.",
   "resource": "https://www.trackingauditor.io/ga4-event-audit"
  },
  {
   "id": "/okf/dimensions/index.md",
   "title": "Audit dimensions",
   "type": "Index",
   "description": "The five dimensions of a tracking audit, each with its weight in the overall A to F grade.",
   "resource": "https://www.trackingauditor.io/google-analytics-audit"
  },
  {
   "id": "/okf/dimensions/consent-and-privacy.md",
   "title": "Consent & privacy",
   "type": "Audit Dimension",
   "description": "Whether tracking tags actually respect visitor consent choices, including Consent Mode v2 configuration and enforcement across all three consent paths.",
   "resource": "https://www.trackingauditor.io/consent-mode-audit"
  }
 ],
 "links": [
  {
   "source": "/okf/index.md",
   "target": "/okf/dimensions/index.md"
  },
  {
   "source": "/okf/index.md",
   "target": "/okf/findings/index.md"
  },
  {
   "source": "/okf/index.md",
   "target": "/okf/concepts/index.md"
  },
  {
   "source": "/okf/index.md",
   "target": "/okf/log.md"
  },
  {
   "source": "/okf/findings/legacy-universal-analytics-tags.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/findings/duplicate-purchase-events.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/findings/duplicate-ga4-configuration.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/findings/undeclared-cookies.md",
   "target": "/okf/dimensions/cookie-classification.md"
  },
  {
   "source": "/okf/findings/paused-cmp-tag.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/findings/internal-traffic-unfiltered.md",
   "target": "/okf/dimensions/ga4-event-quality.md"
  },
  {
   "source": "/okf/findings/consent-default-set-too-late.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/findings/misclassified-cookies.md",
   "target": "/okf/dimensions/cookie-classification.md"
  },
  {
   "source": "/okf/findings/tags-fire-before-consent.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/tags-fire-before-consent.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/consent-default-set-too-late.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/paused-cmp-tag.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/duplicate-ga4-configuration.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/legacy-universal-analytics-tags.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/test-tags-in-production.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/key-events-mapped-to-noise.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/internal-traffic-unfiltered.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/undeclared-cookies.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/misclassified-cookies.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/duplicate-purchase-events.md"
  },
  {
   "source": "/okf/findings/index.md",
   "target": "/okf/findings/conversion-stopped-recording.md"
  },
  {
   "source": "/okf/findings/conversion-stopped-recording.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/findings/test-tags-in-production.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/findings/key-events-mapped-to-noise.md",
   "target": "/okf/dimensions/ga4-event-quality.md"
  },
  {
   "source": "/okf/concepts/cmp.md",
   "target": "/okf/concepts/consent-mode-v2.md"
  },
  {
   "source": "/okf/concepts/cmp.md",
   "target": "/okf/findings/paused-cmp-tag.md"
  },
  {
   "source": "/okf/concepts/gtm-container.md",
   "target": "/okf/concepts/datalayer.md"
  },
  {
   "source": "/okf/concepts/gtm-container.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/concepts/ga4-key-events.md",
   "target": "/okf/findings/key-events-mapped-to-noise.md"
  },
  {
   "source": "/okf/concepts/ga4-key-events.md",
   "target": "/okf/dimensions/ga4-event-quality.md"
  },
  {
   "source": "/okf/concepts/ga4-key-events.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/concepts/consent-mode-v2.md",
   "target": "/okf/findings/tags-fire-before-consent.md"
  },
  {
   "source": "/okf/concepts/consent-mode-v2.md",
   "target": "/okf/findings/consent-default-set-too-late.md"
  },
  {
   "source": "/okf/concepts/consent-mode-v2.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/concepts/strictly-necessary-cookies.md",
   "target": "/okf/findings/misclassified-cookies.md"
  },
  {
   "source": "/okf/concepts/measurement-id.md",
   "target": "/okf/findings/duplicate-ga4-configuration.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/consent-mode-v2.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/cmp.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/strictly-necessary-cookies.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/gtm-container.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/datalayer.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/measurement-id.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/ga4-key-events.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/enhanced-measurement.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/internal-traffic-filter.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/data-retention.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/transaction-deduplication.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/unassigned-traffic.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/referral-exclusions.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/cross-domain-tracking.md"
  },
  {
   "source": "/okf/concepts/index.md",
   "target": "/okf/concepts/debugging-tools.md"
  },
  {
   "source": "/okf/concepts/internal-traffic-filter.md",
   "target": "/okf/findings/internal-traffic-unfiltered.md"
  },
  {
   "source": "/okf/concepts/transaction-deduplication.md",
   "target": "/okf/findings/duplicate-purchase-events.md"
  },
  {
   "source": "/okf/concepts/debugging-tools.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/concepts/datalayer.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/concepts/datalayer.md",
   "target": "/okf/findings/conversion-stopped-recording.md"
  },
  {
   "source": "/okf/dimensions/conversion-integrity.md",
   "target": "/okf/findings/duplicate-purchase-events.md"
  },
  {
   "source": "/okf/dimensions/conversion-integrity.md",
   "target": "/okf/findings/conversion-stopped-recording.md"
  },
  {
   "source": "/okf/dimensions/conversion-integrity.md",
   "target": "/okf/dimensions/ga4-event-quality.md"
  },
  {
   "source": "/okf/dimensions/conversion-integrity.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/dimensions/gtm-governance.md",
   "target": "/okf/findings/duplicate-ga4-configuration.md"
  },
  {
   "source": "/okf/dimensions/gtm-governance.md",
   "target": "/okf/findings/legacy-universal-analytics-tags.md"
  },
  {
   "source": "/okf/dimensions/gtm-governance.md",
   "target": "/okf/findings/test-tags-in-production.md"
  },
  {
   "source": "/okf/dimensions/gtm-governance.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/dimensions/gtm-governance.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/dimensions/cookie-classification.md",
   "target": "/okf/findings/undeclared-cookies.md"
  },
  {
   "source": "/okf/dimensions/cookie-classification.md",
   "target": "/okf/findings/misclassified-cookies.md"
  },
  {
   "source": "/okf/dimensions/cookie-classification.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/dimensions/ga4-event-quality.md",
   "target": "/okf/findings/key-events-mapped-to-noise.md"
  },
  {
   "source": "/okf/dimensions/ga4-event-quality.md",
   "target": "/okf/findings/internal-traffic-unfiltered.md"
  },
  {
   "source": "/okf/dimensions/ga4-event-quality.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/dimensions/ga4-event-quality.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/dimensions/index.md",
   "target": "/okf/dimensions/consent-and-privacy.md"
  },
  {
   "source": "/okf/dimensions/index.md",
   "target": "/okf/dimensions/gtm-governance.md"
  },
  {
   "source": "/okf/dimensions/index.md",
   "target": "/okf/dimensions/ga4-event-quality.md"
  },
  {
   "source": "/okf/dimensions/index.md",
   "target": "/okf/dimensions/cookie-classification.md"
  },
  {
   "source": "/okf/dimensions/index.md",
   "target": "/okf/dimensions/conversion-integrity.md"
  },
  {
   "source": "/okf/dimensions/consent-and-privacy.md",
   "target": "/okf/findings/tags-fire-before-consent.md"
  },
  {
   "source": "/okf/dimensions/consent-and-privacy.md",
   "target": "/okf/findings/consent-default-set-too-late.md"
  },
  {
   "source": "/okf/dimensions/consent-and-privacy.md",
   "target": "/okf/findings/paused-cmp-tag.md"
  },
  {
   "source": "/okf/dimensions/consent-and-privacy.md",
   "target": "/okf/dimensions/cookie-classification.md"
  },
  {
   "source": "/okf/dimensions/consent-and-privacy.md",
   "target": "/okf/dimensions/gtm-governance.md"
  }
 ]
}