Skip to content

Instantly share code, notes, and snippets.

@troex
Last active May 10, 2021 17:38
Show Gist options
  • Save troex/dd7dc23e72aa40221d72530babf1d0a8 to your computer and use it in GitHub Desktop.
Save troex/dd7dc23e72aa40221d72530babf1d0a8 to your computer and use it in GitHub Desktop.
Attribution snippet for Unbounce pages (legacy, using jQuery)
<script type="text/javascript">
window.Attribution=window.Attribution||[];window.Attribution.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];window.Attribution.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);window.Attribution.push(t);return window.Attribution}};for(var i=0;i<window.Attribution.methods.length;i++){var key=window.Attribution.methods[i];window.Attribution[key]=window.Attribution.factory(key)}window.Attribution.load=function(e){if(document.getElementById("attribution-js"))return;var t=document.createElement("script");t.type="text/javascript";t.id="attribution-js";t.async=true;t.src="//scripts.attributionapp.com/attribution.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};window.Attribution.load();
window.Attribution.projectId="YOUR_PROJECT_ID";
window.Attribution.page(window.ub && window.ub.page && window.ub.page.name);
}}();
</script>
<script type="text/javascript">
var attributionAlreadySubmitted = false;
var fallbackTrigger = undefined;
function attributionSubmit(e, $) {
var button = $(e.currentTarget);
var form = undefined;
var formName = 'Marketing Form Submitted';
// customize event name based on path
if (location.pathname == '/request-demo/') {
formName = 'Lead Form Submitted';
}
button.attr({ disabled: true });
if (button.closest('form').length) {
form = button.closest('form');
} else if (button.siblings('form').length) {
form = button.siblings('form');
} else if ($('.lp-pom-form form').length) {
form = $('.lp-pom-form form');
}
if (form) {
var traits = form.
serializeArray().
reduce(function (obj, item) {
if (item.name.indexOf('email') >= 0) item.name = 'email';
if (!item.name.match(/^(page|ub)/)) obj[item.name] = item.value;
return obj;
}, {});
Attribution.identify(traits);
} else {
Attribution.track('ERROR: Unbounce form not found');
}
Attribution.track(formName, {
button_name: $(e.currentTarget).text()
}, function() {
attributionSubmitForm(form, button);
});
fallbackTrigger = setTimeout(function() {
attributionSubmitForm(form, button);
}, 2500);
}
function attributionSubmitForm(form, button) {
if (!attributionAlreadySubmitted) {
attributionAlreadySubmitted = true;
button.attr({ disabled: false });
form.submit();
clearTimeout(fallbackTrigger);
attributionAlreadySubmitted = false;
} else {
// console.log('already submitted');
}
}
lp.jQuery(window).load(function() {
lp.jQuery(function($) {
Attribution.ready(function() {
$('.lp-pom-form .lp-pom-button').
unbind('click tap touchstart').
bind('click.formSubmit tap.formSubmit touchstart.formSubmit', function(e) {
if ($('.lp-pom-form form').valid()) attributionSubmit(e, $);
});
$('form').
unbind('keypress').
bind('keypress.formSubmit', function(e) {
if (e.which === 13 && e.target.nodeName.toLowerCase() !== 'textarea' && $('.lp-pom-form form').valid()) attributionSubmit(e, $);
});
});
});
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment