Na czym to polega w sklepie
Ustawienie Sandboxed iframes w kontenerze GTM określa, czy tagi mogą czytać dataLayer z osadzonych iframe. Przy embedzie bramki płatności lub widgetu w sandboxie domyślna izolacja blokuje eventy - musisz świadomie skonfigurować komunikację parent ↔ iframe (postMessage) zamiast bezpośredniego GTM w sandboxie.
Przykład ze sklepu internetowego
Bramka płatności w iframe na checkout - purchase wysyłasz z parent page po callbacku:
// Parent (checkout.sklep.pl) - po sukcesie płatności z iframe:
window.addEventListener("message", function(event) {
if (event.origin !== "https://platnosci.partner.pl") return;
if (event.data.type === "payment_success") {
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: event.data.orderId,
value: event.data.amount,
currency: "PLN",
items: event.data.items,
},
});
}
});
// GTM: trigger Custom Event "purchase" - nie tag wewnątrz sandbox iframe
Co zrobić po stronie biznesu
- Widget Raty / PayPo w iframe - konwersja na stronie rodzica.
- Osadzony kalkulator dostawy bez dostępu GTM do parent dataLayer.
- Review widget Trustpilot - oddzielny pomiar kliknięć poza iframe.
W skrócie
Nie instaluj pełnego GTM w sandboxowanym iframe płatności. Kontrakt postMessage + jeden tag purchase na stronie potwierdzenia.