Установка целей - сразу для Метрики и Analytics универсальный и простой скрипт целей для Яндекс Метрика и Google Analytics
Заказать услугу: ""
Содержание с переходом
- SEND – любая отправка данных через форму, конверсионная цель.
- TIME – человек активно провел 40 секунд на сайте, цель для ретаргетинга и измерения качества трафика.
Добавляем цели
Цель SEND вешается каждые 5 секунд на формы заявок в которых присутствует тег FORM, такая частота необходима для таких случаев, когда форма генерируется автоматически. Например: всплывающие окна обратных звонков или онлайн-чат. Но не будет работать, если на форме отправки данных отсутствует тег FORM или/и данные формы отправляются методом JavaSctript.Цель TIME срабатывает после 40 секунд (это значение можно поменять) активного посещения, то есть счетчик начнет срабатывать после того, как человек выполнил клик или прокрутку на сайте и отключается, если человек ушел со страницы и продолжает отчет, когда, не закрывая вкладу вернулся к вам и продолжает изучать вашу страницу. Можно сказать, эта цель имитирует «отказ», если она не была достигнута.
Установка скрипта на цели TIME и SEND
Итого, установка скрипта, добавляет следующие цели события в Яндекс.Метрике:SENDall – составная цель в Яндекс.Метрике в виде воронки в один шаг, объединяет все конверсионные формы в цель SEND + внешние цели от сервисов сбора контактных данных, таких как: онлайн-чат, заказ звонка, ловец лидов. В итоге фиксируется как 1 конверсия со всех событий.
SEND – срабатывает, когда клиент отправляет контактную информацию, обычно через встроенные формы на сайте. Может срабатывать на посещение целевых страниц означающих заявку, перехватывает конверсионные цели с внешних сервисов
GOOD – цель отражает полезное действие на сайте, любое срабатывание из целей FORM, SEND, CLICK_TEL, CLICK_EMAIL, CLICK_MES, CLICK_MAP, CONTACT, PAY, COPY_EMAIL, COPY_TEL.
TIME – срабатывает после 40 секунд (опционально) активного просмотра текущей страницы, где учитывая активность браузера, прокрутка страницы, выделение, клики
FORM – человек начал заполнять конверсионную форму перед достижением цели SEND
SPAM – цель срабатывает, когда SEND был оставлен быстрее TIME, не срабатывает для конверсионных страниц
NOSPAM – цель срабатывает, когда SEND был оставлен после цели TIME, не срабатывает для конверсионных страниц
ERROR – цель срабатывает при посещении битой страницы 404 Not Found / Ресурс не найден
CLICK_TEL – клик по ссылке с номером телефона
CLICK_EMAIL – клик по ссылке с email адресом
CLICK_MES – клик по мессенджерам
CLICK_SOC – клик по социальным ссылкам
CLICK_MAP – клик с переходом на карту
CLICK_FILE – клик на скачивание файла по прямой ссылке
CLICK_PRINT – клик по кнопке на печать
HOVER_MES – наведение курсора по мессенджерам
HOVER_TEL – наведение курсора по номеру телефона
HOVER_EMAIL – наведение курсора на емейл
HOVER_FORM – наведение курсора на форму заявки
COPY – копирование любого текста на сайте
COPY_TEL – при копировании попал номер телефона
COPY_EMAIL – при копировании попал емейл адрес
Воронка SCROLL в виде следующих шагов:
SCROLL25 – прокрутка от 25% страницы сайта
SCROLL50 – прокрутка от 50% страницы сайта
SCROLL75 – прокрутка от 75% страницы сайта
SCROLL100 – прокрутка 100% страницы сайта
Воронка PAGE в виде следующих шагов:
PAGE2 – просмотр 2 страниц
PAGE3 – просмотр 3 страниц
PAGE4 – просмотр 4 страниц
PAGE5 – просмотр 5 страниц
PAGE6 – просмотр 6 страниц
Воронка SEC в виде следующих шагов:
SEC5 – просмотр сайта 5 секунд
SEC15 – просмотр сайта 15 секунд
SEC30 – просмотр сайта 30 секунд
SEC60 – просмотр сайта 60 секунд
SEC120 – просмотр сайта 120 секунд
Количество дней с последнего визита, не подходит для использования в воронке!
Начинает работать с даты установки скрипта, а не счетчика.
DAY_0 – прошло 30 минут и менее 24 часов
DAY_1 – прошел 1 день и менее 2 дней
DAY_2-3 – прошло 2 дня и менее 3 дней
DAY_4-7 – прошло 3 дня и менее 7 дней
DAY_8-15 – прошло 7 дней и менее 15 дней
DAY_16-31 – прошло 15 дней и менее 31 день
DAY_32-63 – прошло 31 день и менее 63 дней
DAY_64-127 – прошло 63 дня и менее 127 дней
DAY_128-255 – прошло 128 дней и менее 255 дня
Итого 45 целей, которые подходят для любого сайта.
Дополнительные цели, актуальны для интернет-магазинов:
SEARCH – цель срабатывает при поиске по сайту
CONTACT – посещение страницы «Контакты»
CART – посещение страницы «Корзина»
PAY – человек возможно оплатил, вернулся на сайт после платежной системы
Следующие цели требуют ручной настройки под каждый проект
ORDER – посещение страницы «Оформление заказа»
CART_ADD – добавление товара в корзину
LOGIN – человек авторизовался
REG – человек прошел регистрацию
Воронка продаж для интернет-магазинов, по шагам, где нулевой шаг это визит сайта:
1. Добавил в корзину (например CART_ADD )
2. Просмотр корзины (например CART )
3. Оформление заказа (например ORDER )
4. Спасибо за заказ (например SEND )
Цели достижение которых нужно настроить при интеграции с CRM системой
CRM_ADD – заявка добавлена в CRM
CRM_WORK – принято в работу (иногда может передавать стоимость сделки)
CRM_OK – оплаченные (передача стоимости сделки)
CRM_CANCEL – хорошие заявки, но закрылись без оплаты
CRM_SPAM – плохое обращение, не по теме или спам
Рекомендудемые названия для целей:
CALC - взаимодействие с формой калькуляции или онлайн расчета
CHAT - посетитель отправил сообщение в чат
CLICK_CHAT - посетитель открыл или кликнул по чату
CLICK_POPUP - посетитель открыл форму заявки
CLICK_BTN - посетитель нажал на кнопку
HOVER_BTN - посетитель навел на кнопку
Цели автоматически работающие в TurboS
При наличии ВидеоВиджета:
WIDGET_VIDEO_SHOW – загрузился видеовиджет
WIDGET_VIDEO_OPEN – открыли видеовиджет
WIDGET_VIDEO_CLICK – нажали на целевую кнопку видеовиджета
WIDGET_VIDEO_CLOSE – закрыли видеовиджет нажав на крестик
При наличии ЛайкВиджета:
WIDGET_LIKE_SHOW – показался лайквиджет
WIDGET_LIKE_CLOSE – сразу закрыли лайквиджет
WIDGET_LIKE_YES – ответили ДА на лайквиджет
WIDGET_LIKE_NO – ответили НЕТ на лайквиджет
При наличии Квиза:
QUIZ_VIEW – навел курсор на квиз
QUIZ_OPEN – открыли квиз, если был спрятан в кнопку
QUIZ_STEP1 – ответ на 1 вопрос квиза, так и другие вопросы
QUIZ_FORM – увидел форму заявки или навел курсор
QUIZ_SEND – отправили заявку с квиза
Быстрый импорт целей в Google Аналитика 3
Для целей в Fаcebооk дублем срабатывают стандартные события:
CART_ADD=AddToCart
REG=CompleteRegistration
CLICK_TEL=Contact
CLICK_EMAIL=Contact
CLICK_MES=Contact
CLICK_MAP=FindLocation
CONTACT=FindLocation
FORM=InitiateCheckout
SEND=Lead
SEARCH=Search
Добавляем скрипт
Устанавливаем код перед закрывающем тегом </BODY> после установки счетчиков или без счетчиков в GTM с созданием внутри скрипта:<!-- Универсально от SeoUp.su цели TIME и SEND --> <script type="text/javascript"> var ts = new Object(); ts.ymNumber = ""; ts.gaNumber = ""; ts.fbNumber = ""; ts.ymCreate = true; ts.gaCreate = false; ts.fbCreate = false; ts.bLoadjQuery = false; ts.bAddTagForm = false; ts.fForm = "FORM"; ts.bFormSEND = true; ts.fRequired = "INPUT.tel,INPUT#tel,INPUT.phone,INPUT#phone,INPUT[name='tel'],INPUT[name='phone'],INPUT[type='tel']"; ts.bRequired = true; ts.fBut = ""; ts.bMask = false; ts.fMask = ts.fRequired; ts.sMask = "+9(999)999-99-99"; ts.bDebugEnable = true; ts.bDebugDisplay = false; ts.bDebugAlert = false; ts.secMax = 40; ts.priceTIME = 0; ts.priceSEND = 0; ts.mGOOD = 'FORM,SEND,CLICK_TEL,CLICK_EMAIL,CLICK_MES,CLICK_MAP,CONTACT,PAY'; ts.mParam = 'yclid,gclid,utm_source,utm_medium,utm_campaign,utm_content,utm_term,_openstat,from,ref'; ts.mCoal = { "form": [{ valueForm: "FORM[action*='login'],FORM#login,FORM.login,FORM.login-form,FORM#loginform,FORM.loginform,FORM.auth,FORM.auth-form,FORM#avtorization-form,FORM.avtorization-form,FORM[name='form_auth'],FORM#auth-page-form", valueInput: "INPUT[type='password']", valueRequired: true, valueBut: "", goal: "LOGIN", sum: 0 }, { valueForm: "FORM[action*='register'],FORM[action*='create-account'],FORM#register,FORM.register,FORM.register-form,FORM.reg,FORM.reg-form,FORM#registraion-page-form,FORM#registraion-page-form", valueInput: "INPUT[type='password']", valueRequired: true, valueBut: "", goal: "REG", sum: 0 } ], "click": [{ value: ".b24-widget-button-social-item,[href*='yelp.com'],[href*='vk.me'],[href*='vk.com'],[href*='vkontakte.ru'],[href*='instagram.com'],[href*='ok.ru'],[href*='facebook.com'],[href*='twitter.com'],[href*='youtube.com'],[href*='rutube.ru'],[href*='telegram.org'],[href*='odnoklassniki.ru'],[href*='plus.google.com'],[href*='my.mail.ru'],[href*='linkedin.com'],[href*='zen.yandex.ru'],[href*='tiktok.com']", goal: "CLICK_SOC", sum: 0 }, { value: "[href^='tg:'],[href^='whatsapp:'],[href^='skype:'],[href*='skype.com'],[href^='viber:'],[href*='whatsapp.com'],[href*='wa.me'],[href*='t.me'],[href*='telegram.me'],[href*='teleg.one'],[href*='tele.click'],[href*='wa.link'],[href*='wa.clck.bar']", goal: "CLICK_MES", sum: 0 }, { value: "[href*='yandex.ru/maps/'],[href*='google.ru/maps/'],[href*='google.com/maps/'],[href*='2gis.ru'],[href*='maps.app.goo.gl']", goal: "CLICK_MAP", sum: 0 }, { value: "[href$='.3gp'],[href$='.7z'],[href$='.aac'],[href$='.apk'],[href$='.avi'],[href$='.csv'],[href$='.db'],[href$='.djvu'],[href$='.dmg'],[href$='.doc'],[href$='.docx'],[href$='.exe'],[href$='.flac'],[href$='.flv'],[href$='.gz'],[href$='.iso'],[href$='.key'],[href$='.midi'],[href$='.mka'],[href$='.mkv'],[href$='.mov'],[href$='.mp3'],[href$='.mp4'],[href$='.mpd'],[href$='.mpeg'],[href$='.mpg'],[href$='.msi'],[href$='.odt'],[href$='.ogg'],[href$='.pdf'],[href$='.pkg'],[href$='.pps'],[href$='.ppt'],[href$='.pptm'],[href$='.pptx'],[href$='.rar'],[href$='.rtf'],[href$='.sql'],[href$='.tar'],[href$='.torrent'],[href$='.txt'],[href$='.vcf'],[href$='.wav'],[href$='.wma'],[href$='.wmf'],[href$='.wmv'],[href$='.xls'],[href$='.xlsm'],[href$='.xlsx'],[href$='.zip']", goal: "CLICK_FILE", sum: 0 }, { value: "[href^='tel:']", goal: "CLICK_TEL", sum: 0 }, { value: "[href^='mailto:']", goal: "CLICK_EMAIL", sum: 0 }, { value: "[href*='window.print']", goal: "CLICK_PRINT", sum: 0 } ], "url": [{ value: /(\?|&)(q|s|search|query|text)=/i, goal: "SEARCH", sum: 0 }, { value: /(contact|kontakt|контакт)/i, goal: "CONTACT", sum: 0 }, { value: /(cart|basket|order)/i, goal: "CART", sum: 0 }, { value: /(\/order\/make\/|\/checkout\/|\/order\/)/i, goal: "ORDER", sum: 0 }, { value: /(order_?id=\d+|ORDER_ID=\d+)/i, goal: "PAY", sum: 0 }, { value: /(thank|order_?id=\d+|tilda\/form\d+\/submitted|checkout\/success|ORDER_ID=\d+)/i, goal: "SEND", sum: ts.priceSEND }, ], "ajax": [{ valueUrl: /(index\.php\?route=checkout\/cart\/add|\/ajax\/actualBasket\.php\?iblockID=)/, valueData: null, DataResponse: null, goal: "CART_ADD", sum: 0 }, { valueUrl: /(cart|basket)/, valueData: /action=add/, DataResponse: null, goal: "CART_ADD", sum: 0 }, { valueUrl: /(loadPaymentForm)/, valueData: null, DataResponse: null, goal: "PAY", sum: 0 } ], "hover": [{ value: "[href^='tg:'],[href^='whatsapp:'],[href^='skype:'],[href*='skype.com'],[href^='viber:'],[href*='whatsapp.com'],[href*='wa.me'],[href*='t.me'],[href*='telegram.me'],[href*='teleg.one'],[href*='tele.click'],[href*='wa.link'],[href*='wa.clck.bar']", goal: "HOVER_MES", sum: 0 }, { value: "[href^='tel:']", goal: "HOVER_TEL", sum: 0 }, { value: "[href^='mailto:']", goal: "HOVER_EMAIL", sum: 0 }, { value: ts.fForm, goal: "HOVER_FORM", sum: 0 }, ], "copy": [{ value: /[ ()\d\-]{7,18}/, goal: "COPY_TEL", sum: 0 }, { value: /[^@\s]+@[^@\s]+\.[^@\s]+/, goal: "COPY_EMAIL", sum: 0 } ], "ref": [{ value: /(allpay\.to|qiwi\.com|paypal\.com|advcash\.com|interkassa\.com|payanyway\.ru|payeer\.com|paykeeper\.ru|perfectmoney\.is|platron\.ru|robokassa\.com|securepayments\.sberbank\.ru|unitpay\.ru|yoomoney\.ru|webmoney\.ru|walletone\.com|tinkoff\.ru)/i, goal: "PAY", sum: 0 },], "time": [{ value: 5, goal: "SEC5", sum: 0 }, { value: 15, goal: "SEC15", sum: 0 }, { value: 30, goal: "SEC30", sum: 0 }, { value: 60, goal: "SEC60", sum: 0 }, { value: 120, goal: "SEC120", sum: 0 } ], "redirect_ym": [{ value: "UNIQUE_LEAD,Jivo_Offline_message_sent,Jivo_In-chat_email_form_submitted,Jivo_User_gave_contacts_during_chat,Jivo_Callback_requested,RedHelper.Message_sent,RedConnect.callOrdered,CHAT_OFFLINE_MESSAGE,CHAT_VISITOR_INTRODUCED,Chatra_Pre-chat_form_submitted,LEADBACK_CALL,LEADBACK_CHAT_LEAD,LEADBACK_CHAT_OFFLINE_LEAD,MeTalk_Offline_message_sent,MeTalk_Form_submited,MeTalk_User_gave_contacts_before_chat,MeTalk_User_gave_contacts_during_chat,Callbackhunter_CALL,Callbackhunter_CALL_MOBILE,marquiz-finish,mch_callback_created,mch_leadgen_created,mch_chat_propose,widget_callback_created,widget_leadgen_created", goal: "SEND", sum: ts.priceSEND },], }; var cVersion = "2024-10-26"; var sNoClass = "fsend"; var bfindForm = true; var arrGOOD = ts.mGOOD.split(','); var arrParam = ts.mParam.split(','); var bGOAL = { "FORM": false, "GOOD": false, "COPY": false, "SCROLL25": false, "SCROLL50": false, "SCROLL75": false, "SCROLL100": false, "HOVER_MES": false, "HOVER_TEL": false, "HOVER_EMAIL": false, "HOVER_FORM": false }; var secCur = 0; var secLP = 0; var lenDL = 0; if ((ts.ymCreate) && (ts.ymNumber != "")) { (function (m, e, t, r, i, k, a) { m[i] = m[i] || function () { (m[i].a = m[i].a || []).push(arguments) }; m[i].l = 1 * new Date(); k = e.createElement(t), a = e.getElementsByTagName(t)[0], k.defer = 1, k.src = r, a.parentNode.insertBefore(k, a) }) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(ts.ymNumber, "init", { clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true, trackHash: true, ecommerce: "dataLayer" }); } if ((ts.gaCreate) && (ts.gaNumber != "")) { var scGA1 = document.createElement("script"); scGA1.setAttribute("type", "text/javascript"); scGA1.setAttribute("src", "https://www.googletagmanager.com/gtag/js?id=" + ts.gaNumber); scGA1.setAttribute("defer", ""); document.head.appendChild(scGA1); var scGA2 = document.createElement("script"); scGA2.setAttribute("type", "text/javascript"); scGA2.setAttribute("defer", ""); scGA2.innerHTML = "window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '" + ts.gaNumber + "');"; document.head.appendChild(scGA2); } if ((ts.fbCreate) && (ts.fbNumber != "")) { ! function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', ts.fbNumber); fbq('track', 'PageView'); } /* code.google.com/archive/p/jscookie/ */ window.cookie = { set: function (key, value, expires, path, domain, secure) { var sCookie = key + '=' + escape(value) + '; '; if (expires !== undefined) { var date = new Date(); date.setTime(date.getTime() + (expires * 93600000)); sCookie += 'expires=' + date.toGMTString() + '; '; } sCookie += (path === undefined) ? 'path=/;' : 'path=' + path + '; '; sCookie += (domain === undefined) ? '' : 'domain=' + domain + '; '; sCookie += (secure === true) ? 'secure; ' : ''; document.cookie = sCookie; }, get: function (sKey) { var sValue = ''; var sKeyEq = sKey + '='; var aCookies = document.cookie.split(';'); for (var iCounter = 0, iCookieLength = aCookies.length; iCounter < iCookieLength; iCounter++) { while (aCookies[iCounter].charAt(0) === ' ') { aCookies[iCounter] = aCookies[iCounter].substring(1); } if (aCookies[iCounter].indexOf(sKeyEq) === 0) { sValue = aCookies[iCounter].substring(sKeyEq.length); } } return unescape(sValue); }, remove: function (key) { cookie.set(key, '', -1); }, clear: function () { var aCookies = document.cookie.split(';'); for (var iCounter = 0, iCookieLength = aCookies.length; iCounter < iCookieLength; iCounter++) { while (aCookies[iCounter].charAt(0) === ' ') { aCookies[iCounter] = aCookies[iCounter].substring(1); } var iIndex = aCookies[iCounter].indexOf('=', 1); if (iIndex > 0) { cookie.set(aCookies[iCounter].substring(0, iIndex), '', -1); } } }, isEnabled: function () { cookie.set('test_cookie', 'test'); var val = (cookie.get('test_cookie') === 'test') ? true : false; cookie.remove('test_cookie'); return val; } }; function consoleAlert(text, aler) { if (ts.bDebugDisplay) { console.log("SEOUP_GOAL: " + text); if ((aler) && (bDebugAlert)) { alert(text); } } return true; } function loadjQuery() { var scJQ = document.createElement("script"); scJQ.setAttribute("src", "https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"); scJQ.setAttribute("type", "text/javascript"); scJQ.setAttribute("defer", ""); document.head.appendChild(scJQ); } function deferjQuery(sec) { if (window.jQuery) { consoleAlert('Loaded jQuery after a wait', false); } else if (sec > 0) { setTimeout(function () { deferjQuery(sec - 1) }, 500); } else { consoleAlert('ERROR! No jQuery. You need to put ts.bLoadjQuery = true', false); loadjQuery(); } } if (!window.jQuery) { if (ts.bLoadjQuery) { consoleAlert("External jQuery loading is forced without waiting, according to the setting", false); loadjQuery(); } else { document.addEventListener('DOMContentLoaded', function () { if (!window.jQuery) { deferjQuery(5); } else { consoleAlert('Loaded jQuery after DOMContentLoaded', false); } }); } } function getParameterByName(name) { var name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^]*)"); var results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } function inRange(x, min, max) { return ((x - min) * (x - max) <= 0); } function setCookieUtm() { loc = {}; for (index = 0; index < arrParam.length; index++) { loc[arrParam[index]] = getParameterByName(arrParam[index]); } cook = {}; for (index = 0; index < arrParam.length; index++) { cook[arrParam[index]] = cookie.get(arrParam[index]); } sumLoc = ''; for (index = 0; index < arrParam.length; index++) { sumLoc = sumLoc + loc[arrParam[index]]; } if (loc != cook && sumLoc != '') { for (index = 0; index < arrParam.length; index++) { cookie.set(arrParam[index], loc[arrParam[index]], 730); } } if (ts.ymNumber != "") { yaClientID = getYclid(); var yaClientIDcok = cookie.get("y_clid"); if (yaClientIDcok != yaClientID) { cookie.set("y_clid", yaClientID, 730); } } if (ts.gaNumber != "") { gaClientID = getGclid(); var gaClientIDcok = cookie.get("g_clid"); if (gaClientIDcok != gaClientID) { cookie.set("g_clid", gaClientID, 730); } } lastVisit = cookie.get("SU_lastVisit"); if (lastVisit == '') { cookie.set("SU_lastVisit", Math.floor(Date.now() / 1000), 730); } else { currentVisit = Math.floor(Date.now() / 1000); cookie.set("SU_lastVisit", currentVisit, 730); onetime = Math.floor((currentVisit - lastVisit) / 60); if (inRange(onetime, 1, 1440)) { eventGoal("DAY_0", 0); } else if (inRange(onetime, 1440, 1440 * 2)) { eventGoal("DAY_1", 0); } else if (inRange(onetime, 1440 * 2, 1440 * 3)) { eventGoal("DAY_2-3", 0); } else if (inRange(onetime, 1440 * 3, 1440 * 7)) { eventGoal("DAY_4-7", 0); } else if (inRange(onetime, 1440 * 7, 1440 * 15)) { eventGoal("DAY_8-15", 0); } else if (inRange(onetime, 1440 * 15, 1440 * 31)) { eventGoal("DAY_16-31", 0); } else if (inRange(onetime, 1440 * 31, 1440 * 63)) { eventGoal("DAY_32-63", 0); } else if (inRange(onetime, 1440 * 63, 1440 * 127)) { eventGoal("DAY_64-127", 0); } else if (inRange(onetime, 1440 * 127, 1440 * 255)) { eventGoal("DAY_128-255", 0); } } } function setFormUtm() { var forms = jQuery(ts.fForm); for (i = 0; i < forms.length; i++) { for (j = 0; j < arrParam.length; j++) { if (cookie.get(arrParam[j]) != '') { var input = document.createElement("INPUT"); input.type = "hidden"; input.name = arrParam[j]; input.value = cookie.get(arrParam[j]); forms[i].appendChild(input); } } if (ts.ymNumber != "") { var input = document.createElement("INPUT"); input.type = "hidden"; input.name = "y_clid"; input.value = cookie.get("y_clid"); forms[i].appendChild(input); } if (ts.gaNumber != "") { var input = document.createElement("INPUT"); input.type = "hidden"; input.name = "g_clid"; input.value = cookie.get("g_clid"); forms[i].appendChild(input); } } } function getYclid() { if (typeof window['yaCounter' + ts.ymNumber] !== "undefined" && typeof window['yaCounter' + ts.ymNumber].getClientID !== "undefined") { var yaClientID = window['yaCounter' + ts.ymNumber].getClientID(); return yaClientID; } else { return cookie.get("_ym_uid"); } return; } function getGclid() { var match = document.cookie.match('(?:^|;)\\s*_ga=([^;]*)'); var raw = (match) ? decodeURIComponent(match[1]) : null; if (raw) { match = raw.match(/(\d+\.\d+)$/); } var gacid = (match) ? match[1] : null; return gacid; } function eventGoal(eg, ec) { for (key in bGOAL) { if (key === eg) { if (!bGOAL[eg]) { bGOAL[eg] = true; break; } else { return true; } } } if (eg == 'SEND') { if (secCur < ts.secMax) { consoleAlert("SEND reached in " + secCur + " sec.", false); eventGoal('SPAM', 0); } } var ale = false; if (ts.ymNumber != "") { try { ym(ts.ymNumber, 'reachGoal', eg); consoleAlert(eg + " event for YM", ale); } catch (e) { consoleAlert("ERROR! Sending " + eg + " for YM via ym() " + e, ale); } } if (ts.gaNumber != "") { try { if (ts.gaNumber.indexOf('UA-') !== -1) { gtag('event', 'event_name', { 'event_category': 'SEOUP', 'event_action': eg }); } else { gtag('event', eg); } consoleAlert(eg + " event for GA", ale); } catch (e) { consoleAlert("ERROR! Sending " + eg + " for GA via gtag() " + e, ale); try { ga("send", "event", "SEOUP", eg); consoleAlert(eg + " event for GA", ale); } catch (e) { consoleAlert("ERROR! Sending " + eg + " for GA via ga() " + e, ale); } } } if (ts.fbNumber != "") { try { fbq('trackCustom', eg); consoleAlert(eg + " event for FB", ale); if (eg == 'CART_ADD') fbq('track', 'AddToCart'); if (eg == 'REG') fbq('track', 'CompleteRegistration'); if (eg == 'CLICK_TEL') fbq('track', 'Contact'); if (eg == 'CLICK_EMAIL') fbq('track', 'Contact'); if (eg == 'CLICK_MES') fbq('track', 'Contact'); if (eg == 'CLICK_MAP') fbq('track', 'FindLocation'); if (eg == 'CONTACT') fbq('track', 'FindLocation'); if (eg == 'FORM') fbq('track', 'InitiateCheckout'); if (eg == 'SEND') fbq('track', 'Lead'); if (eg == 'SEARCH') fbq('track', 'Search'); } catch (e) { consoleAlert("ERROR! Sending " + eg + " for FB via fbq() " + e, ale); } } if (ec > 0) { window.dataLayer.push({ "ecommerce": { "currencyCode": "RUB", "purchase": { "actionField": { "id": "auto" }, "products": [{ "id": 1, "name": eg, "price": ec, "category": "SEOUP/" + eg }] } } }); consoleAlert("COST event " + eg + "=" + ec, false); } if (!bGOAL["GOOD"]) { if (jQuery.inArray(eg, arrGOOD) > -1) { eventGoal('GOOD', 0); } } return true; } function parseURLget(g) { var regexp = new RegExp(g + '=([^&]+)', 'i'); var GetValue = ''; if (!!regexp.exec(document.location.search)) GetValue = regexp.exec(document.location.search)[1]; return GetValue; } function formCheck(form, input, eg, ec) { var bOk = true; var i = 0; if (input != "") { fInput = jQuery(input, form); consoleAlert("Found " + fInput.length + " input elements", false); var vErr = false; for (i = 0; i < fInput.length; i++) if (fInput[i].value == "") { vErr = true; break; } if (vErr) bOk = false; } if (bOk) { eventGoal(eg, ec); } else consoleAlert("SEND failed, there are empty INPUT elements", true); return true; } function formEventClear() { if (bGOAL["FORM"] == false) { jQuery(ts.fForm).off('change.seoup'); jQuery(ts.fForm).on('change.seoup', function () { eventGoal('FORM', 0); jQuery(ts.fForm).off('change.seoup'); return true; }); } if (ts.bFormSEND) { if (ts.fBut != "") { jQuery(ts.fBut, ts.fForm).off('click.seoup'); jQuery(ts.fBut, ts.fForm).on('click.seoup', function () { formCheck(this.closest(ts.fForm), ts.fRequired, 'SEND', ts.priceSEND); return true; }); } jQuery(ts.fForm).off('submit.seoup'); jQuery(ts.fForm).on('submit.seoup', function () { formCheck(this, ts.fRequired, 'SEND', ts.priceSEND); return true; }); } if (typeof ts.mCoal.form !== "undefined") ts.mCoal.form.forEach(function (item, i) { if (item.valueBut != "") { jQuery(item.valueBut, item.valueForm).off('click.seoupA'); jQuery(item.valueBut, item.valueForm).on('click.seoupA', function () { formCheck(this.closest(item.valueForm), item.valueInput, item.goal, item.sum); return true; }); } jQuery(item.valueForm).off('submit.seoupA'); jQuery(item.valueForm).on('submit.seoupA', function () { formCheck(this, item.valueInput, item.goal, item.sum); return true; }); }); return true; } function formEvent(fe) { if (ts.fForm) { var bClear = false; if (fe) { jQuery(ts.fForm).removeClass(sNoClass); bClear = true; } if (!jQuery(ts.fForm).hasClass(sNoClass)) { jQuery(ts.fForm).addClass(sNoClass); if (ts.bMask) { if (jQuery.fn.mask) { jQuery(ts.fMask, ts.fForm).mask(ts.sMask); } else { consoleAlert("ERROR! Mask library not loaded", false); } } if (ts.bAddTagForm) { setCookieUtm(); setFormUtm(); } jQuery(ts.fRequired, ts.fForm).addClass("ym-record-keys"); if ((ts.bDebugDisplay) && (ts.bDebugEnable)) { jQuery(ts.fForm).attr("style", "border: 2px dashed #f00; margin: -2px;"); jQuery(ts.fForm).attr("goal", "SEND"); jQuery(ts.fRequired, ts.fForm).attr("style", "border: 2px dashed #9f0; margin: -2px;"); jQuery(ts.fBut, ts.fForm).attr("style", "border: 2px dashed #03f; margin: -2px;"); consoleAlert("Found new