Tech DocsIntegrationTracking
Alternative Integrations

Alternative Integrations

Below are alternative methods for adding Parse.ly tracking to your site, if the default is not possible. Always replace ###### in the examples with your site id, e.g. mysite.com, as its registered with Parse.ly.

#Load the tracker via JavaScript

Use this method when you can't add custom HTML to your templates, or if your tag management system only allows JavaScript.

The following code dynamically creates an HTML <script> element, then loads the Parse.ly tracker in the standard way:

(function(d) {
    var b = d.body;
    var e = d.createElement('script');

    e.id = 'parsely-cfg';
    e.src = '//cdn.parsely.com/keys/######/p.js';
    b.appendChild(e);
})(document);

#Load the tracker in an iframe element

Use this method if you are unable to insert the Parse.ly tracker directly into the HTML markup of your pages, and must instead insert it into an iFrame:

First, on your server create a file called parsely.html with the following markup:

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<!-- START Parse.ly Include: Standard -->
<script id="parsely-cfg" src="//cdn.parsely.com/keys/######/p.js"></script>
<!-- END Parse.ly Include: Standard -->
</body>
</html>

Then, add an iframe element to all the trackable pages, with the src pointing to that HTML file.

<iframe name="parsely_tag" src="/path/to/parsely.html" style="display: none" width="0" height="0" tabindex="-1"></iframe>

The parsely.html file should be accessible on the same protocol (http/https), domain, and port as the page which contains the iframe itself or the JavaScript will fail to execute due to cross-site scripting limitations.

#The Enhanced JavaScript Snippet

In many integration contexts, it's easy to set up the basic integration to configure Parse.ly tracking after it has loaded. In some other contexts, getting the relative load order of various components right is more difficult. Integrations based on Google Tag Manager are one context in which this issue can arise.

For such situations, Parse.ly provides an "enhanced" JavaScript snippet that provides an abstraction over the timing of the Parse.ly tracker's load sequence. To use the enhanced snippet, replace the Basic Parse.ly integration code on your webpage with the following (replacing ###### with your Parse.ly site id, e.g. mysite.com):

<script type="text/javascript">(function(){
var parsely=window.PARSELY=window.PARSELY||{};if(parsely._snippetVersion="1.0.0",!parsely.loaded)if(parsely._snippetInvoked)try{window.console&&console.error&&console.error("Parsely snippet included twice")}catch(e){}else{parsely._snippetInvoked=!0,parsely._stubs={onStart:[]},parsely._buildStub=function(e){return function(){parsely._stubs[e].push(arguments)}};for(var curStub in parsely._stubs)parsely._stubs.hasOwnProperty(curStub)&&(parsely[curStub]=parsely._buildStub(curStub))}parsely._load=function(e,s){s=void 0===s?"cdn.parsely.com":s;var r=document.createElement("script");r.id="parsely-cfg",r.type="text/javascript",r.async=!0,r.setAttribute("data-parsely-site",e),r.src="//"+s+"/keys/"+e+"/p.js",document.body.appendChild(r)};

// Parse.ly users: put your site id (aka apikey) in the call to _load() here (example: parsely._load("mysite.com"))
parsely._load("######");
})();</script>

This allows you to perform setup and configuration in PARSELY.onStart. For example, you might disable autotracking and then call trackPageView directly:

<script type="text/javascript">!(function(){
PARSELY.onStart(function() {
    PARSELY.autotrack = false;
    PARSELY.trackPageView();
});
})();</script>

When using the enhanced snippet, calls to onStart should be included on your webpage immediately after the snippet.

The enhanced snippet is only supported in tracker versions above 1.6.0. If you're unsure of your tracker version, contact support@parsely.com

#Configure the tracker to always use browser localStorage instead of cookies

By default, the Parse.ly tracker uses cookies to keep track of visitors and sessions. However, this data can be stored in each browser's window.localStorage instead.

To use localStorage instead of cookies, simply make sure PARSELY.use_localstorage = true prior to loading the tracker, as in this example:

<script>
    window.PARSELY = window.PARSELY || {
        // ... other Parsely configuration options
        use_localstorage: true
        // ... other Parsely configuration options
    };
</script>

<!-- START Parse.ly Include -->
<!-- ...insert the parse.ly tracker code here... -->
<!-- END Parse.ly Include -->

One major limitation of localStorage is that, unlike cookies, data does not persist across subdomains. This means that if your site spans multiple subdomains (such as blog.parsely.com and help.parsely.com), cookies can use the same visitor and session data as a user navigates between them, but localStorage cannot. That difference would result in higher visitor counts and more new visitors in the Parse.ly dashboard and API when using localStorage.

The Parse.ly tracker automatically uses localStorage in browsers such as

Safari where cookie expiration would otherwise prevent accurate data collection. No additional configuration is required for this behavior.

Ready to get started with Parse.ly?

Questions?

Or

rocket emoji