← Guía de feeds de Clickwise

WooCommerce · WP All Import · XML

Importar un feed de Clickwise en WooCommerce con WP All Import

Actualizada: 2026-09-30.


1. Qué cubre esta guía

Clickwise entrega feeds de productos por mercado (esquema RSS/XML de Google Shopping) a los afiliados aprobados en un programa. Cada ítem trae GTIN, título, descripción, precio con moneda, imagen, disponibilidad y un enlace de compra con tracking de comisión. Esta guía muestra cómo convertir ese feed en productos External/Affiliate de WooCommerce: páginas de catálogo en tu propio sitio cuyo botón «Comprar» lleva al visitante al comercio a través del enlace trackeado, sin carrito, sin checkout y sin inventario de tu lado.

La herramienta es WP All Import Pro más el WooCommerce Add-On Pro (ambos de Soflyy). Las ediciones gratuitas de WordPress.org permiten subir un archivo y crear productos Simple, útil para una primera mirada al feed, pero no crean productos External/Affiliate, no descargan desde una URL y no se ejecutan por programación. Esas tres capacidades son justamente lo que necesita un catálogo de afiliado en producción, así que las ediciones Pro son requisito obligatorio para el flujo objetivo.

Lo que esta guía no cubre: envío a Google Merchant Center o Microsoft Merchant Center (la página de feeds de Clickwise lo trata aparte), tiendas multimoneda, productos variables y PHP personalizado en plantillas más allá de un ejemplo opcional.


2. Requisitos

Componente Mínimo para este flujo Notas
WordPress Versión actual (prueba local: 6.8.3) Sitio HTTPS con URL pública estable.
WooCommerce 9.2 o superior (prueba local: 9.9.5) 9.2 incorporó el campo nativo «GTIN, UPC, EAN or ISBN», guardado como global_unique_id.
PHP 7.4 o superior Requisito declarado por el add-on.
WP All Import Pro Versión actual Necesario para «Download a file › From URL» y para importaciones programadas/recurrentes. La edición gratuita (4.1.1) muestra un aviso de actualización en ambos.
WP All Import WooCommerce Add-On Pro Versión actual (probada la gratuita 1.5.5) Necesario para el tipo External/Affiliate product. El add-on gratuito lista «Import External/Affiliate products», «Import files from a URL» y «Cron Job/Recurring Imports» como funciones Pro y deshabilita los campos externos.
Acceso a cron del servidor, o el servicio Automatic Scheduling de WP All Import Uno de los dos Las URL de trigger/processing deben llamarse por programación desde fuera de WordPress.
Moneda de la tienda La misma del feed que pediste Mapear un precio no convierte automáticamente la moneda del feed. Un feed de EE. UU. viene en USD; pon WooCommerce › Ajustes › General › Moneda en USD.
Cuenta de afiliado en Clickwise Aprobada en al menos un programa La habilitación de feeds es automática una vez aprobado.

No mezcles ediciones: si están activos el WP All Import gratuito o el add-on gratuito, desactívalos y elimínalos antes de instalar la edición Pro (el aviso de actualización dice lo mismo).


3. Conseguir tu feed de Clickwise

  1. Regístrate como afiliado en https://partners.clickwise.net/en/signup_affiliate/. Durante el alta indica el mercado (país), la categoría y el formato que quieres. Elige XML para WP All Import (existen TSV, CSV y JSON, pero XML conserva los nombres de campo que usa esta guía).
  2. Aprobación en el programa. Los feeds se arman con los programas en los que estás aprobado. Aplica a los programas cuyos productos quieres listar; la aprobación la decide cada anunciante o red, programa por programa.
  3. Habilitación y URL firmada. Los afiliados aprobados reciben automáticamente la habilitación a los feeds elegibles. La URL firmada llega por correo electrónico. Es personal: incluye tu identidad de afiliado y los parámetros de tracking que te pagan.
  4. Vencimiento y renovación. Una URL firmada vence a los 90 días. La renovación es automática: cada ciclo del servicio revisa tu entrega y la renueva cuando corresponde, siempre que siga vigente tu elegibilidad en el programa. Una entrega reciente puede conservar su URL actual. Usa siempre la URL vigente del correo más reciente; cuando llegue un correo de renovación, pega la nueva URL en tu importación (sección 7.4).
  5. Reglas del programa. Cada programa tiene un terms_summary en tu panel: mercados, canales y usos permitidos. Descargar el feed equivale a aceptar los términos de la red de cada programa incluido, más los términos de afiliado de Clickwise. El resumen es una comodidad; no reemplaza los términos.
  6. La aceptación se registra en la descarga. La primera descarga GET completa del archivo se registra como aceptación (contador de descargas y marca de tiempo). Las peticiones HEAD y las respuestas 304 Not Modified no cuentan como descargas nuevas.

Reglas de seguridad para esta URL:

3.1 Ensaya con la muestra pública

Antes de usar tu URL firmada personal, puedes practicar todo el recorrido con https://partners.clickwise.net/feeds/guide/sample.xml. También puedes descargar CSV, TSV o JSON desde la página pública de feeds. Usa XML para seguir los nombres de campo de esta guía.

La muestra contiene tres productos ficticios, GTIN con checksum válido y enlaces a example.invalid: no se rastrea ni se vende nada. Tiene la misma estructura que un feed real. En Pro, elige Download a file › From URL y pega la URL de la muestra. En la edición gratuita, descarga el archivo y usa Upload a file.

Las capturas muestran un ensayo con la edición gratuita, tres productos ficticios y la misma estructura de campos. Usa la muestra pública enlazada arriba para tu propio ensayo.


4. Entender el feed antes de mapearlo

4.1 Estructura

Este es el contenido completo de la muestra pública, con sus tres ítems; sólo se ha añadido indentación. El XML es un documento RSS 2.0 con el namespace de Google Merchant. Los enlaces de esta muestra apuntan a example.invalid, sin compras ni tracking real:

<?xml version='1.0' encoding='utf-8'?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
 <channel>
  <title>Clickwise GTIN feed</title>
  <link>https://partners.clickwise.net/feeds/</link>
  <description>Authorized product offers with tracked affiliate links.</description>
  <item>
   <g:id>cw-gtin-demo-one</g:id>
   <title>Demo One</title>
   <description>Fictional sample product: Demo One.</description>
   <link>https://example.invalid/dl/demo-one/?sub_id=feed_demo_us</link>
   <g:image_link>https://partners.clickwise.net/static/images/clickwiselogo.png</g:image_link>
   <g:availability>in_stock</g:availability>
   <g:price>19.90 USD</g:price>
   <g:brand>Demo Brand</g:brand>
   <g:gtin>0000000000017</g:gtin>
   <g:identifier_exists>true</g:identifier_exists>
   <g:condition>new</g:condition>
   <g:product_type>Demo products</g:product_type>
   <g:custom_label_0>Demo Shop</g:custom_label_0>
   <g:custom_label_1>Demo Network</g:custom_label_1>
   <g:custom_label_2>US</g:custom_label_2>
   <g:seller_name>Demo Shop</g:seller_name>
   <g:ads_redirect>https://example.invalid/dl/demo-one/?sub_id=feed_demo_us</g:ads_redirect>
  </item>
  <item>
   <g:id>cw-gtin-demo-two</g:id>
   <title>Demo Two</title>
   <description>Fictional sample product: Demo Two.</description>
   <link>https://example.invalid/dl/demo-two/?sub_id=feed_demo_us</link>
   <g:image_link>https://partners.clickwise.net/static/images/clickwiselogo.png</g:image_link>
   <g:availability>in_stock</g:availability>
   <g:price>29.90 USD</g:price>
   <g:brand>Demo Brand</g:brand>
   <g:gtin>0000000000024</g:gtin>
   <g:identifier_exists>true</g:identifier_exists>
   <g:condition>new</g:condition>
   <g:product_type>Demo products</g:product_type>
   <g:custom_label_0>Demo Shop</g:custom_label_0>
   <g:custom_label_1>Demo Network</g:custom_label_1>
   <g:custom_label_2>US</g:custom_label_2>
   <g:seller_name>Demo Shop</g:seller_name>
   <g:ads_redirect>https://example.invalid/dl/demo-two/?sub_id=feed_demo_us</g:ads_redirect>
  </item>
  <item>
   <g:id>cw-gtin-demo-three</g:id>
   <title>Demo Three</title>
   <description>Fictional sample product: Demo Three.</description>
   <link>https://example.invalid/dl/demo-three/?sub_id=feed_demo_us</link>
   <g:image_link>https://partners.clickwise.net/static/images/clickwiselogo.png</g:image_link>
   <g:availability>out_of_stock</g:availability>
   <g:price>39.90 USD</g:price>
   <g:brand>Demo Brand</g:brand>
   <g:gtin>0000000000031</g:gtin>
   <g:identifier_exists>true</g:identifier_exists>
   <g:condition>new</g:condition>
   <g:product_type>Demo products</g:product_type>
   <g:custom_label_0>Demo Shop</g:custom_label_0>
   <g:custom_label_1>Demo Network</g:custom_label_1>
   <g:custom_label_2>US</g:custom_label_2>
   <g:seller_name>Demo Shop</g:seller_name>
   <g:ads_redirect>https://example.invalid/dl/demo-three/?sub_id=feed_demo_us</g:ads_redirect>
  </item>
 </channel>
</rss>

El elemento de registro es item, ruta /rss/channel/item. Tres elementos no llevan prefijo: title, description, link. Todo lo demás usa el prefijo g:.

Cómo muestra WP All Import el prefijo. WP All Import reescribe los nombres de etiqueta con namespace reemplazando los dos puntos por un guion bajo. En el árbol de elementos y en las plantillas vas a ver g_id, g_price, g_gtin, g_image_link, y los marcadores son {g_id[1]}, {g_price[1]}, {g_gtin[1]}, {g_image_link[1]}. No escribas {g:price[1]}; no resuelve. La captura siguiente muestra el árbol de elementos.

Tres ítems detectados; el namespace XML aparece como g_ en las plantillas.
Tres ítems detectados; el namespace XML aparece como g_ en las plantillas.

4.2 Referencia de campos

La tabla enumera los elementos que emite la muestra pública. Los campos vacíos de un feed real se omiten del ítem, así que un marcador puede resolver a una cadena vacía. Mapea en consecuencia. En un feed real, link y g:ads_redirect contienen enlaces de compra con tracking; en esta muestra son enlaces ficticios a example.invalid.

Elemento Presencia en el feed real Significado y cómo usarlo
g:id sí Identificador estable de la oferta (cw-gtin-<id de oferta>). Úsalo como SKU y como Unique Identifier de la importación. No cambia durante la vida de la oferta.
title sí Nombre del producto, texto plano, hasta 150 caracteres.
description sí Descripción en texto plano, hasta 5000 caracteres.
link sí La URL de compra trackeada. Es el Product URL del producto externo (ver 4.3).
g:image_link sí URL de la imagen principal (HTTPS).
g:availability sí Uno de in_stock, out_of_stock, preorder, backorder. El feed trae disponibilidad, nunca cantidades.
g:price sí NN.NN CCC, dos decimales, punto como separador decimal, código ISO de moneda (19.90 USD).
g:brand casi siempre Marca, hasta 70 caracteres.
g:gtin casi siempre GTIN como cadena de texto, con checksum validado, puede empezar con ceros. No es único por ítem cuando varios comercios venden el mismo producto.
g:identifier_exists sí true cuando hay GTIN (o marca + MPN); false en caso contrario.
g:condition sí new, used o refurbished.
g:product_type si no está vacío Ruta de categoría del comercio.
g:custom_label_0 si no está vacío Nombre del programa.
g:custom_label_1 si no está vacío Nombre de la red.
g:custom_label_2 si no está vacío Código de país del feed (US, DE, ...).
g:seller_name si no está vacío Tienda o nombre del programa; identifica al vendedor real.
g:ads_redirect sí Deeplink trackeado (igual a link salvo que se use una plantilla de landing).

Estos elementos no están en la muestra, pero pueden aparecer en tu feed real cuando se cumplen estas condiciones:

No hay elemento SKU. El SKU propio del comercio no se serializa. Usa g:id como SKU de tu lado y guarda el GTIN en el campo GTIN dedicado.

4.3 Qué URL va en «Product URL»

Todo el flujo se resume en que el botón de tu página de producto mande al visitante por el enlace trackeado. Nunca uses la URL de la página del comercio sin tracking, y nunca edites, acortes ni quites parámetros del enlace trackeado.

Regla práctica: Product URL siempre tiene que resolver a una URL que lleve el tracking de Clickwise. Ante la duda, abre un valor de link del archivo en una ventana privada y confirma que pasa por la redirección de tracking antes de llegar al comercio.

4.4 Identificadores: qué es único y qué no


5. Paso a paso: crear la importación

Ruta de menú en WordPress: All Import › New Import. Las capturas referenciadas abajo se tomaron con las ediciones gratuitas (WP All Import 4.1.1, WooCommerce Add-On 1.5.5) y un archivo sintético de tres ítems; ilustran el recorrido gratuito. Sigue los enlaces oficiales para los pasos Pro.

Paso 1 — Archivo de origen: Download a file › From URL (Pro)

  1. Haz clic en Download a file y luego en From URL.
  2. Pega la URL firmada vigente del correo de Clickwise y haz clic en Download.
  3. Espera a que termine la descarga y aparezca la vista previa del archivo.

Para un ensayo, pega la URL de la muestra pública https://partners.clickwise.net/feeds/guide/sample.xml en lugar de tu URL firmada personal.

Nunca hagas una captura de esta pantalla con tu URL real en el campo.

Paso Pro Este paso requiere WP All Import Pro. Instrucciones oficiales: WP All Import

Paso 2 — Create or modify: WooCommerce Products

En Create or modify… elige WooCommerce Products. Luego:

Carga local de la demo y destino WooCommerce Products.
Carga local de la demo y destino WooCommerce Products.

WP All Import detecta el elemento repetido automáticamente. En la corrida local el navegador de registros mostró «1 of 3» y la pantalla de confirmación indicó que procesaría «all 3 <item> records». Si alguna vez la detección elige el elemento equivocado, fija el XPath en /rss/channel/item.

Paso 3 — Plantilla: mapear los campos

Arrastra elementos del árbol de la derecha a los campos, o escribe los marcadores.

Title & Description

Mapeo de título y descripción en la demo local.
Mapeo de título y descripción en la demo local.
Campo Valor
Title {title[1]}
Description (contenido) {description[1]}
Short description dejar vacío, o una frase fija como «Vendido por {g_seller_name[1]}. Precio y disponibilidad según la última actualización del feed.»

WooCommerce Add-On › Product Type

Selecciona External/Affiliate product en el add-on Pro para habilitar Product URL y Button text.

Paso Pro Este paso requiere WP All Import Pro. Instrucciones oficiales: WP All Import

Pestaña General (campos externos y precio)

Campo Valor Por qué
Product URL {link[1]} El enlace de compra trackeado (ver 4.3).
Button text Buy (o «Comprar» si tu tienda está en español) Reemplaza el «Buy product» por defecto de WooCommerce. Sé honesto: el visitante sale de tu sitio.
Regular Price {g_price[1]} El valor del feed se ve como 19.90 USD.
Sale Price {g_sale_price[1]} Vacío cuando el feed no trae precio de oferta; WooCommerce muestra entonces sólo el precio regular.
Remove currency symbols from price marcado (por defecto) Quita USD para que 19.90 USD se guarde como 19.9. Verificado en la corrida local: guardado 19.9, mostrado $19.90.
Convert decimal separator to a period marcado (por defecto) Inofensivo; el feed ya usa punto.
Tax status / class dejar por defecto No se vende nada en tu sitio.

No apliques las opciones de ajuste de precio (porcentaje o fijo) salvo que las reglas del programa permitan precios alterados. El precio mostrado debe coincidir con el del comercio.

Pestaña Inventory

Ensayo Simple gratuito: SKU y GTIN mapeados, con ceros iniciales.
Ensayo Simple gratuito: SKU y GTIN mapeados, con ceros iniciales.
Campo Valor Por qué
SKU {g_id[1]} Único por oferta, estable, y WooCommerce exige SKU únicos.
GTIN, UPC, EAN or ISBN {g_gtin[1]} Campo nativo de WooCommerce 9.2+. El valor XML es texto, así que los ceros iniciales sobreviven (0000000000017 se guardó intacto en local).
Manage stock? No Los productos externos no pueden gestionar stock; WooCommerce rechaza manage_stock = yes para ellos.
Stock status dejar «Set automatically» Ver sección 8.1: WooCommerce fuerza los productos externos a In stock. No mapees g_availability aquí.
Stock quantity dejar vacío El feed no trae cantidades; nunca inventes una.

La disponibilidad como dato que sí puedas usar. Como WooCommerce ignora el estado de stock en productos externos, guarda la disponibilidad del feed donde puedas leerla:

Tu tema o un snippet corto puede mostrar entonces «No disponible actualmente en el comercio» cuando el atributo sea out_of_stock, y «Preventa» para preorder.

Sección Images

Mapeo de URL de imagen con la edición gratuita.
Mapeo de URL de imagen con la edición gratuita.

El host de imágenes es el CDN del comercio. Tu servidor tiene que poder alcanzarlo. Un CDN real de comercio sigue sin probarse.

Categorías y taxonomías

Mapea las categorías de producto de WooCommerce a {g_product_type[1]} (ruta de categoría del comercio) si está presente, o a una categoría fija por importación (por ejemplo la categoría que pediste en el alta). Usa la opción «hierarchical» con > como separador si mapeas g_product_type.

Advanced Options

Usa Draft mientras revisas la primera importación; después publica las ofertas verificadas. Fija el autor si hace falta.

Paso 4 — Import Settings

ID estable de oferta como Unique Identifier.
ID estable de oferta como Unique Identifier.
Ajuste Valor Por qué
How do you want to import Create new Products for each record in this import file La primera corrida crea; las siguientes actualizan por Unique Identifier.
Unique Identifier {g_id[1]} Estable por oferta. No aceptes el valor autodetectado si incluye el título (la autodetección local propuso título + id); bórralo y escribe {g_id[1]}. Cambiar el identificador después de la primera corrida genera duplicados, así que déjalo bien ahora.
Create new products from records newly present in your file marcado Las ofertas nuevas aparecen como productos nuevos.
Update existing products with changed data in your file marcado Precio, disponibilidad, enlace e imágenes siguen al feed.
Skip products if their data in your file has not changed marcado Corridas más rápidas.
Update all data / Choose which data to update ver abajo
Remove or modify products that are not present in this import file ver sección 8.3 Decídelo de forma deliberada.

Choose which data to update. Si editas a mano los productos importados (texto SEO, categorías extra, descripciones propias), elige Choose which data to update y marca sólo los campos que son del feed: datos de producto (precios, Product URL y texto del botón), custom fields para _clickwise_availability, atributos, imágenes y, opcionalmente, título. Deja sin marcar contenido, categorías y todo lo que curas manualmente. A la inversa, nunca edites a mano campos que son del feed (precio, Product URL, SKU, GTIN): la siguiente corrida programada los sobrescribe.

Scheduling Options: ver sección 7 (Pro).

Paso 5 — Confirm & Run

Revisa el resumen y haz clic en Confirm & Run Import. WP All Import procesa el archivo por lotes y muestra una pantalla «Import Complete» con la cantidad de registros creados, actualizados, omitidos y borrados. La importación queda listada en All Import › Manage Imports con su historial.

Sólo como referencia, la prueba local con la edición gratuita y productos Simple creó productos (tres productos creados, SKU cw-demo-us-1..3, precios 19.90/29.90/39.90, GTIN guardado con ceros iniciales). Esos no son productos externos y no validan el botón Comprar.

Primera corrida: tres productos Simple creados. Productos Simple de la edición gratuita.
Primera corrida: tres productos Simple creados. Productos Simple de la edición gratuita.
Tres productos Simple ficticios con precios y SKU de oferta.
Tres productos Simple ficticios con precios y SKU de oferta.

Paso Pro Este paso requiere WP All Import Pro. Instrucciones oficiales: WP All Import


6. Verificar el resultado

  1. Products › All Products: los productos existen, tipo «External/Affiliate», SKU = g:id, precio en la moneda de la tienda.
  2. Pantalla de edición › Inventory: el campo GTIN muestra el código completo con los ceros iniciales.
  3. Página de producto en el frontend: el botón dice «Buy» y su href es el enlace trackeado, sin cambios. Pasa el cursor por el botón o inspecciona el HTML. No hagas clic repetidamente desde tu propia IP; algunos programas lo cuentan como tráfico inválido.
  4. Página de tienda: los productos externos también muestran el botón en el listado (WooCommerce usa el Product URL como URL de «añadir al carrito» para este tipo).
  5. Manage Imports › History Logs: sin advertencias de imágenes ni de parseo de precios.

7. Mantener el catálogo actualizado (Pro)

Un feed cambia a diario: precios, ofertas, disponibilidad, ofertas nuevas, ofertas retiradas. La importación tiene que volver a correr por programación y volver a descargar el archivo cada vez.

7.1 Dos formas de programar

Ambas exigen una importación creada desde Download from URL o Use existing file; un archivo subido no puede programarse.

El WP-Cron propio de WordPress no es un sustituto. Sólo se dispara cuando alguien visita el sitio y los hostings pueden desactivarlo; la documentación de WP All Import está construida sobre tareas cron reales (wget, curl, lynx) o el servicio Automatic Scheduling.

7.2 Los dos endpoints

Ambos los sirve wp-load.php con tres parámetros de consulta:

Parámetro Valor Dónde encontrarlo
import_key tu clave secreta All Import › Settings (sección «Cron / Scheduling»). Mantenela secreta; autoriza la ejecución.
import_id ID numérico de la importación All Import › Manage Imports (columna ID).
action trigger o processing Ver abajo.

Ejemplo con marcadores: guarda el script como /opt/clickwise/refresh-feed.sh en tu servidor de cron. Reemplaza host, ID y clave en esa copia privada, limita los permisos a tu usuario (chmod 700) y usa rutas de log que pueda escribir. No se instaló ni ejecutó ningún cron en esta prueba.

#!/bin/sh
# SOLO PLANTILLA. Cópiala de forma privada al servidor de cron; reemplaza allí los marcadores.
set -eu
case "${1:-}" in
  trigger|processing) action="$1" ;;
  *) exit 2 ;;
esac
endpoint='https://your-store.example/wp-load.php'
import_key='YOUR_SECRET_KEY'
import_id='12'
if [ "$import_key" = 'YOUR_SECRET_KEY' ]; then
  echo 'Configure the private local import key before using this template.' >&2
  exit 2
fi
curl --fail --silent --show-error --max-time 110 --get "$endpoint" \
  --data-urlencode "import_key=$import_key" \
  --data-urlencode "import_id=$import_id" \
  --data-urlencode "action=$action" \
  --data-urlencode "rand=$(date +%s)"
15 3 * * * /opt/clickwise/refresh-feed.sh trigger >> /var/log/cw-trigger.log 2>&1
*/2 * * * * /opt/clickwise/refresh-feed.sh processing >> /var/log/cw-process.log 2>&1

Notas sobre la sintaxis de crontab:

Paso Pro Este paso requiere WP All Import Pro. Instrucciones oficiales: WP All Import · WP All Import

7.3 Qué hace una corrida programada

Cada ciclo de importación programada vuelve a obtener el archivo desde la URL firmada y aplica las reglas del Paso 4: crea ofertas nuevas, actualiza las cambiadas, omite las sin cambios y aplica lo que hayas elegido para los registros ausentes del archivo. Clickwise soporta revalidación por ETag/Last-Modified y gzip en el endpoint del feed; WP All Import descarga el archivo completo, lo cual está bien a cadencia diaria.

7.4 Renovar la URL firmada

Cuando llegue un correo de renovación (antes del vencimiento a 90 días), abre Manage Imports, usa Settings de la importación (pantalla de ajustes) para cambiar el archivo de origen, pega la URL nueva, guarda y ejecuta una vez a mano para confirmar. Si la URL vence o termina tu elegibilidad, la descarga falla; WP All Import registra el error y, al no tener un archivo válido, no procesa registros. Revisa el historial si una corrida programada deja de actualizar productos.


8. Disponibilidad, filtros y bajas

8.1 Valores de disponibilidad y qué hace WooCommerce con ellos

Valor del feed Significado Mapeo en producto Simple (referencia) Producto External/Affiliate
in_stock Disponible en el comercio instock Forzado a In stock por WooCommerce
out_of_stock No disponible ahora outofstock Sigue In stock en WooCommerce
preorder Se puede pedir, se envía después lo más cercano es onbackorder Rechazado; WooCommerce fuerza In stock
backorder Se puede pedir, se envía después onbackorder Rechazado; WooCommerce fuerza In stock

La clase de producto externo de WooCommerce fija el estado de stock en instock, manage_stock en falso y backorders en no sin importar lo que envíe un importador, y devuelve «External products cannot be stock managed.»

Consecuencias:

8.2 Quitar ofertas agotadas con un filtro de importación

Si prefieres no listar ofertas no disponibles, fíltralas en el Paso 2 (Create Filters): elemento g_availability, regla equals, valor in_stock. El XPath generado equivale a:

/rss/channel/item[g_availability = "in_stock"]

Entiende el efecto secundario: un producto que se importó estando in_stock y luego pasa a out_of_stock deja de cumplir el filtro, así que en la siguiente corrida WP All Import lo ve como ausente del archivo. Qué le pasa lo decide el ajuste «Remove or modify products that are not present» (8.3). Sin ese ajuste, el producto simplemente deja de actualizarse y queda publicado con su último precio. Mantén coherentes el filtro y la política de bajas.

8.3 Registros ausentes del archivo

Opción del Paso 4 Remove or modify products that are not present in this import file. Sub-opciones (etiquetas según la documentación de WP All Import):

Recomendación: Draft, nunca Delete. Los ID de producto se mantienen estables, así que cuando la oferta vuelve al feed se actualiza y republica con el mismo ID en lugar de recrearse.

Revalida antes de confiar en una señal de «faltante». Las ofertas desaparecen de un feed por varias razones: el comercio las retiró, el programa se pausó, cambió tu elegibilidad, o la URL firmada venció y la descarga devolvió un error. Antes de activar una política de baja destructiva, o cuando una corrida pase a borrador una cantidad inesperada de productos, revisa el historial por errores de descarga y confirma en tu panel de Clickwise que la entrega está vigente. Una descarga fallida no produce una lista vacía de ítems (WP All Import no puede parsearla y se detiene), pero un programa que temporalmente entregue cero ítems sí.


9. Buenas prácticas y cumplimiento


10. Preguntas frecuentes

¿Puedo hacerlo con el WP All Import gratuito y el WooCommerce Add-On gratuito? No. Las ediciones gratuitas suben un archivo y crean productos Simple (eso es lo que hizo la prueba local). Los productos External/Affiliate, la descarga desde URL y las corridas programadas son funciones Pro de los respectivos plugins. Un producto Simple con precio y sin enlace de compra no es un listado de afiliado.

¿Qué productos Pro exactamente? WP All Import Pro (el importador base) y el WooCommerce Add-On Pro. Soflyy los vende juntos como WooCommerce Import Package; el aviso de actualización del add-on gratuito nombra ese paquete.

La descarga desde URL falla o devuelve una página de error. ¿Y ahora? Verifica que pegaste la URL vigente del último correo. Las URL firmadas vencen a los 90 días; un correo de renovación trae una nueva. Pégala en los ajustes de origen de la importación y ejecuta a mano. Si no hubo correo de renovación, revisa tu elegibilidad en el programa en el panel de Clickwise.

Los marcadores {g:price[1]} no devuelven nada. Usa guiones bajos: {g_price[1]}. WP All Import reemplaza los dos puntos del namespace por guion bajo en los nombres de elemento. Los elementos sin prefijo siguen siendo {title[1]}, {description[1]}, {link[1]}.

Los precios se importan como 0 o como texto. Deja marcado «Remove currency symbols from price». El valor del feed es 19.90 USD; sin esa opción WooCommerce recibe una cadena no numérica. Confirma también que la moneda de la tienda coincide: Mapear el precio no convierte automáticamente la moneda del feed.

Faltan imágenes. Revisa el historial de la importación. Activa «Search through the Media Library › Match image by URL» para que las descargas exitosas se reutilicen en corridas posteriores.

Dos productos tienen el mismo GTIN y uno muestra el campo GTIN vacío. Es lo esperado. El GTIN identifica el producto, no la oferta; varios comercios pueden venderlo. WooCommerce exige unicidad de su campo GTIN, así que el segundo producto no puede guardar el mismo valor. Conserva g:id como SKU e identificador único; si necesitas el GTIN crudo en todos los productos sin excepción, guarda además {g_gtin[1]} en un custom field como _clickwise_gtin.

No hay botón «Añadir al carrito» en la página de producto. Correcto e intencional. Los productos External/Affiliate no se pueden agregar a un carrito; WooCommerce muestra un único botón con tu Button text («Buy») que enlaza al Product URL.

Las ofertas agotadas siguen apareciendo como In stock. WooCommerce fuerza los productos externos a In stock. Usa el atributo o custom field de disponibilidad para mostrar el estado real, o filtra in_stock al importar y pasa los productos ausentes a borrador.

¿Puedo poner la URL del feed en WP-Cron en vez de un cron del servidor? No como sustituto. Usa cron del servidor (dos tareas) o el servicio Automatic Scheduling de WP All Import.

¿Puedo editar a mano los productos importados? Sólo los campos que no son del feed, y sólo si configuras «Choose which data to update» para que las corridas siguientes no toquen esos campos. Precio, Product URL, SKU, GTIN y disponibilidad pertenecen al feed.

¿Y si quiero varios países? Pide un feed por mercado en el alta, crea una importación por feed y asegúrate de que cada tienda (o cada contexto de moneda) coincida con la moneda del feed. No combines dos feeds de país en una importación.


11. Referencias oficiales