- El tracking de conversiones en CCV Shop es más completo cuando cada pedido pagado se envía desde los datos de pedido de CCV en el servidor, con un fragmento en la página de confirmación del pedido que vincula el pedido con el clic del anuncio.
- Un clic en Create webhook hace que CCV Shop informe de cada pedido en el momento en que se marca como pagado, y cada envío debe llevar el token privado de tu tienda.
- Los pedidos de CCV Shop no incluyen la dirección IP del comprador, así que el fragmento de la página de confirmación del pedido importa más en CCV Shop que en la mayoría de las plataformas.
- La comprobación de 5 minutos solo mira los pedidos creados recientemente, así que los pedidos pagados días después dependen del webhook: mantenlo activo.
- Meta rechaza los eventos del servidor que llegan más de 7 días después de crearse el pedido, así que una transferencia bancaria muy tardía no llega a Meta.
El tracking de conversiones en CCV Shop consiste en informar de cada pedido pagado de tu tienda online en CCV Shop a plataformas publicitarias como Meta y TikTok, para que atribuyan correctamente los anuncios y optimicen sobre ventas reales. La forma más completa es enviar cada compra desde los datos de pedido de CCV en el servidor y añadir un breve fragmento a la página de confirmación del pedido que vincule el pedido con el clic del anuncio.
CCV Shop es una plataforma de tiendas online alojada de la empresa neerlandesa CCV, que afirma tener 17,000 tiendas online. Esta guía explica cómo se conecta ROASaurus con ella, cómo se vinculan los pedidos con los clics de los anuncios, qué llega a Meta y TikTok, la configuración, las pruebas y cómo funcionan los pagos tardíos. Para la idea general, lee qué es el server-side tracking.
¿Cómo se conecta ROASaurus con CCV Shop?
ROASaurus usa tres partes de CCV Shop, todas descritas en la documentación de la API de CCV:
| Parte de CCV Shop | Para qué la usa ROASaurus |
|---|---|
| API REST, con una clave pública y una clave secreta | Lee cada pedido pagado y sus líneas de pedido |
Webhook para el evento orders.updated.ispaid | CCV informa de un pedido en el momento en que cambia su estado de pago |
La página de confirmación del pedido, con Vertoshop.js | El fragmento lee ahí el id del pedido y vincula el pedido con el visitante |
¿Por qué los píxeles del navegador pierden las compras de CCV Shop?
Un píxel del navegador solo informa de una compra cuando el navegador del comprador carga la página de confirmación del pedido y se ejecuta el script del píxel. Varias situaciones habituales lo impiden:
- El comprador paga mediante redirección, por ejemplo con iDEAL, y cierra la pestaña antes de que se cargue la página de confirmación.
- Un bloqueador de anuncios o un ajuste de privacidad del navegador bloquea el script del píxel.
- El visitante rechaza las cookies de marketing, así que el píxel no debe cargarse.
- El pedido se paga más tarde, por transferencia bancaria o en la entrega, cuando no interviene ningún navegador.
En todos estos casos, CCV Shop sigue marcando el pedido como pagado. ROASaurus envía ese pedido desde el servidor, así que la compra se informa pase lo que pase en el navegador. El fragmento de la página de confirmación tiene otra función: le dice a ROASaurus a qué visitante, y por tanto a qué clic de anuncio, pertenece el pedido.
El webhook de pedido pagado y la comprobación de 5 minutos
Qué hace Create webhook
Cuando pulsas Create webhook, ROASaurus registra un webhook de CCV para el evento orders.updated.ispaid, que CCV activa cuando cambia la propiedad de pagado de un pedido. La dirección es la URL de webhook de tu tienda en ROASaurus, que contiene tu clave de tienda y un token privado. CCV no añade a un webhook nada que identifique la tienda, y su documentación aconseja poner un identificador en la dirección. La clave de tienda cumple esa función.
CCV da a cada webhook su propia clave secreta de 32 caracteres. Cuando CCV devuelve esa clave, ROASaurus la guarda y, a partir de entonces, cada envío debe llevar un encabezado x-hash válido. Cada envío también debe llevar el token de tu tienda. Cuando ROASaurus recibe un envío, ignora los pedidos que no están pagados, lee el pedido completo y sus líneas desde la API y envía el pedido solo cuando CCV dice que está pagado.
Llamadas a la API firmadas
CCV exige que cada llamada a la API esté firmada. ROASaurus envía tres encabezados: x-public con tu clave pública, x-date con la hora actual y x-hash. CCV rechaza una marca de tiempo que difiera más de 5 minutos de la hora de su servidor. Tu clave secreta nunca se envía.
API call (ROASaurus → CCV) x-hash = HMAC-SHA512( public_key|METHOD|uri|body|timestamp , secret_key ) Webhook (CCV → ROASaurus) x-hash = HMAC-SHA512( address|payload , webhook_key )
La comprobación de 5 minutos
Cada 5 minutos, ROASaurus también pide a CCV los pedidos pagados creados desde su última comprobación, con 30 minutos de solapamiento, y registra los que aún no tiene. CCV filtra los pedidos solo por fecha de creación. Por eso la comprobación encuentra los pedidos que se pagan poco después de realizarse, y un pedido pagado días más tarde llega a ROASaurus solo por el webhook.
CCV considera correcta una respuesta 200, 201, 202 o 204. Mantiene abierto un envío y lo reintenta en la siguiente ocurrencia tras una respuesta 307, 408, 503 o 504, y marca como fallida cualquier otra respuesta. Espera 2 segundos para una conexión y 5 segundos para la respuesta.
¿Cómo se vincula un pedido de CCV Shop con el clic del anuncio?
Para atribuir un anuncio, la plataforma necesita los identificadores de clic del visitante que hizo el pedido, como el click id de Meta (fbc) y el de TikTok (ttclid). El script de ROASaurus los guarda para cada visitante cuando llega desde un anuncio. ROASaurus no obtiene ese id de visitante del pedido de CCV, así que vincula los pedidos con los visitantes de otras formas:
| Método | En CCV Shop | Cómo funciona |
|---|---|---|
| 1. Fragmento de la página de confirmación del pedido | Sí | Lee el id del pedido con Vertoshop.getOrder().getId(), además del total del pedido y la moneda, y lanza una compra de ROASaurus con el id de evento order-58213 |
| 2. Email anterior | Sí | Un email con hash que el visitante dio antes en tu sitio, en un formulario emergente o mediante una llamada Identify |
| 3. Dirección IP y navegador | No | Los pedidos de CCV Shop no incluyen la dirección IP ni el navegador del comprador, así que este recurso alternativo no tiene nada que comparar |
ROASaurus espera un poco antes de enviar cada compra, para que el evento de la página de confirmación pueda llegar primero, y vuelve a intentar la vinculación en el momento del envío. La página Orders muestra el resultado por pedido en la columna Matched by: thank_you, email o not matched.
Un pedido que no se vincula sigue llegando a tus plataformas publicitarias con los datos de cliente con hash del pedido. No tiene identificadores de clic y, como los pedidos de CCV no llevan dirección IP ni navegador, tampoco tiene ninguno de esos datos. Eso reduce la proporción de eventos que Meta puede asociar con una persona; Event Match Quality explica cómo la puntúa Meta. En la atribución de ROASaurus, un pedido sin vincular aparece como directo o desconocido.
¿Qué llega a Meta y TikTok desde un pedido de CCV?
| Datos de pedido de CCV | Enviado como |
|---|---|
id | El id de evento order-58213 y el id del pedido |
total_price, currency | Valor y moneda (EUR cuando CCV no indica moneda) |
create_date | La hora del evento |
| Email, móvil o teléfono, nombre y apellidos del cliente | Con hash SHA-256 |
| Ciudad, código postal y código de país de facturación | Con hash SHA-256 |
| Id de cliente | Id externo con hash |
| Líneas de pedido: número de producto, id de producto, cantidad, precio y nombre | Productos con id, cantidad y precio |
| Dirección IP y navegador | No están en los pedidos de CCV: se toman del evento de la página de confirmación o del visitante vinculado |
Meta recibe un Purchase a través de su Conversions API, y TikTok un CompletePayment a través de su Events API, ambos con el id de evento order-58213. TikTok ahora muestra CompletePayment como Purchase en sus informes. Cuando marcas la opción de cargar también el píxel del navegador, el fragmento de la página de confirmación dispara los mismos eventos en el navegador con el mismo id de evento, y Meta y TikTok se quedan con una sola copia. Los mismos pedidos van a Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn y las demás plataformas publicitarias cuando las conectas. Las conversiones de compra de Google Ads solo se envían desde el checkout de Shopify, así que ROASaurus no las envía desde CCV Shop.
Cómo configurar el tracking de conversiones en CCV Shop
- Añade la tienda en ROASaurus
Ve a Add a store, elige CCV Shop e introduce la dirección de tu tienda. La pestaña Connection te muestra entonces tu etiqueta de script y el fragmento de la página de confirmación.
- Localiza tus claves de API
En CCV Shop, ve a My webshop › Settings › General › API settings y haz clic en New API key. Si no lo ves, instala primero la app de API desde la CCV App Store.
- Añade el script a todas las páginas
Pega la etiqueta de script en el Header HTML de tu tienda. El centro de ayuda de CCV lo sitúa en Mijn webshop › Instellingen › Lay-out › Layout, al final de la página. Un bloque de código de app en la cabecera también funciona.
- Añade el fragmento a la página de confirmación
Ve a Mijn webshop › Instellingen › Algemeen › Teksten, abre el texto que se muestra después de realizar un pedido, cambia a Source y pega ahí el fragmento. CCV Shop lo ejecuta entonces en la página de agradecimiento del pedido.
- Conecta la API
En la pestaña Connection, introduce la clave pública y la clave secreta. Rellena Shop URL solo cuando tu API se ejecute en un dominio distinto al de tu tienda. Guarda, pulsa Test connection y después Create webhook.
- Conecta tus plataformas publicitarias
En Tracking & platforms, usa Connect with Facebook o Add pixel para Meta, y Add pixel para TikTok. Marca la opción de cargar también el píxel del navegador.
Consentimiento
Fuera de Shopify, el script de ROASaurus lee la decisión del visitante en las herramientas de consentimiento habituales: Cookiebot, OneTrust, los banners IAB TCF y Google consent mode. Con otro banner de cookies, llama a tlq('consent', true) cuando el visitante acepte las cookies de marketing y a tlq('consent', false) cuando las rechace. Hasta que el visitante acepte, no tiene id de visitante ni click ids, y no se dispara ningún píxel del navegador. El pedido pagado se sigue enviando desde el servidor con datos del cliente con hash a partir del pedido. La página de ayuda sobre consentimiento explica los detalles.
¿Cómo se prueba el tracking de conversiones en CCV Shop?
- Abre tu tienda con
?roasaurus=connecteden la dirección. Una alerta confirma que el script se ejecuta.?roasaurus=debugregistra en la consola del navegador lo que envía. - En el Event log, en Collected events, las visitas de página deberían mostrar un id de visitante.
- Haz un pedido y págalo, o márcalo como pagado. En Collected events, el Event log debería mostrar un Purchase con el id de pedido de CCV en sus datos. Si no aparece, el fragmento de la página de confirmación no se ejecutó.
- En la pestaña Connection, Last order received muestra el pedido y Last sync la última comprobación de 5 minutos, con cualquier error de CCV.
- En Server deliveries del Event log, cada plataforma conectada tiene una línea con el estado sent y la respuesta de la plataforma.
PageView visitor 51c0e9a7Script en todas las páginasPurchase order-58213Fragmento de la página de confirmación del pedidowebhook orders.updated.ispaidFirma comprobada, pedido pagadoMeta Purchase sentMatched by thank_youTikTok CompletePayment sentMismo id de evento, deduplicadoPara ver el evento en Meta, pega el código de Events Manager › Test events en el campo Test event code de tu píxel de Meta en ROASaurus y elimínalo cuando termines.
Pagos tardíos y otros límites
Las transferencias bancarias y el pago contra reembolso se pagan después de realizar el pedido. Esto es lo que ocurre con un pedido de ejemplo por transferencia bancaria, desde el día en que se realiza:
| Cuándo | Qué ocurre | Resultado |
|---|---|---|
| Día 0, en el checkout | El pedido se crea, no se paga | No enviado: la comprobación de 5 minutos solo pide pedidos pagados |
| Día 0, unos 35 minutos después | La hora de creación del pedido sale de la ventana de comprobación | A partir de ahora, solo el webhook puede informar de él |
| Día 3 | Marcas el pedido como pagado | Llega el webhook y ROASaurus lo envía. La hora del evento, el día 0, tiene 3 días: Meta lo acepta |
| Día 9, en cambio | Marcas el pedido como pagado | Llega el webhook y ROASaurus lo envía. 9 días es más de 7: Meta lo rechaza |
- Pago contra reembolso. ROASaurus envía estos pedidos cuando CCV los marca como pagados, normalmente después de la entrega. Consulta el tracking en pago contra reembolso para saber cuándo contar estos pedidos.
- Compras del navegador antes del pago. El fragmento de la página de confirmación se ejecuta cuando se realiza el pedido, así que los píxeles del navegador informan de un pedido por transferencia bancaria antes de que se pague. Si el pago llega más de 48 horas después, Meta y TikTok no pueden fusionar las copias del navegador y del servidor.
- Sin recurso alternativo por IP. Añade el fragmento de la página de confirmación y, cuando puedas, captura los emails antes en tu sitio.
- Las cancelaciones y los reembolsos no se envían. Una vez enviada una compra, se queda en la plataforma publicitaria.
- Solo visitas de página, sin código. Las visitas de producto y los añadidos al carrito se detectan automáticamente solo en Shopify. En CCV Shop, un desarrollador puede enviarlos con una llamada de seguimiento
tlq.
La página de la integración con CCV Shop reúne los datos de la conexión en un solo lugar, y la página de ayuda para otras tiendas online compara CCV Shop con las demás plataformas a las que se conecta ROASaurus, como Lightspeed.
Fuentes
- CCV Shop: API Documentatie
- CCV: Webshop API
- Meta for Developers: Server Event Parameters
- Meta for Developers: Handling Duplicate Pixel and Conversions API Events
- TikTok Ads Manager: About Event Deduplication
En ROASaurus
- Integración con CCV Shop
- Ayuda: Wix, Lightspeed y otras tiendas online
- Server-side tracking
- Integración con Meta