我们确实有一些广告活动(Google,facebook等)。当用户到达目标网页(abo.mysite.com)时,他确实具有utm参数utm_source=theCampaignSource
。当用户单击CTA时,CTA会提供一个新的UTM utm_source=abo
,然后他转到shop.mysite.com。
我们无法从abo.mysite.com删除UTM。
是否可以检查用户是否已经拥有UTM,以及何时有用户可以将其保留直到shop.mysite.com?这样我们知道用户来自Google(...)吗?
我们知道如何设置此事物是一个非常糟糕的做法,我们正在努力。
我发现了一个操纵网站链接的代码段:
links.forEach(function(link){
link.setAttribute("href","abo.mysite.com")
})
但是我无法正常工作-因为我确实缺乏经验。
更新
对于我的特定需求,可以这样制作:
1)从网站上的链接中删除现有的UTM
<script>
var link = document.getElementsByTagName("a");
for (var i = 0; i < link.length; i++) {
link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}
</script>
2)将UTM散列到URL中
<script>
if(!window.jQuery) {
document.write('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">\x3C/script>');
}
</script>
<script type="text/javascript">
$(document).ready(function() {
function getUrlVars() {
var vars = [],
hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var parameters = getUrlVars();
var utm_source = decodeURIComponent(parameters['utm_source']);
var utm_campaign = decodeURIComponent(parameters['utm_campaign']);
var utm_medium = decodeURIComponent(parameters['utm_medium']);
</script>
3)用散列的UTM重写网站上的每个URL
<script>
$('a').each(function(){
$(this).attr('href', $(this).attr('href') + '?utm_source=' + utm_source + '&utm_campaign' + utm_campaign + '&utm_medium' + utm_medium);
});
});
修改 感谢Michele Pisani
这很好用-但是,如果用户没有UTM,并且他单击该按钮,则UTM将设置为undefined
有没有一种方法可以在用户已经拥有URL的情况下从URL设置UTM参数,或者在用户在URL中没有UTM的情况下使用现有的UTM(在按钮中进行硬编码)。
编辑2并更新 最后-在你们的帮助下-我找到了解决方案:
<script>
var link = document.querySelectorAll('a:not([href*="#"])');
for (var i = 0; i < link.length; i++) {
//link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}
</script>
<script type="text/javascript">
$(document).ready(function() {
function getUrlVars() {
var vars = [],
hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
//var parameters = getUrlVars();
//var utm_source = decodeURIComponent(parameters['utm_source']);
//var utm_campaign = decodeURIComponent(parameters['utm_campaign']);
//var utm_medium = decodeURIComponent(parameters['utm_medium']);
var url_string = window.location.href; //window.location.href
var url = new URL(url_string);
//var c = url.searchParams.get("c");
var utm_source = url.searchParams.get("utm_source");
var utm_campaign = url.searchParams.get("utm_campaign");
var utm_medium = url.searchParams.get("utm_medium");
$('a:not([href^="#"])').each(function() {
if(utm_source != "" && utm_source != null){
var href = $(this).attr("href");
href = href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
$(this).attr("href",href);
$(this).attr('href', $(this).attr('href') + '?utm_source=' + utm_source + '&utm_campaign=' + utm_campaign + '&utm_medium=' + utm_medium);
}
});
});
</script>
答案 0 :(得分:1)
使用JavaScript,要从页面中的链接中删除UTM参数,您可以使用正则表达式尝试使用此功能:
var link = document.getElementsByTagName("a");
for (var i = 0; i < link.length; i++) {
link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}
如果您使用的是Google跟踪代码管理器,则可以将其添加到自定义HTML标记中,并在DOM Ready上触发它。
答案 1 :(得分:1)
如果要将片段保留在URL中,可以通过以下方式修改函数:
SELECT SUM(row_count) total_row_count, listagg(table_name, ' ') tab_list, count(*) num_tabs
FROM snowflake.account_usage.tables
WHERE table_catalog = 'DB NAME HERE'
AND table_schema = 'SCHEMA NAME HERE'
AND table_type = 'BASE TABLE'
AND deleted IS NULL;