Формы являются наиболее широко используемым методом получения информации о пользователях. Большинство компаний используют очень простую формулу, состоящую из имени, адреса электронной почты и, возможно, чего-то более точного, например, компании или интереса, чтобы помочь создать профиль и (надеюсь) какую-то маркетинговую сегментацию.

Повсеместное распространение этого подхода показывает, насколько хорошо он работает, но многим компаниям не удается использовать истинную мощь форм для создания богатой и сегментированной информации о профилях пользователей.

Более подробные данные = больше сегментации = лучшие кампании = более высокая рентабельность инвестиций

Проблема с этим упрощенным подходом заключается в том, что большинство компаний полагаются только на «правду», которую им сообщает пользователь (очень легко выдать одноразовый адрес электронной почты или поддельное имя). Если ваша CRM начинает заполняться ложной информацией, это означает, что ваши кампании менее эффективны, и ваша рентабельность инвестиций начинает существенно снижаться.

Чтобы исправить это, нам нужно включить информацию, которую пользователь не может изменить. Или, что еще лучше, включить информацию, о которой пользователь даже не знает. Вот где проявляется сила скрытых полей формы.

Скрытые поля формы — это именно то поле, которое пользователь не может видеть и не может изменить его значение.

Представьте, что вы интернет-магазин, и у вас появляется всплывающее окно, когда пользователь начинает уходить с вашей страницы.

(Примечание: это только для демонстрации. Лично я бы не рекомендовал такое количество полей для всплывающего окна при выходе)

Скажем, я заполняю:

Я указал свое имя, адрес электронной почты и в раскрывающемся списке вариантов выбрал Facebook. Я нажимаю «Отправить», и эта информация теперь передается в CRM и / или почтовый клиент, а триггер электронной почты заброшенной страницы запускает купон на 15% в мой почтовый ящик.

Вроде сработало?

Это сработало. Я сконвертировался, и теперь у меня есть скидка 15%, которую я могу потратить на досуге.

Все выглядит хорошо, но этот выпадающий список не совсем точен. Я имею в виду, я думаю, что видел сообщение или рекламу на Facebook, но я действительно не знаю. Что ж, моя неточность приведет к тому, что CRM этого ритейлера будет неточным, и теперь они могут приписать лиды и возможную продажу каналу, который, возможно, не сгенерировал первую точку контакта (или последнюю точку контакта). Теперь их маркетинговый стратег собирается посмотреть, какие каналы конвертируются лучше всего, и порекомендует больше времени/бюджета/усилий каналу, который на самом деле может не обеспечивать окупаемость инвестиций, которую он/она ожидает.

Вот как это исправить

Вместо того, чтобы полагаться на то, что пользователь предоставит информацию о канале, мы можем использовать интеллектуальную комбинацию файлов cookie и скрытых полей, чтобы получить настоящую правду.

Вот как будет выглядеть новая форма:

Что тут происходит?

Теперь у нас есть два новых скрытых поля, которые будут динамически извлекать атрибуты кампании, такие как utm_source и utm_campaign, чтобы помочь правильно определить ROI маркетинговой кампании.

Вот как это работает

Начнем с очень простой формы. Никаких классных стилей или чего-то подобного. Мы можем обернуть наши скрытые поля встроенным стилем отображения none, чтобы пользователь их не видел.

<form action="/action_page.php"> First name:<br /> <input type="text" name="firstname" value="" /> <br /> Last name:<br /> <input type="text" name="lastname" value="" /> <br /> Email:<br /> <input type="email" name="email" value="" /> <br /> <div style="display: none;"> Source:<br /> <input type="text" name="source" value="" /> <br /> Campaign:<br /> <input type="text" name="campaign" value="" /> </div> <br /><br /> <input type="submit" value="Submit" /> </form>

Затем нам нужен javascript, чтобы добавить волшебства.

Во-первых, нам нужно иметь возможность установить и получить файл cookie.

// cookie setting function function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } // cookie getting function function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(";"); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == " ") { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }

Затем нам нужно получить параметры URL-адреса пользователя и найти utm_source и utm_campaign.

// get the url params function getParam(querystring) { var qstring = window.location.href .slice(window.location.href.indexOf("?") + 1) .split("&"); for (var i = 0; i < qstring.length; i++) { var urlparam = qstring[i].split("="); if (urlparam[0] == querystring) { return urlparam[1]; } } } var source = getParam("utm_source"); var campaign = getParam("utm_campaign");

Нам также нужно убедиться, что мы фиксируем реферера, если нет параметров кампании.

var referrer = function() { if (document.referrer === "") { return "direct"; } else if ( document.referrer.search("https?://(.*)google.([^/?]*)") === 0 ) { return "google"; } else if ( document.referrer.search("https?://(.*)bing.([^/?]*)") === 0 ) { return "bing"; } else if ( document.referrer.search("https?://(.*)yahoo.([^/?]*)") === 0 ) { return "yahoo"; } else if ( document.referrer.search("https?://(.*)facebook.([^/?]*)") === 0 ) { return "facebook"; } else if ( document.referrer.search("https?://(.*)twitter.([^/?]*)") === 0 ) { return "twitter"; } else if ( document.referrer.search("https?://(.*)pinterest.([^/?]*)") === 0 ) { return "pinterest"; } else if ( document.referrer.search("https?://(.*)instagram.([^/?]*)") === 0 ) { return "instagram"; } else { return "other"; } };

После этого находится машина для печенья. Эта магия здесь заключается в том, что он установит пользовательский файл cookie «true», если он уже посещал сайт раньше. Это гарантирует, что файлы cookie сохраняются на всех страницах и не изменятся, если пользователь снова вернется с другого канала.

function cookieMachine() { var user = getCookie("user"); if (user != "true") { setCookie("user", "true", 365); if (typeof campaign === "undefined") { setCookie("campaign", "organic", 365); } else { setCookie("campaign", campaign, 365); } if (typeof source === "undefined") { setCookie("source", referrer(), 365); } else { setCookie("source", source, 365); } } } cookieMachine();

Наконец, мы отправляем файлы cookie, чтобы заполнить эти скрытые поля параметрами кампании пользователя!

$("input[name='source']")[0].value = getCookie("source"); $("input[name='campaign']")[0].value = getCookie("campaign");

А тут все вместе:

$(document).ready(function() { // cookie setting function function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } // cookie getting function function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(";"); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == " ") { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } // get the url params function getParam(querystring) { var qstring = window.location.href .slice(window.location.href.indexOf("?") + 1) .split("&"); for (var i = 0; i < qstring.length; i++) { var urlparam = qstring[i].split("="); if (urlparam[0] == querystring) { return urlparam[1]; } } } var source = getParam("utm_source"); var campaign = getParam("utm_campaign"); var referrer = function() { if (document.referrer === "") { return "direct"; } else if ( document.referrer.search("https?://(.*)google.([^/?]*)") === 0 ) { return "google"; } else if ( document.referrer.search("https?://(.*)bing.([^/?]*)") === 0 ) { return "bing"; } else if ( document.referrer.search("https?://(.*)yahoo.([^/?]*)") === 0 ) { return "yahoo"; } else if ( document.referrer.search("https?://(.*)facebook.([^/?]*)") === 0 ) { return "facebook"; } else if ( document.referrer.search("https?://(.*)twitter.([^/?]*)") === 0 ) { return "twitter"; } else if ( document.referrer.search("https?://(.*)pinterest.([^/?]*)") === 0 ) { return "pinterest"; } else if ( document.referrer.search("https?://(.*)instagram.([^/?]*)") === 0 ) { return "instagram"; } else { return "other"; } }; function cookieMachine() { var user = getCookie("user"); if (user != "true") { setCookie("user", "true", 365); if (typeof campaign === "undefined") { setCookie("campaign", "organic", 365); } else { setCookie("campaign", campaign, 365); } if (typeof source === "undefined") { setCookie("source", referrer(), 365); } else { setCookie("source", source, 365); } } } cookieMachine(); $("input[name='source']")[0].value = getCookie("source"); $("input[name='campaign']")[0].value = getCookie("campaign"); });

Нужна помощь с этим? Свяжитесь с нами по электронной почте! [email protected]