Skip to content

Instantly share code, notes, and snippets.

View mbaersch's full-sized avatar

Markus Baersch mbaersch

View GitHub Profile
@mbaersch
mbaersch / _cookiescript-gtm.md
Last active October 24, 2025 11:54
Custom GTM container code for CookieScript CMP (loads GTM only when targeting or performance consent is granted)

Custom GTM container code for CookieScript CMP

This code loads GTM only when marketing / targeting or performance consent is granted) on a website using CookieScript. This allows to implement both GTM and CookieScript directly on your site and still respect consent.

There are to optional lines of code:

  • you can easily delete the console.log command after making sure that everything works
  • the dataLayer event push is not necessary but serves as a unique trigger that can be used as an alternative to the dataLayer events that CookieScript fires. This is helpful for firing GA and FB Tags at the same event (resulting in matching event ids) when using a server-side GTM and Meta CAPI for example.

Note: CookieScript changed their API at least once and broke existing similar custom implementations already. Be aware that this may happen again in the future.

@mbaersch
mbaersch / gtmTagCode.js
Created June 20, 2025 08:57
Transforms GTM HTML code with variables for testing in console
function gtmTagCode(fCode, delimiter="'", replacement="", run=false){
if (replacement && replacement != "") {
fCode = fCode.replace(/{{.*}}/gi, replacement)
} else
fCode = fCode.replace(/({{|}})/gi, delimiter)
if (run===true) eval(fCode); else console.log(fCode)
}
@mbaersch
mbaersch / README.md
Last active February 21, 2025 10:23
WCAG20_GTM - Accessibility Helper Tag for Google Tag Manager

WCAG20_GTM

Accessibility Helper Tag for Google Tag Manager

Audits current webpage accessibility using ACE and pushes results to dataLayer.

Usage

Add a new custom HTML tag and paste code. Fire on every page load or use any condition to take only a sample.

Example dataLayer push

@mbaersch
mbaersch / README.md
Last active August 29, 2024 21:34
Tagless Request Proxy - Forward redacted GET request to any destination (Custom Client Template for server-side Google Tag Manager)

Tagless Request Proxy

Custom Client Template for server-side Google Tag Manager

Send incoming GET requests to custom endpoint and optionally change and add parameters. Does not need any tags but optionally creates an event and runs the container.

Usage

Create a new client template in ssGTM and import .tpl file. Add a destination URL for your desired endpoint. The client will forward all incoming requests to the defined endpoint path (default: /fwd).

Options

@mbaersch
mbaersch / README.md
Last active October 16, 2024 14:07
Fakecentrics - Custom HTML Tag Code for Google Tag Manager: Dummy Consent Dialog for Testing Purposes

Fakecentrics - Shakespeare Edition

Custom HTML Tag Code for Google Tag Manager

Dummy Consent Dialog for Testing Purposes

Creates a simple fake consent dialog to accept or decline all services defined in a "consentKeys" array. pushes consent to dataLayer in a Usercentrics-like format.

Example consent push

image

@mbaersch
mbaersch / demo-iframe-messages.md
Last active September 25, 2024 18:38
Cross Domain Messages Demo Pages

DEMO: Messages für iFrame Vermessung

Einfache Demo zur Nutzung von Messages für die Kommunikation zwischen einem iFrame ("Frame Seite") und der beinhaltenden Seite ("Hauptseite") zum Zweck des zustimmungskonformen Trackings aus dem Kontext der Hauptseite heraus.

Mit dieser Methode ist es...

  • unnötig, einen Consent Dialog oder direktes Tracking innerhalb der Frame Seite zu betreiben
  • möglich, die Nachrichten der Frame Seite in der Hauptseite zu verarbeiten oder zu ignorieren, je nach Consent-Lage
  • technisch irrelevant, ob der iFrame eine Frame Seite der eigenen oder einer fremden Domain ausspielt. Solange CSP und Zustimmung das Laden der Inhalte im iFrame nicht verhindern, kann so ein Tracking ohne weitere technische Mittel nur über die Hauptseite implementiert werden
@mbaersch
mbaersch / walker2bigquery_tag_template.tpl
Last active December 15, 2022 18:07
preview of ssGTM tag template for walker.js events
/* Template moved to final repo.
* @see https://github.com/elbwalker/sgtm-tag-bigquery
*/
@mbaersch
mbaersch / full_size_gtm.user.js
Created September 22, 2022 10:01
Tampermonkey Script for adjusting GTM user interface to full size use
// ==UserScript==
// @name Full Size GTM
// @namespace http://tampermonkey.net/
// @version 0.1
// @description adjust GTM user interface to full size use
// @author MBSL
// @match https://tagmanager.google.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com
// @grant none
// ==/UserScript==
@mbaersch
mbaersch / kill_ga4_announcement.user.js
Last active August 27, 2022 09:49
Tampermonkey Script: hide annoying announcement for GA4 in Universal Analytics UI
// ==UserScript==
// @name Kill GA4 Announcement
// @namespace http://tampermonkey.net/
// @version 0.4
// @description hide annoying announcement for GA4 in Universal Analytics UI (or any other)
// @author MBSL
// @match https://analytics.google.com/analytics/web/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com
// @grant none
// ==/UserScript==
@mbaersch
mbaersch / Universal-Export-R-Beispiel.R
Last active May 2, 2022 12:02
Beispielscript zum Export von Daten aus Google Universal Analytics mittels R
#---------------------------------------------------------------------------------
# Beispielscript: Export von Daten aus Google Universal Analytics mittels R
#---------------------------------------------------------------------------------
# Dieses Beispiel gehört zum Blogpost unter
# https://www.markus-baersch.de/blog/universal-analytics-daten-sichern-was-und-wie/
# Damit es nutzbar ist:
# - R installieren: https://cran.rstudio.com/
# - RStudio installieren: https://www.rstudio.com/
# - Dieses Script in RStudio öffnen