При размещении контекстной рекламы в Яндекс.Директ зачастую возникает проблема невозможности использования автоматической пометки кампаний через _openstat. В результате приходится помечать кампании вручную, используя UTM-метки. Данная модификация скрипта позволяет использовать автоматическую пометку кампаний в Яндекс.Директ совместно с отслеживанием Google Analytics.
<!-- Google Analytics openstat code by Netpeak start -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
var OpenStatParser = {
_params: {},
_parsed: false,
_decode64: function(data) {
if (typeof window['atob'] === 'function') {
return atob(data);
}
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
dec = "",
tmp_arr = [];
if (!data) {
return data;
}
data += '';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join('');
return dec;
},
_parse: function() {
var prmstr = window.location.search.substr(1);
var prmarr = prmstr.split('&');
this._params = {};
for (var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split('=');
this._params[tmparr[0]] = tmparr[1];
}
this._parsed = true;
},
hasMarker: function() {
if (!this._parsed) {
this._parse();
}
return (typeof this._params['_openstat'] !== 'undefined') ? true : false;
},
buildCampaignParams: function() {
if (!this.hasMarker()) {
return false;
}
var openstat = this._decode64(this._params['_openstat']);
var statarr = openstat.split(';');
return 'utm_campaign=' + statarr[1] + '&utm_source=' + statarr[0] + '&utm_medium=cpc&utm_content=' + statarr[2];
}
}
if (OpenStatParser.hasMarker()) {
var campaignParams = OpenStatParser.buildCampaignParams();
if (campaignParams !== false) {
_gaq.push(['_set', 'campaignParams', campaignParams]);
}
}
_gaq.push(['_addOrganic', 'images.yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'blogs.yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'video.yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'yandex.ru', 'query']);
_gaq.push(['_addOrganic', 'images.yandex.ua', 'text']);
_gaq.push(['_addOrganic', 'blogs.yandex.ua', 'text']);
_gaq.push(['_addOrganic', 'video.yandex.ua', 'text']);
_gaq.push(['_addOrganic', 'yandex.ua', 'text']);
_gaq.push(['_addOrganic', 'yandex.ua', 'query']);
_gaq.push(['_addOrganic', 'images.yandex', 'text']);
_gaq.push(['_addOrganic', 'blogs.yandex', 'text']);
_gaq.push(['_addOrganic', 'video.yandex', 'text']);
_gaq.push(['_addOrganic', 'yandex', 'text']);
_gaq.push(['_addOrganic', 'yandex', 'query']);
_gaq.push(['_addOrganic', 'go.mail.ru', 'q']);
_gaq.push(['_addOrganic', 'mail.ru', 'q']);
_gaq.push(['_addOrganic', 'images.google.ru', 'q']);
_gaq.push(['_addOrganic', 'maps.google.ru', 'q']);
_gaq.push(['_addOrganic', 'google.com.ua', 'q']);
_gaq.push(['_addOrganic', 'rambler.ru', 'words']);
_gaq.push(['_addOrganic', 'nova.rambler.ru', 'query']);
_gaq.push(['_addOrganic', 'nova.rambler.ru', 'words']);
_gaq.push(['_addOrganic', 'gogo.ru', 'q']);
_gaq.push(['_addOrganic', 'nigma.ru', 's']);
_gaq.push(['_addOrganic', 'search.qip.ru', 'query']);
_gaq.push(['_addOrganic', 'webalta.ru', 'q']);
_gaq.push(['_addOrganic', 'sm.aport.ru', 'r']);
_gaq.push(['_addOrganic', 'meta.ua', 'q']);
_gaq.push(['_addOrganic', 'search.bigmir.net', 'z']);
_gaq.push(['_addOrganic', 'search.i.ua', 'q']);
_gaq.push(['_addOrganic', 'index.online.ua', 'q']);
_gaq.push(['_addOrganic', 'web20.a.ua', 'query']);
_gaq.push(['_addOrganic', 'search.ukr.net', 'q']);
_gaq.push(['_addOrganic', 'search.ukr.net', 'search_query']);
_gaq.push(['_addOrganic', 'search.com.ua', 'q']);
_gaq.push(['_addOrganic', 'search.ua', 'q']);
_gaq.push(['_addOrganic', 'poisk.ru', 'text']);
_gaq.push(['_addOrganic', 'go.km.ru', 'sq']);
_gaq.push(['_addOrganic', 'liveinternet.ru', 'ask']);
_gaq.push(['_addOrganic', 'gde.ru', 'keywords']);
_gaq.push(['_addOrganic', 'affiliates.quintura.com', 'request']);
_gaq.push(['_addOrganic', 'akavita.by', 'z']);
_gaq.push(['_addOrganic', 'search.tut.by', 'query']);
_gaq.push(['_addOrganic', 'all.by', 'query']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
window.onload = function() {
if(_gaq.I==undefined){
_gaq.push(['_trackEvent', 'tracking_script', 'loaded', 'ga.js', ,true]);
ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
s = document.getElementsByTagName('script')[0];
gaScript = s.parentNode.insertBefore(ga, s);
} else {
_gaq.push(['_trackEvent', 'tracking_script', 'loaded', 'dc.js', ,true]);
}
};
</script>
<!-- Google Analytics openstat code by Netpeak end -->
<!-- Google Universal Analytics openstat code by Netpeak start -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXX-X');
var OpenStatParser = {
_params: {},
_parsed: false,
_decode64: function(data) {
if (typeof window['atob'] === 'function') {
return atob(data);
}
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
dec = "",
tmp_arr = [];
if (!data) {
return data;
}
data += '';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join('');
return dec;
},
_parse: function() {
var prmstr = window.location.search.substr(1);
var prmarr = prmstr.split('&');
this._params = {};
for (var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split('=');
this._params[tmparr[0]] = tmparr[1];
}
this._parsed = true;
},
hasMarker: function() {
if (!this._parsed) {
this._parse();
}
return (typeof this._params['_openstat'] !== 'undefined') ? true : false;
},
buildCampaignParams: function() {
if (!this.hasMarker()) {
return false;
}
var openstat = this._decode64(this._params['_openstat']);
var statarr = openstat.split(';');
utmcampaign = statarr[1];
utmsource = statarr[0];
utmcontent = statarr[2];
}
}
if (OpenStatParser.hasMarker()) {
var campaignParams = OpenStatParser.buildCampaignParams();
if (campaignParams !== false) {
ga('set', {'campaignName': utmcampaign, 'campaignSource': utmsource, 'campaignMedium': 'cpc', 'campaignContent': utmcontent});
}
}
ga('send', 'pageview');
</script>
<!-- Google Universal Analytics openstat code by Netpeak end -->
<!-- Google Universal Analytics openstat code via GTM by Netpeak start -->
<script type="text/javascript">
var OpenStatParser = {
_params: {},
_parsed: false,
_decode64: function (data) {
if (typeof window['atob'] === 'function') {
return atob(data);
}
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
dec = "",
tmp_arr = [];
if (!data) {
return data;
}
data += '';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join('');
return dec;
},
_parse: function () {
var prmstr = window.location.search.substr(1);
var prmarr = prmstr.split('&');
this._params = {};
for (var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split('=');
this._params[tmparr[0]] = tmparr[1];
}
this._parsed = true;
},
hasMarker: function () {
if (!this._parsed) {
this._parse();
}
return (typeof this._params['_openstat'] !== 'undefined') ? true : false;
},
buildCampaignParams: function () {
if (!this.hasMarker()) {
return false;
}
var openstat = this._decode64(this._params['_openstat']);
var statarr = openstat.split(';');
utmcampaign = statarr[1];
utmsource = statarr[0];
utmcontent = statarr[2];
}
}
if (OpenStatParser.hasMarker()) {
var campaignParams = OpenStatParser.buildCampaignParams();
if (campaignParams !== false) {
dataLayer.push({'campaignName': utmcampaign, 'campaignSource': utmsource, 'campaignMedium': 'cpc', 'campaignContent': utmcontent, 'event': 'openStatParsed'});
}
}
</script>
<!-- Google Universal Analytics openstat code via GTM by Netpeak -->
В настройках задайте fields to set:
Понравилась наша разработка? Поделитесь ей в социальных сетях: