Polecane produkty

Podstawowe Posłuszeństwo SZCZECIN Podstawowe Posłuszeństwo SZCZECIN
Cena:

530,00 zł

bez kosztów dostawy
szt.
zobacz więcej
Kurs Psie Przedszkole SZCZECIN Kurs Psie Przedszkole SZCZECIN
Cena:

490,00 zł

bez kosztów dostawy
szt.
zobacz więcej
Kurs Posłuszeństwa dla psów młodych SZCZECIN Kurs Posłuszeństwa dla psów młodych SZCZECIN
Cena:

530,00 zł

bez kosztów dostawy
szt.
zobacz więcej
Kurs Psie Przedszkole ŚWINOUJŚCIE Kurs Psie Przedszkole ŚWINOUJŚCIE
Cena:

490,00 zł

bez kosztów dostawy
szt.
zobacz więcej
Podstawowe Posłuszeństwo POLICE Podstawowe Posłuszeństwo POLICE
Cena:

530,00 zł

bez kosztów dostawy
szt.
zobacz więcej
Podstawowe Posłuszeństwo ŚWINOUJŚCIE Podstawowe Posłuszeństwo ŚWINOUJŚCIE
Cena:

530,00 zł

bez kosztów dostawy
szt.
zobacz więcej
do góry
Sklep jest w trybie podglądu
Pokaż pełną wersję strony
if (window.SHOPER_PRODUCT) { productId = window.SHOPER_PRODUCT.id || productId; productName = window.SHOPER_PRODUCT.name || productName; productPrice = parseFloat(window.SHOPER_PRODUCT.price) || productPrice; } trackEvent('ViewContent', { currency: (window.SHOPER_PRODUCT && window.SHOPER_PRODUCT.currency) || 'PLN', value: productPrice, contents: [{ content_id: String(productId), content_type: 'product', content_name: productName.trim().slice(0, 100), quantity: 1, price: productPrice }] }); } // 4.3 Search — strona wyników wyszukiwania if (/searchquery|\/search/.test(path + window.location.search) || /page-search/.test(allClasses)) { var query = urlParams.get('searchquery') || urlParams.get('q') || ''; if (query) { trackEvent('Search', { query: query }); } } // 4.4 InitiateCheckout — strona koszyka i pierwszego kroku zamawiania if ( /\/basket|\/koszyk|\/cart/.test(path) || /page-basket|page-cart/.test(allClasses) ) { // Próba wyciągnięcia sumy koszyka var totalEl = document.querySelector('.basket-total, .cart-total, [data-cart-total]'); var total = totalEl ? parseFloat((totalEl.innerText || '').replace(/[^\d,.\-]/g,'').replace(',','.')) : 0; trackEvent('InitiateCheckout', { currency: 'PLN', value: total }); } // 4.5 AddPaymentInfo — strona wyboru płatności if ( /\/payment|\/shipment-payment/.test(path) || /page-payment|page-shipment/.test(allClasses) ) { trackEvent('AddPaymentInfo', { currency: 'PLN' }); } // 4.6 CompletePayment — strona podziękowania za zamówienie if ( /\/order\/finished|\/podziekowanie|\/thank/.test(path) || /page-finished|page-order-finished/.test(allClasses) ) { // Shoper na stronie finished udostępnia zmienne i // które renderowane są server-side. Możesz je tu wstawić: // var orderData = window.SHOPER_ORDER || {}; var orderId = orderData.id || urlParams.get('order_id') || (path.match(/finished\/(\d+)/) || [])[1] || ''; var orderValue = parseFloat(orderData.value) || 0; // Deterministyczne event_id zsynchronizowane z server-side webhookiem var purchaseEventId = orderId ? ('order-' + orderId + '-CompletePayment') : uuid(); // Piksel TikToka if (window.ttq && typeof ttq.track === 'function') { ttq.track('CompletePayment', { currency: orderData.currency || 'PLN', value: orderValue, contents: orderData.contents || [] }, { event_id: purchaseEventId }); } // Server-side też wysyłamy z TYM SAMYM event_id → deduplikacja po stronie TikToka var purchasePayload = { event_name: 'CompletePayment', event_id: purchaseEventId, event_time: Math.floor(Date.now() / 1000), user: Object.assign(getUserContext(), { email: orderData.email || null, phone: orderData.phone || null }), properties: { currency: orderData.currency || 'PLN', value: orderValue, contents: orderData.contents || [], order_id: String(orderId) }, page: { url: window.location.href, referrer: document.referrer || '' } }; if (navigator.sendBeacon) { navigator.sendBeacon(WEBHOOK_URL, new Blob([JSON.stringify(purchasePayload)], {type:'application/json'})); } else { fetch(WEBHOOK_URL, {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(purchasePayload), keepalive:true}); } } // 4.7 CompleteRegistration — strona po rejestracji if (/\/customer-create-success|\/rejestracja-zakonczona|\/register-success/.test(path)) { trackEvent('CompleteRegistration', {}); } // === 5. NASŁUCHIWANIE INTERAKCJI ================================== // 5.1 AddToCart — kliknięcie przycisku "do koszyka" document.addEventListener('click', function(e) { var target = e.target.closest && e.target.closest( 'button[name="add-to-basket"], button[data-action="add-to-cart"], ' + '.btn-add-to-basket, .add-to-cart, .add_to_basket, ' + '[data-add-to-cart], [name="add"], button.product-add' ); if (!target) return; var product = window.SHOPER_PRODUCT || {}; var productEl = document.querySelector('[data-product-id]'); var pid = product.id || (productEl && productEl.getAttribute('data-product-id')) || ''; var name = product.name || ((document.querySelector('h1') || {}).innerText || '').trim(); var price = parseFloat(product.price) || 0; // Próba wyciągnięcia ilości var qtyEl = document.querySelector('input[name="quantity"], input[name="add-to-basket-quantity"]'); var qty = qtyEl ? parseInt(qtyEl.value, 10) : 1; if (isNaN(qty) || qty < 1) qty = 1; trackEvent('AddToCart', { currency: product.currency || 'PLN', value: price * qty, contents: [{ content_id: String(pid), content_type: 'product', content_name: name.slice(0, 100), quantity: qty, price: price }] }); }, { passive: true, capture: true }); // 5.2 AddToWishlist — kliknięcie ikony serca document.addEventListener('click', function(e) { var target = e.target.closest && e.target.closest( '.wishlist-add, .add-to-wishlist, [data-action="wishlist"], button[name="wishlist"]' ); if (!target) return; var product = window.SHOPER_PRODUCT || {}; trackEvent('AddToWishlist', { currency: product.currency || 'PLN', value: parseFloat(product.price) || 0, contents: product.id ? [{ content_id: String(product.id), content_type: 'product', content_name: (product.name || '').slice(0, 100), quantity: 1, price: parseFloat(product.price) || 0 }] : [] }); }, { passive: true, capture: true }); // 5.3 Contact — wysłanie formularza kontaktowego document.addEventListener('submit', function(e) { var form = e.target; if (!form || !form.matches) return; // Heurystyka: formularze z polem "wiadomość" i "email" if ( form.matches('form.contact-form, form#contact-form, form[name="contact"]') || (form.querySelector('textarea[name*="message"], textarea[name*="wiadomosc"]') && form.querySelector('input[type=email], input[name*="email"]')) ) { trackEvent('Contact', {}); } // Newsletter / subskrypcja if ( form.matches('form.newsletter-form, form[name*="newsletter"]') || form.querySelector('input[name*="newsletter"], input[name*="subscribe"]') ) { trackEvent('Subscribe', {}); } }, { passive: true, capture: true }); })();
Sklep internetowy Shoper.pl