Skip to content

Instantly share code, notes, and snippets.

@dustinrecko
dustinrecko / matelso-template.js
Last active June 7, 2019 05:33
matelso-template
const copyFromWindow = require('copyFromWindow');
const injectScript = require('injectScript');
const CallTrackingObject = 'mtls';
if(copyFromWindow(CallTrackingObject)) {
// matelso already loaded
data.gtmOnFailure();
}
/**
* THE STANDARD..
*
*/
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
@dustinrecko
dustinrecko / worker-snippet.js
Created February 26, 2019 19:54
Set Google Analytics Client Id Cookie with Cloudflare Workers
response.headers.append('Set-Cookie', `_ga=${["GA1", trackingDomain.split('.').length, crypto.getRandomValues(new Uint32Array(1))[0] & 2147483647, Math.round((new Date).getTime() / 1E3)].join(".")}; Domain=.${trackingDomain}; Max-Age=63072000;`);
@dustinrecko
dustinrecko / worker.js
Created February 17, 2019 08:15
Deduping Google Analytics Transaction Hits - Cloudflare Worker
addEventListener('fetch', event => {
if(event.request.url.indexOf('/collect') > -1)
event.waitUntil(process(event.request))
event.respondWith(new Response('',{status:200}))
})
/**
* CONFIG SECTION
*/
const ANALYTICS_URL = 'https://www.google-analytics.com'
@dustinrecko
dustinrecko / customModel.js
Last active February 17, 2019 08:15
Deduping Google Analytics Transaction Hits - customTask
function () {
return function (model) {
var proxyDomain = "https://<yourdomain.com>/collect";
var proxySendHitTask = function () {
function pixel(hitPayload) {
var result = false;
try {
document.createElement("img").src = proxyDomain + "?" + hitPayload, result = true
} catch (e) {}
return result
@dustinrecko
dustinrecko / worker.js
Last active March 16, 2022 21:24
Tag Manager for Medium with Cloudflare Workers
/**
* Main worker entry point.
*
*/
addEventListener("fetch", event => {
// Fail-safe in case of an unhandled exception
event.passThroughOnException();
event.respondWith(processRequest(event.request, event));
});
@dustinrecko
dustinrecko / worker.js
Created November 29, 2018 07:45
Cloudflare Worker Googlebot Tracking
const analyticsId = 'UA-xxxxxxxxx-x'
addEventListener('fetch', event => {
event.respondWith(handleRequest(event))
})
/**
* Check request object for Googlebot UA to send tracking data
* @param {Event} event
*/
<script>
(function(){
var xmlhttp = new XMLHttpRequest();
var db = "https://your-database.firebaseio.com/"+{{Client Id}}.replace(/\./g,"_")+".json";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
window.gaIds = JSON.parse(this.responseText);
}
};
/**
* Analytics Segment Provision in Tag Manager
* @author: Dustin Recko
*
*/
var TAG_MANAGER_CONFIG = {
accountId: '',
containerId: '',
workspaceId: ''
@dustinrecko
dustinrecko / Code.gs
Created October 1, 2018 07:01
OMR | Performance Monitoring in Slack via Labels
/**
* AdWords Performance Monitoring in Slack via Labels
* @author: Dustin Recko
*
*/
// Config Section //>
var DB_URL = 'https://...'; // The Firebase Database URL
var DB_AUTH = 'xxx'; // The Firebase Database Secret