Hello,
We recently transitioned our front-end to WordPress while using Shopify for our backend with buy buttons (Shopify SDK). As a result, we have lost access to most Shopify analytics.
Has anyone managed to copy the code injected into Shopify stores so that it can be used on self-hosted websites - so that shopify analytics are captured. I’m pretty sure this is possible - just need the right code wizard to decode which javascript snippets need using and what variables to swap out etc.
Here’s some analytics code I found on every myshopify site that could be potentially used for this project. Who’s up for the challenge? Would gladly pay for this as I miss my Shopify analytics - and I might even transition back if this is not possible.
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'GBP';
var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":7754416164}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
(window.gaDevIds=window.gaDevIds||[]).push('BwiEti');
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var isDuplicatedThankYouPageView = function() {
return document.cookie.indexOf('loggedConversion=' + window.location.pathname) !== -1;
};
var setCookieIfThankYouPage = function() {
if (window.location.pathname.indexOf('/checkouts') !== -1 &&
window.location.pathname.indexOf('/thank_you') !== -1) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + window.location.pathname + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config;
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
(new Image()).src='//v.shopify.com/internal_errors/track?error=trekkie_load';
};
script.async = true;
script.src='https://cdn.shopify.com/s/javascripts/tricorder/trekkie.storefront.min.js?v=2020.07.13.1';
var first = document.getElementsByTagName('script')[0];
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":24955928,"isMerchantRequest":true,"themeId":82736349220,"themeCityHash":"10710452660927632108","contentLanguage":"en","currency":"GBP"},"isServerSideCookieWritingEnabled":true,"isPixelGateEnabled":false},"Performance":{"navigationTimingApiMeasurementsEnabled":true,"navigationTimingApiMeasurementsSampleRate":1},"Google Analytics":{"trackingId":"UA-109137457-1","domain":"auto","siteSpeedSampleRate":"10","enhancedEcommerce":true,"doubleClick":true,"includeSearch":true},"Facebook Pixel":{"pixelIds":["1582196151819577"],"agent":"plshopify1.2"},"Session Attribution":{}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
ga('require', 'linker');
function addListener(element, type, callback) {
if (element.addEventListener) {
element.addEventListener(type, callback);
}
else if (element.attachEvent) {
element.attachEvent('on' + type, callback);
}
}
function decorate(event) {
event = event || window.event;
var target = event.target || event.srcElement;
if (target && (target.getAttribute('action') || target.getAttribute('href'))) {
ga(function (tracker) {
var linkerParam = tracker.get('linkerParam');
document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';
});
}
}
addListener(window, 'load', function(){
for (var i=0; i < document.forms.length; i++) {
var action = document.forms[i].getAttribute('action');
if(action && action.indexOf('/cart') >= 0) {
addListener(document.forms[i], 'submit', decorate);
}
}
for (var i=0; i < document.links.length; i++) {
var href = document.links[i].getAttribute('href');
if(href && href.indexOf('/checkout') >= 0) {
addListener(document.links[i], 'click', decorate);
}
}
});
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
(function () {
if (window.BOOMR && (window.BOOMR.version || window.BOOMR.snippetExecuted)) {
return;
}
window.BOOMR = window.BOOMR || {};
window.BOOMR.snippetStart = new Date().getTime();
window.BOOMR.snippetExecuted = true;
window.BOOMR.snippetVersion = 12;
window.BOOMR.application = "core";
window.BOOMR.shopId = 24955928;
window.BOOMR.themeId = 82736349220;
window.BOOMR.url =
"https://cdn.shopify.com/shopifycloud/boomerang/shopify-boomerang-1.0.0.min.js";
var where = document.currentScript || document.getElementsByTagName("script")[0];
var parentNode = where.parentNode;
var promoted = false;
var LOADER_TIMEOUT = 3000;
function promote() {
if (promoted) {
return;
}
var script = document.createElement("script");
script.id = "boomr-scr-as";
script.src=window.BOOMR.url;
script.async = true;
parentNode.appendChild(script);
promoted = true;
}
function iframeLoader(wasFallback) {
promoted = true;
var dom, bootstrap, iframe, iframeStyle;
var doc = document;
var win = window;
window.BOOMR.snippetMethod = wasFallback ? "if" : "i";
bootstrap = function(parent, scriptId) {
var script = doc.createElement("script");
script.id = scriptId || "boomr-if-as";
script.src=window.BOOMR.url;
BOOMR_lstart = new Date().getTime();
parent = parent || doc.body;
parent.appendChild(script);
};
if (!window.addEventListener && window.attachEvent && navigator.userAgent.match(/MSIE [67]./)) {
window.BOOMR.snippetMethod = "s";
bootstrap(parentNode, "boomr-async");
return;
}
iframe = document.createElement("IFRAME");
iframe.src="about:blank";
iframe.title = "";
iframe.role = "presentation";
iframe.loading = "eager";
iframeStyle = (iframe.frameElement || iframe).style;
iframeStyle.width = 0;
iframeStyle.height = 0;
iframeStyle.border = 0;
iframeStyle.display = "none";
parentNode.appendChild(iframe);
try {
win = iframe.contentWindow;
doc = win.document.open();
} catch (e) {
dom = document.domain;
iframe.src="x-javascript:var d=document.open();d.domain='" + dom + "';void(0);";
win = iframe.contentWindow;
doc = win.document.open();
}
if (dom) {
doc._boomrl = function() {
this.domain = dom;
bootstrap();
};
doc.write("");
} else {
win._boomrl = function() {
bootstrap();
};
if (win.addEventListener) {
win.addEventListener("load", win._boomrl, false);
} else if (win.attachEvent) {
win.attachEvent("onload", win._boomrl);
}
}
doc.close();
}
var link = document.createElement("link");
if (link.relList &&
typeof link.relList.supports === "function" &&
link.relList.supports("preload") &&
("as" in link)) {
window.BOOMR.snippetMethod = "p";
link.href = window.BOOMR.url;
link.rel = "preload";
link.as = "script";
link.addEventListener("load", promote);
link.addEventListener("error", function() {
iframeLoader(true);
});
setTimeout(function() {
if (!promoted) {
iframeLoader(true);
}
}, LOADER_TIMEOUT);
BOOMR_lstart = new Date().getTime();
parentNode.appendChild(link);
} else {
iframeLoader(false);
}
function boomerangSaveLoadTime(e) {
window.BOOMR_onload = (e && e.timeStamp) || new Date().getTime();
}
if (window.addEventListener) {
window.addEventListener("load", boomerangSaveLoadTime, false);
} else if (window.attachEvent) {
window.attachEvent("onload", boomerangSaveLoadTime);
}
if (document.addEventListener) {
document.addEventListener("onBoomerangLoaded", function(e) {
e.detail.BOOMR.init({
producer_url: "https://monorail-edge.shopifysvc.com/v1/produce",
ResourceTiming: {
enabled: true,
trackedResourceTypes: ["script", "img", "css"]
},
});
e.detail.BOOMR.t_end = new Date().getTime();
});
} else if (document.attachEvent) {
document.attachEvent("onpropertychange", function(e) {
if (!e) e=event;
if (e.propertyName === "onBoomerangLoaded") {
e.detail.BOOMR.init({
producer_url: "https://monorail-edge.shopifysvc.com/v1/produce",
ResourceTiming: {
enabled: true,
trackedResourceTypes: ["script", "img", "css"]
},
});
e.detail.BOOMR.t_end = new Date().getTime();
}
});
}
})();
if (!isDuplicatedThankYouPageView()) {
setCookieIfThankYouPage();
window.ShopifyAnalytics.lib.page(
null,
{"pageType":"page","resourceType":"page","resourceId":7754416164}
);
}
});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src="//cdn.shopify.com/s/assets/shop_events_listener-2632023fb2795bd6668b6fbae05b661baba07afb3d62048f023763eca3cd96e3.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();