[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fvvwT6l2A3SgYjrtJU77jZPZJcgl6kj2NJZk3y2xPSME":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"whittfield","Whittfield Holmes","https:\u002F\u002Fprofiles.wordpress.org\u002Fwhittfield\u002F",1,0,100,30,94,"2026-08-29T16:51:33.938Z",[14],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":8,"downloaded":20,"rating":8,"num_ratings":8,"last_updated":21,"tested_up_to":22,"requires_at_least":23,"requires_php":24,"tags":25,"homepage":31,"download_link":32,"security_score":9,"vuln_count":8,"unpatched_count":8,"last_vuln_date":33,"fetched_at":34},"brandmeetscode-datalayer-tracker","BrandMeetsCode DataLayer Tracker","1.2.8","\u003Cp>\u003Cstrong>BrandMeetsCode DataLayer Tracker\u003C\u002Fstrong> sends \u003Cstrong>structured data\u003C\u002Fstrong> to \u003Ccode>window.dataLayer\u003C\u002Fcode> so Google Tag Manager or your own tags can consume consistent events and page context.\u003C\u002Fp>\n\u003Cp>By \u003Cstrong>Whittfield Holmes\u003C\u002Fstrong> at \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fbrandmeetscode.com\u002F\" rel=\"nofollow ugc\">Brand Meets Code\u003C\u002Fa>\u003C\u002Fstrong>. Listed on WordPress.org as \u003Cstrong>BrandMeetsCode DataLayer Tracker\u003C\u002Fstrong>; the wp-admin menu is \u003Cstrong>DataLayer Tracker\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>This plugin is \u003Cstrong>fully functional\u003C\u002Fstrong> with \u003Cstrong>no license checks\u003C\u002Fstrong>, \u003Cstrong>no trial period\u003C\u002Fstrong>, \u003Cstrong>no usage quotas\u003C\u002Fstrong>, and \u003Cstrong>no disabled settings\u003C\u002Fstrong> in wp-admin.\u003C\u002Fp>\n\u003Ch4>Included features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Page & content context\u003C\u002Fstrong> — page type, IDs, title, URL, slug\u002Fpath, categories\u002Ftags, referrer, \u003Cstrong>UTM parameters\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Visitor & device hints\u003C\u002Fstrong> — resolution, timezone offset, browser language; optional cookie exposure rules\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Logged-in user context\u003C\u002Fstrong> — role-style flags and optional \u003Cstrong>hashed user id\u003C\u002Fstrong> (modes you configure)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Engagement\u003C\u002Fstrong> — scroll depth (modes), scroll back up, focus\u002Fblur, time on page, \u003Cstrong>active time\u003C\u002Fstrong>, \u003Cstrong>hover intent\u003C\u002Fstrong>, \u003Cstrong>video progress\u003C\u002Fstrong>, default clicks; optional deeper click\u002Ffield\u002Fsection options where listed in Settings\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Forms\u003C\u002Fstrong> — \u003Ccode>form_view\u003C\u002Fcode>, \u003Ccode>form_field_start\u003C\u002Fcode>, \u003Ccode>form_submit\u003C\u002Fcode>, \u003Ccode>form_error\u003C\u002Fcode>, \u003Ccode>form_abandon\u003C\u002Fcode>; optional form-vendor shortcut mode\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce (when enabled)\u003C\u002Fstrong> — browser \u003Cstrong>GA4-style ecommerce\u003C\u002Fstrong> events (view_item, add_to_cart, purchase, etc.) when WooCommerce is active\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Google Tag Manager\u003C\u002Fstrong> — optional container \u003Cstrong>snippet\u003C\u002Fstrong> output from settings (you configure tags inside GTM)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Consent-aware loading\u003C\u002Fstrong> — delay until consent, CMP preference, TCF option, fallbacks\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Page URL filtering\u003C\u002Fstrong> — regex exclude list\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sessions\u003C\u002Fstrong> — client-side session timeout\u002Fheartbeat options\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debugging\u003C\u002Fstrong> — console logging levels and admin \u003Cstrong>debug overlay\u003C\u002Fstrong> (core panels)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-friendly\u003C\u002Fstrong> — hooks\u002Ffilters; push custom \u003Ccode>window.dataLayer\u003C\u002Fcode> events from theme or other plugins\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Consent Management\u003C\u002Fh4>\n\u003Cp>Auto-detection and integration patterns vary by CMP; you remain responsible for correct legal configuration on your site.\u003C\u002Fp>\n\u003Ch4>Google Tag Manager\u003C\u002Fh4>\n\u003Cp>Optional \u003Cstrong>snippet\u003C\u002Fstrong> + consistent \u003Cstrong>dataLayer\u003C\u002Fstrong> pushes. Configure tags, triggers, and variables inside GTM.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Ch4>Google Tag Manager (optional — only when you configure a container ID)\u003C\u002Fh4>\n\u003Cp>This plugin includes an optional feature to inject the Google Tag Manager container snippet on your site’s front end. This feature is \u003Cstrong>disabled by default\u003C\u002Fstrong> and only activates when you enter a GTM Container ID in the plugin settings and enable the snippet toggle.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What it does:\u003C\u002Fstrong> When enabled, the plugin outputs the standard GTM \u003Ccode>\u003Cscript>\u003C\u002Fcode> and \u003Ccode>\u003Cnoscript>\u003C\u002Fcode> tags that load \u003Ccode>https:\u002F\u002Fwww.googletagmanager.com\u002Fgtm.js\u003C\u002Fcode>. This causes the visitor’s browser to contact Google’s servers to load the GTM container.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What data is sent:\u003C\u002Fstrong> When GTM loads, Google receives the visitor’s IP address, browser, and the URL being viewed — the same data sent by any website that loads GTM. No additional data is sent by this plugin beyond the standard GTM request. The plugin itself populates \u003Ccode>window.dataLayer\u003C\u002Fcode> in the browser; it is your GTM configuration that determines what analytics data leaves the site.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>When it is sent:\u003C\u002Fstrong> Only on front-end page loads when the visitor’s browser downloads the GTM script. If the consent-delay feature is enabled, the snippet is withheld until the visitor grants consent via your CMP.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Service provider:\u003C\u002Fstrong> Google LLC\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Terms of Service:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fterms\" rel=\"nofollow ugc\">Google Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">Google Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GTM documentation:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fmarketingplatform.google.com\u002Fabout\u002Ftag-manager\u002F\" rel=\"nofollow ugc\">Google Tag Manager\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>WordPress Admin AJAX\u003C\u002Fh4>\n\u003Cp>All plugin settings saves, the setup wizard, and admin actions use WordPress’s built-in \u003Ccode>admin-ajax.php\u003C\u002Fcode> endpoint. All requests go to your own WordPress installation. No data is sent to external servers by these requests.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Important:\u003C\u002Fstrong> You are responsible for ensuring that any third-party analytics services (GTM, GA4, etc.) you configure on your site comply with applicable data-protection laws (GDPR, CCPA, etc.) and that visitors are properly informed. This plugin provides consent-delay and CMP-detection functionality to help withhold scripts until consent is obtained, but legal compliance remains your responsibility.\u003C\u002Fp>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>BrandMeetsCode DataLayer Tracker may expose, depending entirely on which options you enable:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Page URL, titles, and taxonomy-style context\u003C\u002Fli>\n\u003Cli>Logged-in user fields you choose to surface, including optional \u003Cstrong>hashed\u003C\u002Fstrong> identifiers\u003C\u002Fli>\n\u003Cli>Engagement signals (scroll depth, timing, generic form interactions)\u003C\u002Fli>\n\u003Cli>WooCommerce-related item data when ecommerce tracking is enabled\u003C\u002Fli>\n\u003Cli>Structured event data pushed to \u003Ccode>window.dataLayer\u003C\u002Fcode> for use by analytics tools you configure\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin does not send data to any external server on your behalf. You are responsible for consent, disclosure, and lawful basis for any analytics tools you add to your site. The plugin does not replace legal or DPO review.\u003C\u002Fp>\n\u003Cp>Data is exposed to the browser \u003Ccode>dataLayer\u003C\u002Fcode>; downstream tags decide what leaves the site.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Ch4>Documentation\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Full Documentation: \u003Ca href=\"https:\u002F\u002Fdatalayer-tracker.com\u002Fknowledge-base\" rel=\"nofollow ugc\">https:\u002F\u002Fdatalayer-tracker.com\u002Fknowledge-base\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Video Tutorials: \u003Ca href=\"https:\u002F\u002Fyoutube.com\u002F@whittfieldholmes\" rel=\"nofollow ugc\">YouTube Channel\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Community Support\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Support Forum: \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fbrandmeetscode-datalayer-tracker\" rel=\"ugc\">WordPress.org\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Developer Hooks\u003C\u002Fh3>\n\u003Ch4>Filters (examples)\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>add_filter(\n    'brandatr_before_push',\n    static function ( $event ) {\n        $event['custom_field'] = 'value';\n\n        return $event;\n    }\n);\n\nadd_filter(\n    'brandatr_should_track_event',\n    static function ( $should_track, $event_name ) {\n        if ( 'unwanted_event' === $event_name ) {\n            return false;\n        }\n\n        return $should_track;\n    },\n    10,\n    2\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Actions\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F\u002F Run code after consent granted\nadd_action('brandatr_consent_granted', function($consent_types) {\n    \u002F\u002F Your code here\n});\n\n\u002F\u002F Run code after dataLayer push\nadd_action('brandatr_after_push', function($event) {\n    \u002F\u002F Your code here\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>JavaScript API\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F\u002F Push custom event\nwindow.dataLayer.push({\n    event: 'custom_event',\n    custom_param: 'value'\n});\n\n\u002F\u002F Get session context\nconst context = window.ADTSession?.getContext();\n\n\u002F\u002F Check consent\nconst hasConsent = window.hasConsent('analytics');\u003Ch3>Credits\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Developed by \u003Cstrong>Whittfield Holmes\u003C\u002Fstrong> at \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fbrandmeetscode.com\u002F\" rel=\"nofollow ugc\">Brand Meets Code\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Special thanks to the WordPress community, beta testers, and all users who provide feedback and feature requests.\u003C\u002Fp>\n","GTM-ready dataLayer: consent-aware events, engagement, admin debug overlay, optional WooCommerce. Fully free—no license keys or locked settings.",163,"2026-06-07T15:04:00.000Z","7.0.2","5.8","7.4",[26,27,28,29,30],"analytics","consent","google-tag-manager","tracking","woocommerce","https:\u002F\u002Fbrandmeetscode.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbrandmeetscode-datalayer-tracker.1.2.8.zip",null,"2026-07-22T17:31:50.256Z"]