Created
July 15, 2021 19:41
-
-
Save markrittman/f9a4192dd0c803418c9cabfefcc603e3 to your computer and use it in GitHub Desktop.
JS Snippet for loading segment/RS Javascript tracking scripts together (the SEGMENT_WRITE_KEY RUDDERSTACK_WRITE_KEY DATA_PLANE_URL need to be replaced, and you can remove comments and minify as needed)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script type="text/javascript"> | |
(function(){ | |
// Create a queue, but don't obliterate an existing one! | |
var analytics = window.analytics = window.analytics || []; | |
// If the real analytics.js is already on the page return. | |
if (analytics.initialize) return; | |
// If the snippet was invoked already show an error. | |
if (analytics.invoked) { | |
if (window.console && console.error) { | |
console.error('Segment snippet included twice.'); | |
} | |
return; | |
} | |
// Invoked flag, to make sure the snippet | |
// is never invoked twice. | |
analytics.invoked = true; | |
// A list of the methods in Analytics.js to stub. | |
analytics.methods = [ | |
'trackSubmit', | |
'trackClick', | |
'trackLink', | |
'trackForm', | |
'pageview', | |
'identify', | |
'reset', | |
'group', | |
'track', | |
'ready', | |
'alias', | |
'debug', | |
'page', | |
'once', | |
'off', | |
'on', | |
'addSourceMiddleware', | |
'addIntegrationMiddleware', | |
'setAnonymousId', | |
'addDestinationMiddleware' | |
]; | |
// Define a factory to create stubs. These are placeholders | |
// for methods in Analytics.js so that you never have to wait | |
// for it to load to actually record data. The `method` is | |
// stored as the first argument, so we can replay the data. | |
analytics.factory = function(method){ | |
return function(){ | |
var args = Array.prototype.slice.call(arguments); | |
args.unshift(method); | |
analytics.push(args); | |
return analytics; | |
}; | |
}; | |
// For each of our methods, generate a queueing stub. | |
for (var i = 0; i < analytics.methods.length; i++) { | |
var key = analytics.methods[i]; | |
analytics[key] = analytics.factory(key); | |
} | |
// Define a method to load Analytics.js from our CDN, | |
// and that will be sure to only ever load it once. | |
analytics.load = function(key, options){ | |
// Create an async script element based on your key. | |
var script = document.createElement('script'); | |
script.type = 'text/javascript'; | |
script.async = true; | |
script.src = 'https://cdn.segment.com/analytics.js/v1/' | |
+ key + '/analytics.min.js'; | |
// Insert our script next to the first script element. | |
var first = document.getElementsByTagName('script')[0]; | |
first.parentNode.insertBefore(script, first); | |
analytics._loadOptions = options; | |
}; | |
// Add a version to keep track of what's in the wild. | |
analytics.SNIPPET_VERSION = '4.1.0'; | |
// Load Analytics.js with your key, which will automatically | |
// load the tools you've enabled for your account. Boosh! | |
analytics.load("<SEGMENT_WRITE_KEY>"); | |
// Make the first page call to load the integrations. If | |
// you'd like to manually name or tag the page, edit or | |
// move this call however you'd like. | |
analytics.page(); | |
// analytics ready callback | |
analytics.ready(function() { | |
// INITIALIZE RUDDER SDK with setAnonymousId | |
!function(){var e=window.rudderanalytics=window.rudderanalytics||[];e.methods=["load","page","track","identify","alias","group","ready","reset","getAnonymousId","setAnonymousId"],e.factory=function(t){return function(){var r=Array.prototype.slice.call(arguments);return r.unshift(t),e.push(r),e}};for(var t=0;t<e.methods.length;t++){var r=e.methods[t];e[r]=e.factory(r)}e.loadJS=function(e,t){var r=document.createElement("script");r.type="text/javascript",r.async=!0,r.src="https://cdn.rudderlabs.com/v1/rudder-analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(r,a)},e.loadJS(), | |
e.load("<RUDDERSTACK_WRITE_KEY>", "<DATA_PLANE_URL>"), | |
e.setAnonymousId(window.analytics.user().anonymousId()) | |
e.page()}(); | |
}); | |
})(); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment