(function () { var YM_ID = 104646142; // ← замени на ID счётчика Метрики (число) var GOAL = 'lead'; // идентификатор цели из Метрики var TTL = 5 * 60 * 1000; // антидубль 5 минут function getUTM() { var p = new URLSearchParams(location.search); return { utm_source: p.get('utm_source') || undefined, utm_medium: p.get('utm_medium') || undefined, utm_campaign:p.get('utm_campaign')|| undefined, utm_content: p.get('utm_content') || undefined, utm_term: p.get('utm_term') || undefined }; } function antiDup(leadId) { try { var key = 'ym_goal_sent_' + (leadId || 'noid'); var prev = +localStorage.getItem(key) || 0; var now = Date.now(); if (now - prev < TTL) return false; localStorage.setItem(key, String(now)); return true; } catch(e){ return true; } } function getRecId(node){ var rec = node && node.closest && node.closest('[id^="rec"]'); return rec ? rec.id : null; } function sendGoal(form){ try{ if (typeof ym !== 'function') return; var leadId = form && (form.tildaTranId || form.tildaOrderId || form.dataset && form.dataset.tildaOrderId) || null; if (!antiDup(leadId)) return; var params = Object.assign({ rec_id: getRecId(form), form_id: form && form.id || null, form_name: form && form.getAttribute && form.getAttribute('name') || null, lead_id: leadId }, getUTM()); ym(YM_ID, 'reachGoal', GOAL, params); console.log('[YM] goal sent:', GOAL, params); } catch(e){ console.warn('YM error', e); } } // 1) Современное событие Tilda (в том числе попапы) document.addEventListener('tilda:form:success', function(e){ var form = (e && e.detail && e.detail.form) || e.target; sendGoal(form); }); // 2) Старое событие (обратная совместимость) document.addEventListener('tildaform:aftersuccess', function(e){ var form = e.target && (e.target.closest && e.target.closest('form')) || e.target; sendGoal(form); }, true); })();