[英]Google Tag Manager push event
我为我们公司的登录页面创建了一个表单。 我们的营销部门向我发送了此 GTM 代码以包含在标题中。
<!-- Google Tag Manager -->
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-*****');
</script>
<!-- End Google Tag Manager -->
我已经做到了。 提交表单后,我应该将其推送给 Google 跟踪代码管理器。
我的html表单
<form id="landing-form" class="landing-form" action="php/start.php" method="POST">
<div class="controls">
<div class="form-group text-center">
<input id="name" type="text" name="name" placeholder="Name" required="required" autocomplete="off">
</div>
....(rest of form)
<button type="submit" name="submitLanding" class="submit center-block"><span>Send</span></button>
</div>
提交表单后,数据将存储在数据库中。 我想在保存到数据库后执行这个推送事件。 我的 php 脚本在 php 中的 js 代码处完全中断。 请帮助我做错了什么。 我不知道GTM!
我的PHP:
if(isset($_POST['submitLanding'])){
try {
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$comment = $_POST['comment'];
$town = $_POST['town'];
$language = $_POST['language'];
$newsletter = $_POST['newsletter'];
$applicant = new Applicant();
$applicant->setName($name);
$applicant->setPhone($phone);
$applicant->setEmail($email);
$applicant->setComment($comment);
$applicant->setTown($town);
$applicant->setLanguage($language);
if($newsletter == 'yes'){
$applicant->setNewsletter(1);
}elseif ($newsletter == 'no'){
$applicant->setNewsletter(0);
}
$date = new DateTime("now", new DateTimeZone('Europe/Istanbul'));
$applicant->setCreated($date->format('Y-m-d H:i:s'));
$applicantDao = new ApplicantDao();
$applicantDao->create($applicant);
echo "
<script type=\"text/javascript\">
dataLayer.push('event': 'formsubmission');
</script>
";
} catch (Exception $e) {
}}header("Location: ../landing.html");
使用 Javascript 的解决方案谢谢 waldo!
setTimeout(function(){
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({'event': 'formsubmission'});
window.location.href = '......landing url';
}, 5000);
我的猜测是使用您的标头调用。 通常,带有位置键的标头表示您打算进行重定向。 如果您的服务器正在编写脚本以将数据推送到 GTM 的数据层,然后立即重定向用户,那么 GTM 将没有时间观察数据层推送事件,映射到它需要的变量,触发任何依赖它并发送适当的标签。 这不是即时操作。
我的建议是您考虑向 GTM 添加另一个标签,该标签在页面运行时调用一些 POST 方法到您的 PHP 后端,由您在此处的自定义事件触发。 观察到时,超时一秒钟,然后执行重定向。 这个想法是,考虑到让 GTM 适应数据层更新的延迟,如果该标签已被触发,其他标签也会触发,因此再给它一秒钟来结束应该意味着您的数据在重定向之前已正确导出。
好的,通常现代表单不使用原生 html 方式提交表单。 您在这里有几个选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.