Script de seguimiento t.js
Lo que hace el script https://pay.vipter.com/t.js en tu página de ventas, paso a paso, el atributo data-hosts, lo que guarda y agrega a los enlaces, cómo instalarlo con y sin gestor de etiquetas y qué permitir en la CSP.
t.js es un script pequeño, de unos 2,4 KB, para tu página de ventas. Guarda el origen de la visita (UTMs, IDs de clic y código de vendedor) y agrega esos datos a los enlaces que llevan al checkout de Vipter, en el momento del clic. Sin él, los parámetros quedan en la dirección de la página de ventas y se pierden cuando el visitante hace clic para comprar.
La versión para el dueño de la tienda, con el paso a paso en el panel y el informe de origen de las ventas, está en Script de UTM y origen de las ventas.
El código
Copia el código en GeneralConversionesAjustes, en la tarjeta Script de UTMs para tu página de ventas. Sin dominio propio, es:
<script src="https://pay.vipter.com/t.js" async></script>Con un dominio propio activo, el código copiado ya viene con data-hosts="<tu dominio>".
El archivo se sirve con Content-Type: application/javascript, Cache-Control: public, max-age=3600 y Access-Control-Allow-Origin: *. Una versión nueva llega a los visitantes en hasta una hora.
Qué hace el script
1. Al cargar
- Encuentra su propia etiqueta
<script>:document.currentScripto, si no existe, el primer<script>cuyosrccontiene/t.js. - Arma la lista de hosts del checkout:
pay.vipter.commás los valores dedata-hosts, separados por comas, sin espacios en los extremos y en minúsculas. - Lee la dirección de la página actual y busca estos parámetros:
| Grupo | Parámetros | Regla |
|---|---|---|
| Campaña | utm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_id, src, sck | Primer toque, en bloque. |
| IDs de clic | fbclid, gclid, gbraid, wbraid, ttclid, epik, tblci, ob_click_id, msclkid | Último valor. |
| Vendedor | v | Último valor. |
- Si encontró alguno, lo graba en el
localStoragede tu dominio, en la clavevpt_attr, con el formato{"at": <milisegundos>, "v": {<parámetro>: <valor>}}. Cada valor se corta en 500 caracteres.
Las reglas de grabación:
- Campaña, primer toque en bloque. Si lo que está guardado ya tiene algún parámetro de campaña, los parámetros de campaña de la visita nueva se ignoran, todos juntos. Si no tiene, entran los de la visita nueva.
- IDs de clic y vendedor, último valor. Cada uno que viene en la visita nueva reemplaza al guardado.
- Validez de 30 días desde la primera grabación.
ates el momento de la primera grabación y no cambia en las visitas siguientes. Después de 30 días, lo guardado se descarta y la próxima visita con parámetros empieza de cero. - Una visita sin ninguno de estos parámetros no graba nada.
2. Al hacer clic en un enlace
El script escucha mousedown, touchstart y la tecla Enter en toda la página, en la fase de captura. Cuando el destino es un <a href>, o está dentro de uno, y el host del enlace está en la lista, reescribe el href antes de la navegación:
- Agrega cada parámetro guardado en
vpt_attrque el enlace todavía no tiene. - Lee las cookies de tu página y las agrega, si el enlace todavía no las tiene:
| Cookie | Parámetro en el enlace |
|---|---|
_fbp | fbp |
_fbc | fbc |
_ttp | ttp |
_ga | ga_client_id, con las dos últimas partes de la cookie: GA1.1.123.456 se convierte en 123.456 |
Un parámetro que el enlace ya tiene nunca se cambia. El checkout lee estos parámetros como se describe en Parámetros de URL del checkout.
Como el cambio ocurre en el clic, funciona también para enlaces creados después de la carga, en páginas armadas con JavaScript, y para "abrir en una pestaña nueva". Las cookies HttpOnly no son visibles para el script.
3. La función window.vipterDecorate
Para las navegaciones que no pasan por un <a>, como window.location o el enrutador de un framework, el script expone:
const url = window.vipterDecorate('https://pay.vipter.com/curso-fotografia?pack=3');
window.location.href = url;Aplica las mismas reglas del clic y devuelve la dirección completa, como texto. Una dirección cuyo host no está en la lista vuelve sin parámetros agregados. La función solo existe después de que el script cargó: con async, comprueba typeof window.vipterDecorate === 'function' antes de llamarla.
Los formularios (<form action>) no se modifican. Si el botón de compra es un formulario, cámbialo por un enlace o usa vipterDecorate.
Lo que el script no hace
- No hace ninguna solicitud de red, no crea cookies y no toca el diseño de la página. Solo lee la dirección y las cookies, graba en
vpt_attry cambia elhrefde los enlaces del checkout. - No lleva el correo, el nombre ni otros datos del visitante.
- No muestra errores: cualquier fallo, como un
localStoragebloqueado, se descarta en silencio. SinlocalStorage, los enlaces igual reciben los valores de las cookies.
El atributo data-hosts
data-hosts agrega hosts a la lista. pay.vipter.com siempre está en ella.
<script src="https://pay.vipter.com/t.js" data-hosts="checkout.sualoja.com.br,pagamento.sualoja.com.br" async></script>- La comparación es por el host exacto, sin puerto. No hay comodines ni subdominios automáticos:
sualoja.com.brno cubrecheckout.sualoja.com.br. - Lista solo los hosts del checkout. Un host de más hace que el script agregue parámetros a enlaces que no son de Vipter.
- Si activas un dominio propio después de instalar el script, copia el código de nuevo o agrega el dominio en
data-hosts.
Instalar
Directo en el HTML
Pega la etiqueta en todas las páginas desde donde el visitante puede ir al checkout, antes de </body>. Mantén async: el script no bloquea el renderizado. En los constructores de páginas, usa el campo de scripts del pie de página.
Con un gestor de etiquetas
En Google Tag Manager, crea una etiqueta del tipo HTML personalizado con el mismo código, incluido el data-hosts, y actívala en todas las páginas de ventas. El script lee la configuración de su propia etiqueta <script>. Después de publicar, comprueba con la prueba de abajo que los enlaces a tu dominio propio reciben los parámetros: si no los reciben, el gestor no mantuvo el atributo data-hosts.
Con un gestor de etiquetas, el script solo se ejecuta después de que carga el contenedor. Un clic antes de eso va al checkout sin los parámetros guardados. Si el contenedor espera el consentimiento de cookies del visitante, el script también espera.
Poner tu contenedor de GTM dentro del checkout es otra configuración, sin relación con t.js: consulta Conectar Google Tag Manager.
Comprobar
- Abre la página de ventas con
?utm_source=teste&utm_campaign=script&v=ana. - En la consola del navegador, ejecuta
localStorage.getItem('vpt_attr'). Aparece un JSON con los tres valores. - Ejecuta
vipterDecorate('https://pay.vipter.com/x'). El resultado tiene los tres parámetros, másfbp,fbc,ttpoga_client_idsi la página tiene esas cookies. - Haz clic en el botón de compra. La dirección del checkout se abre con los parámetros.
Para repetir la prueba desde cero, borra la clave: localStorage.removeItem('vpt_attr'). Si no lo haces, la campaña de la primera prueba sigue valiendo durante 30 días.
CSP
El script solo necesita cargarse. Con una Content Security Policy en la página de ventas:
- Permite el host en
script-src:script-src 'self' https://pay.vipter.com. - No hace falta permitir nada en
connect-src,img-srcniframe-src: el script no hace solicitudes. - Si tu CSP usa
noncecon'strict-dynamic', pon elnonceen la etiqueta det.js, como en tus otros scripts. - El script no usa
evalni estilos inline.
Privacidad
El script guarda los datos de campaña en el localStorage de tu dominio y lee las cookies de anuncios que ya existen en la página. Si tu política exige consentimiento para este tipo de almacenamiento, carga t.js solo después del consentimiento, con tu gestor de etiquetas o tu herramienta de consentimiento. El consentimiento dentro del checkout se configura aparte, en consentimiento de cookies.
Qué hacer después
- Consulta lo que hace cada parámetro en el checkout en Parámetros de URL del checkout.
- Sigue el resultado en origen de las ventas.
Parámetros de URL del checkout
Referencia técnica de cada parámetro que acepta el enlace de checkout, con formato, validación, qué pasa con un valor inválido y cómo armar los enlaces en tu código.
Glosario
Los términos que se usan en el panel y en el Centro de Ayuda de Vipter, cada uno con una definición corta y su equivalente en portugués y en inglés.