- El server-side tracking de WooCommerce envía cada pedido pagado a Meta, TikTok y otras plataformas publicitarias a partir de los datos de pedido de la propia tienda, así que una compra cuenta aunque el píxel del navegador nunca se dispare.
- ROASaurus cuenta un pedido de WooCommerce como pagado cuando su estado es processing o completed, lo que incluye los pedidos de pago contra reembolso y las transferencias bancarias una vez que las confirmas.
- El plugin de ROASaurus guarda el id de visitante y las cookies del clic en el anuncio en cada pedido durante el checkout, de modo que el pedido queda vinculado con exactitud a su clic en el anuncio.
- Sin el plugin, los webhooks siguen entregando todos los pedidos pagados, pero no hay vinculación con la página de agradecimiento: los pedidos solo se vinculan por un email introducido antes en el sitio o por una dirección IP y un navegador únicos.
- En WooCommerce, el script de ROASaurus sigue los plugins de consentimiento que usan la WP Consent API, como Complianz y CookieYes, y los banners de Cookiebot, OneTrust e IAB TCF.
El server-side tracking de WooCommerce envía cada pedido pagado a partir de los datos de pedido de tu tienda a Meta, TikTok y otras plataformas publicitarias, en lugar de depender solo de un píxel en el navegador del comprador. La compra se registra aunque un bloqueador de anuncios detenga el píxel o el comprador nunca llegue a la página de agradecimiento.
Esta guía explica por qué las tiendas WooCommerce pierden conversiones, qué datos de pedido te da WooCommerce y las dos formas de conectar ROASaurus: el plugin de WordPress o los webhooks. Después trata la vinculación, el consentimiento, la configuración y las pruebas. Para la idea general, lee qué es el server-side tracking.
¿Por qué las tiendas WooCommerce pierden conversiones?
Un píxel del navegador registra una compra solo cuando el script del píxel se carga, el comprador llega a la página de agradecimiento y el navegador envía el evento. Cada paso puede fallar. El pedido en sí sigue estando en tu base de datos, porque WooCommerce lo guarda en el servidor.
| Qué ocurre | Píxel del navegador | Datos de pedido en WooCommerce |
|---|---|---|
| El comprador paga mediante una redirección (por ejemplo PayPal o una app bancaria) y cierra la pestaña | Sin página de agradecimiento, sin evento de compra | Pedido pagado, estado processing |
| Un bloqueador de anuncios o un ajuste de privacidad bloquea el script del píxel | Sin evento de compra | Pedido pagado |
| El visitante rechaza las cookies de marketing | El píxel no debe cargarse | Pedido pagado |
| Una transferencia bancaria se confirma tres días después | En ese momento no hay ningún navegador abierto | El estado cambia de on hold a processing |
| Un plugin de caché o de optimización de scripts retrasa el píxel | El evento puede llegar tarde o faltar | Pedido pagado |
Las compras que faltan causan dos tipos de daño. La plataforma publicitaria optimiza con menos conversiones, y tus informes muestran un retorno menor del que realmente obtienes. Este es el segundo efecto en cifras, para una tienda de ejemplo con un ROAS de equilibrio de 2.2:
| Tienda de ejemplo, un mes | Solo el píxel | Todos los pedidos pagados |
|---|---|---|
| Gasto publicitario en Meta | $8,000 | $8,000 |
| Compras de clics de Meta | 260 | 320 |
| Ingresos a $60 por pedido | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Frente al equilibrio (2.2) | Parece una pérdida | Rentable |
Lo que te ofrece WooCommerce: pedidos, webhooks y la REST API
¿Qué estados de pedido cuentan como pagados?
WooCommerce describe processing como pago recibido, con el pedido a la espera de ser tramitado. ROASaurus envía los pedidos con el estado processing o completed y omite los pedidos en pending payment, on hold, failed, cancelled y refunded. Dos métodos de pago requieren atención:
- Pago contra reembolso. WooCommerce pone estos pedidos en processing hasta que se cobra el pago, así que ROASaurus los envía cuando se realizan. Los pedidos con un producto descargable son la excepción: pasan a on hold. Consulta el seguimiento de los pedidos con pago contra reembolso para ver qué implica eso en las devoluciones y los rechazos.
- Transferencia bancaria. WooCommerce pone estos pedidos en on hold mientras verificas el pago. ROASaurus los envía cuando los pasas a processing.
Webhooks
Un webhook es un mensaje que WooCommerce envía a otro sistema cuando algo cambia. Lo creas en WooCommerce › Settings › Advanced › Webhooks. Para un topic de pedido, el payload es el mismo objeto de pedido que devuelve la REST API. Cada entrega lleva una cabecera X-WC-Webhook-Signature: un hash HMAC-SHA256 en base64 del payload, creado con el secreto que elijas. ROASaurus comprueba esa firma antes de aceptar un pedido.
Dos detalles importan en la práctica. WooCommerce entrega los webhooks en segundo plano, por defecto con WP-Cron, así que una entrega puede retrasarse cuando esa cola va con retraso. Y WooCommerce desactiva un webhook tras más de cinco entregas fallidas seguidas.
REST API
La REST API permite que ROASaurus pida los pedidos por su cuenta. Con una clave de API de solo lectura, ROASaurus pide cada 5 minutos los pedidos processing y completed que han cambiado desde su última comprobación, con 30 minutos de solapamiento. Los pedidos que ya tiene se ignoran. Así se captura cualquier pedido que se le haya escapado a un webhook.
| Campo del pedido | Qué hace ROASaurus con él |
|---|---|
id | Se convierte en el id de evento order-1042, compartido por los eventos del servidor y del navegador |
total | El valor de la compra: el total final, con impuestos y gastos de envío |
| Email de facturación, teléfono, nombre, ciudad, provincia, código postal, país | Con hash SHA-256 y enviados como datos del cliente |
customer_ip_address, customer_user_agent | Se envían con el evento y se usan para vincular el pedido con un visitante |
line_items | Ids de producto (el id de variación cuando hay uno), cantidades y precios |
date_paid_gmt | La hora del evento para los pedidos de un webhook o de la REST API (la fecha de creación cuando no hay fecha de pago) |
meta_data | Con el plugin: el id de visitante y las cookies de Meta y TikTok |
Plugin o webhooks: dos formas de conectar
Ambas conexiones envían todos los pedidos pagados. Se diferencian en lo bien que cada pedido se vincula con el clic en el anuncio que trajo al comprador.
| Plugin de ROASaurus | Solo webhooks | |
|---|---|---|
| Qué instalas | Un plugin de WordPress (PHP 7.4 y WooCommerce 6.0 o superior) | Nada: un webhook en los ajustes de WooCommerce |
| Cómo llegan los pedidos | El plugin envía cada pedido pagado a la API de pedidos de ROASaurus | WooCommerce envía Order updated; comprobación opcional de la REST API cada 5 minutos |
| Script de tracking | Lo carga el plugin en cada página | Lo añades tú, por ejemplo con el plugin WPCode o en tu tema |
| Id de visitante y cookies de clic en el pedido | Sí, se guardan en el checkout (checkout clásico y por bloques) | No |
| Compra del navegador en la página de agradecimiento | Sí, con el mismo id de evento que el evento del servidor | No |
| Vinculación con la página de agradecimiento | Sí | No |
Puedes usar ambas a la vez. El plugin guarda el id de visitante en el pedido como metadatos del pedido, y el payload del webhook lo lleva consigo. ROASaurus guarda cada pedido una sola vez, por su id de pedido de WooCommerce, así que el plugin y el webhook nunca crean dos compras. El plugin también declara compatibilidad con el High-Performance Order Storage de WooCommerce.
¿Cómo se vincula un pedido de WooCommerce con el clic en el anuncio?
Una plataforma publicitaria solo puede dar el mérito de una compra a un anuncio cuando puede conectar ambos. ROASaurus lo hace vinculando el pedido con el visitante que hizo clic en el anuncio, y ese visitante lleva consigo los click ids (como fbclid y ttclid) y los parámetros UTM de la llegada. Prueba estos métodos en orden y se detiene en el primero que funciona:
- El id de visitante guardado en el pedido. Solo con el plugin. Es un vínculo exacto.
- La compra del navegador en la página de agradecimiento, que lleva el mismo id de pedido. Solo con el plugin.
- Un email con hash que el visitante dio antes en tu sitio, por ejemplo en un formulario emergente de Klaviyo, Attentive o Wisepops, o mediante una llamada Identify.
- La misma dirección IP y el mismo navegador, vistos desde 3 horas antes hasta 15 minutos después del pedido, pero solo cuando encaja exactamente un visitante. En redes compartidas, como oficinas y operadoras móviles, varios visitantes suelen compartir una misma dirección IP, y entonces ROASaurus no adivina.
ROASaurus espera un momento antes de enviar cada compra, para que el evento de la página de agradecimiento pueda llegar primero. Si el pedido sigue sin vincularse, lo intenta de nuevo en el momento del envío. La página Orders muestra el resultado por pedido en la columna Matched by. Los pedidos vinculados mediante el id de visitante del plugin muestran cart, la misma etiqueta que reciben los pedidos de Shopify.
| Enviado a Meta para el pedido 1042 | Vinculado (plugin) | Sin vincular (solo webhooks) |
|---|---|---|
Id de evento order-1042 | Sí | Sí |
| Email, teléfono, nombre y dirección con hash | Sí | Sí |
| Dirección IP y navegador del pedido | Sí | Sí |
Click id y id de navegador de Meta (fbc, fbp) | Sí | No |
Id de visitante con hash (external_id) | Sí | No |
| El clic en el anuncio en la atribución de ROASaurus | Campaña y anuncio del clic | Se muestra como directo o desconocido |
Esos identificadores de clic aumentan la tasa de coincidencia de Meta para el evento. Event Match Quality explica cómo los puntúa Meta.
Consentimiento en WooCommerce
Cada tienda de ROASaurus tiene el ajuste Respect visitor consent, que viene activado por defecto. En WooCommerce, el script de ROASaurus lee la decisión del visitante en la WP Consent API, que rellenan plugins de consentimiento como Complianz y CookieYes. También lee Cookiebot, OneTrust, los banners IAB TCF y Google consent mode. Hasta que el visitante acepte las cookies de marketing, el script no crea ningún id de visitante y no carga ningún píxel del navegador.
Cuando un visitante rechaza, el script no crea ningún id de visitante, no guarda click ids y no dispara píxeles del navegador, y el plugin no guarda cookies de tracking en el pedido. El pedido pagado se sigue enviando desde el servidor a tus plataformas publicitarias conectadas, con datos del cliente con hash a partir del pedido y con la dirección IP y el navegador del pedido. Si tu asesoramiento legal indica que los eventos de compra también necesitan consentimiento previo, ponte en contacto con ROASaurus antes de activar las compras desde el servidor. La página de ayuda sobre consentimiento tiene los detalles, y el artículo sobre Consent Mode v2 y RGPD trata el contexto legal.
Cómo configurar el server-side tracking en WooCommerce
Estos son los pasos para la vía del plugin:
- Añade la tienda
En ROASaurus, ve a Add a store, elige WooCommerce e introduce el dominio que visitan tus clientes.
- Crea una clave de API
Abre Store settings y, en Orders API, haz clic en Create API key. Copia la clave enseguida: solo se muestra una vez, junto a la clave de tu tienda. El endpoint es la dirección que va delante de
/api/v1/ordersen esa página. - Instala el plugin
Descarga el plugin y sube el zip en WordPress en Plugins › Add New Plugin › Upload Plugin. Después, actívalo.
- Introduce las claves
En WooCommerce › ROASaurus, introduce el endpoint, la clave de la tienda y la clave de API, y guarda.
- Conecta tus plataformas publicitarias
En Tracking & platforms, usa Connect with Facebook o Add pixel para Meta, TikTok y las demás. Marca la opción de cargar también el píxel del navegador, para que la compra de la página de agradecimiento se deduplique con el evento del servidor.
- Configura el consentimiento y prueba
Bloquea el script en tu herramienta de consentimiento hasta que el visitante acepte las cookies de marketing y después haz un pedido de prueba.
Sin el plugin, añade la etiqueta de script de Tracking & platforms a todas las páginas y después crea el webhook. La pestaña Connection de tu tienda muestra la URL de tu webhook. Mantenla en privado: cualquiera que tenga la URL puede enviar pedidos a tu tienda.
WooCommerce › Settings › Advanced › Webhooks › Add webhook Status Active Topic Order updated Delivery URL (your webhook URL from the Connection tab) Secret (a secret of your choice; paste the same one in ROASaurus) API version WP REST API Integration v3
Para la copia de seguridad, crea una clave en WooCommerce › Settings › Advanced › REST API con acceso de lectura. Pega la consumer key y el secret en la pestaña Connection, guarda y pulsa Test connection. Fetch orders now descarga de inmediato los pedidos pagados recientes. La página de la integración con WooCommerce enumera todas las opciones en un solo lugar.
¿Cómo pruebas el server-side tracking en WooCommerce?
Prueba primero el lado del navegador, después haz un pedido y síguelo hasta las plataformas publicitarias.
- Abre tu tienda con
?roasaurus=connecteden la dirección. Una alerta confirma que el script se ejecuta. Con?roasaurus=debug, el script registra 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 de prueba. El pago contra reembolso es lo más rápido, porque el pedido pasa a processing de inmediato.
- En la pestaña Connection, Last order received muestra la hora del último pedido.
- En el Event log, en Server deliveries, cada plataforma conectada recibe una línea con el estado sent y la respuesta de la plataforma.
PageView visitor 3f9c2a1eScript cargado con consentimientoPurchase order-1042Página de agradecimiento, píxeles del navegador disparadosorder 1042 processingRecibido del pluginMeta Purchase sentMismo id de evento, deduplicadoTikTok 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. Quítalo cuando termines, porque el código es solo para pruebas. Si el plugin no puede entregar un pedido, añade una nota de pedido en WooCommerce que empieza por «ROASaurus: order not sent», seguida del error.
Errores que debes evitar
- Usar el topic Order created. Los pedidos pagados mediante redirección se crean como pending payment. ROASaurus ignora los pedidos sin pagar, y no llega un segundo mensaje «created» cuando se recibe el pago. Usa Order updated.
- Un secret que no coincide. ROASaurus rechaza una entrega cuya firma no coincide con el secret que tiene. Tras más de cinco fallos seguidos, WooCommerce desactiva el webhook. Corrige el secret, vuelve a poner el webhook en Active y añade la clave de la REST API, para que se recuperen los pedidos del intervalo.
- Dos herramientas que envían el mismo píxel. Si otro plugin también envía tu píxel de Meta o de TikTok, usa sus propios ids de evento y la plataforma cuenta cada venta dos veces. Desactívalo para ese píxel. Consulta cómo evitar el doble conteo y los eventos de compra duplicados.
- Esperar eventos de añadido al carrito. En WooCommerce el script registra por sí solo las visualizaciones de página. Las visualizaciones de producto y los añadidos al carrito se detectan automáticamente solo en Shopify. Un desarrollador puede enviarlos con una llamada track a
tlq. - Esperar conversiones de Google Ads. ROASaurus solo envía conversiones de compra de Google Ads desde el checkout de Shopify. Desde WooCommerce envía las compras a Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn y las demás plataformas publicitarias que conectes.
- Transferencias bancarias tardías. Meta acepta eventos del servidor hasta 7 días después de la hora del evento. El plugin envía el pedido con la fecha en que se creó, así que Meta rechaza una transferencia confirmada más de 7 días después del checkout. Los pedidos que llegan por webhook o por la REST API usan en cambio la fecha de pago. Ten en cuenta también que la página de agradecimiento dispara la compra del navegador en el checkout, antes de que se pague la transferencia. Si el pago se confirma más de 48 horas después, Meta y TikTok no pueden fusionar las copias del navegador y del servidor, y una transferencia que nunca se paga conserva su compra del navegador.
Cuando los pedidos fluyen, los informes de atribución muestran de qué campañas y anuncios proceden.
Fuentes
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters