Todo lo que tu equipo técnico necesita para conectar tu tienda con el motor de recomendaciones Xellers. El proceso completo toma menos de 2 horas.
Xellers necesita dos fuentes de datos de tu tienda/ecommerce para generar recomendaciones personalizadas. Ambas deben estar disponibles como endpoints públicos (con token de seguridad básicos, deben venir por GET con nombre token).
ID de producto, SKU o la variable identificadora debe ser idéntica en ambos archivos. De lo contrario, no será posible realizar la unión de los productos y el sistema no podrá procesar la información correctamente. No te preocupes; en el 99% de los e-commerce esto ya viene configurado así por defecto, por lo que seguramente en el tuyo también se podrá hacer sin problemas.Un endpoint que devuelve todos los productos activos de la tienda. El formato puede ser cualquiera pero recomendamos en formato JSON o XML.
| Campo | Tipo(max) | Estado | Descripción / Ejemplo |
|---|---|---|---|
| id | string(20) | Obligatorio | ID único del producto. Ej: "1234" |
| sku | string(20) | Obligatorio | Código comercial. Ej: "SKU-001" |
| nombre | string(50) | Obligatorio | Nombre completo del producto |
| familia | string(50) | Obligatorio | Familia principal. Ej: "Herramientas" |
| categoria | string(50) | Obligatorio | Categoría. Ej: "Herramientas Eléctricas" |
| link | string(100) | Obligatorio | URL completa de la ficha del producto. Ej: "https://tienda.cl/ficha/1234" |
| thumbs | string(100) | Obligatorio | URL de la imagen principal del producto |
| stock | int(11) | Obligatorio | Cantidad en stock. > 0 |
| keyword | string(255) | Recomendado | Palabras clave del producto. Mejora la IA semántica. |
| marca | string(50) | Recomendado | Marca del producto |
| descripcion | string(300) | Recomendado | Descripción del producto. A más texto, mejor la IA. |
| precio | int(11) | Recomendado | Precio actual del producto |
| precio_descuento | int(11) | Recomendado | Precio con descuento si aplica |
[
{
"id": "1234",
"sku": "TALADRO-001",
"nombre": "Taladro Percutor 650W Bosch",
"familia": "Herramientas",
"categoria": "Herramientas Eléctricas",
"link": "https://micienda.cl/ficha/1234/taladro-percutor-650w",
"thumbs": "https://mitienda.cl/imagenes/1234-1.jpg",
"stock": 15,
"precio": 89990,
"precio_descuento": 79990,
"marca": "Bosch",
"descripcion": "Taladro percutor de 650W ideal para trabajos en madera y metal...",
"keyword": "taladro, percutor, bosch, herramienta eléctrica"
},
{
"id": "5678",
"sku": "TALADRO-002",
"nombre": "Taladro Electrico Dewalt",
"familia": "Herramientas",
"categoria": "Herramientas Eléctricas",
"link": "https://micienda.cl/ficha/5678/taladro-electrico-dewalt",
"thumbs": "https://mitienda.cl/imagenes/5678-1.jpg",
"stock": 234,
"precio": 129990,
"precio_descuento": 10990,
"marca": "Dewalt",
"descripcion": "Taladro Electrico ideal para trabajos en madera y metal...",
"keyword": "taladro, percutor, dewalt, herramienta eléctrica"
},
// ... más productos
]https://mitienda.cl/api/productos?token=MITOKEN<productos> <item> <id>1234</id> <sku>TALADRO-001</sku> <nombre>Taladro Percutor 650W Bosch</nombre> <familia>Herramientas</familia> <categoria>Herramientas Eléctricas</categoria> <link>https://micienda.cl/ficha/1234/taladro-percutor-650w</link> <thumbs>https://mitienda.cl/imagenes/1234-1.jpg</thumbs> <stock>15</stock> <precio>89990<precio> <precio_descuento>79990</precio_descuento> <marca>Bosch</marca> <descripcion>Taladro percutor de 650W ideal para trabajos en madera y metal...</descripcion> <keyword>taladro, percutor, bosch, herramienta eléctrica</keyword> </item> <item> <id>1234</id> <sku>TALADRO-001</sku> <nombre>Taladro Percutor 650W Bosch</nombre> <familia>Herramientas</familia> <categoria>Herramientas Eléctricas</categoria> <link>https://micienda.cl/ficha/1234/taladro-percutor-650w</link> <thumbs>https://mitienda.cl/imagenes/1234-1.jpg</thumbs> <stock>15</stock> <precio>89990<precio> <precio_descuento>79990</precio_descuento> <marca>Bosch</marca> <descripcion>Taladro percutor de 650W ideal para trabajos en madera y metal...</descripcion> <keyword>taladro, percutor, bosch, herramienta eléctrica</keyword> </item> </productos> // ... más productos
https://mitienda.cl/api/productos?token=MITOKENUn endpoint que devuelve el historial de pedidos pagados. Incluye qué productos se compraron en cada pedido. Este archivo es la base del motor de co-compras.
| Campo XML / JSON | Estado | Descripción / Ejemplo |
|---|---|---|
| ID (pedido) | Obligatorio | Identificador único del pedido. Ej: <ID>5001</ID> |
| Fecha | Obligatorio | Fecha del pedido. Formato: YYYY-MM-DD. Ej: <Fecha>2024-01-15</Fecha> |
| Estado | Obligatorio | Estado del pedido. El motor filtra solo pedidos pagados. Ej: "Pagado", "Acreditado" |
| ID_producto | Obligatorio | ID del producto comprado. Debe coincidir con el ID del feed de Productos. Ej: <ID_producto>1234</ID_producto> |
| Cantidad | Obligatorio | Unidades compradas. Ej: <Cantidad>2</Cantidad> |
| Obligatorio | Email del cliente. Usado para segmentación en email marketing. | |
| SKU | Obligatorio | SKU del producto. Ej: <SKU>SKU-001</SKU> |
| Nombre | Obligatorio | Nombre del producto en el pedido |
| Precio_unitario | Obligatorio | Precio unitario del producto en el pedido |
| Familia | Recomendado | Familia del producto en el pedido |
| Categoria | Recomendado | Categoría del producto en el pedido |
| URL_Producto | Recomendado | Link del producto. |
| Thumbs | Recomendado | URL de imagen. |
[
{
"ID": "1234",
"Fecha": "2024-01-15",
"Estado": "Pagado",
"email": "cliente@email.com",
"productos_pedidos"[
{
"ID_producto": "1234",
"Cantidad": 1,
"Precio_unitario": 89990,
"Nombre": "Taladro Percutor 650W Bosch",
"Codigo": "TALADRO-001"
},{
"ID_producto": "454",
"Cantidad": 2,
"Precio_unitario": 89990,
"Nombre": "Taladro 650W Bosch",
"Codigo": "TDRO-001"
}
]
}
// ... más productos
]<pedidos> <pedido> <ID>5001</ID> <Fecha>2024-01-15</Fecha> <Estado>Pagado</Estado> <email>cliente@email.com</email> <productos_pedidos> <producto> <ID_producto>1234</ID_producto> <!-- debe coincidir con feed de productos --> <Cantidad>1</Cantidad> <Precio_unitario>89990</Precio_unitario> <Nombre>Taladro Percutor 650W Bosch</Nombre> <Codigo>TALADRO-001</Codigo> </producto> <producto> <ID_producto>5678</ID_producto> <Cantidad>2</Cantidad> <Precio_unitario>4990</Precio_unitario> <Nombre>Broca Set 10 Piezas</Nombre> <Codigo>BROCA-SET-010</Codigo> </producto> </productos_pedidos> </pedido> <!-- ... más pedidos --> </pedidos>
Selecciona tu plataforma de eCommerce para ver las instrucciones específicas de cómo generar los endpoints requeridos.
Shopify tiene una API REST nativa que expone productos y pedidos. Se recomienda crear una app privada para generar el token de acceso.
Configuración → Apps → Desarrollar apps → Crear app. Asigna permisos: read_products y read_orders.GET /admin/api/2024-01/products.json?limit=250&fields=id,title,variants,product_type,vendor,images,handle. Tu dev debe crear un endpoint custom que normalice la respuesta al formato requerido.GET /admin/api/2024-01/orders.json?status=any&financial_status=paid&limit=250&created_at_min=FECHA. Tu dev debe transformar la respuesta JSON a XML o dejarlo como JSON, en el formato requerido.page_info.id → id, title → nombre, product_type → categoria, vendor → marca, images[0].src → thumbs, handle → construir URL del producto.WooCommerce incluye una API REST. Se accede con claves Consumer Key y Consumer Secret generadas desde el panel.
WooCommerce → Configuración → Avanzado → API REST → Añadir clave. Permiso: Solo lectura.GET /wp-json/wc/v3/products?per_page=100&consumer_key=CK&consumer_secret=CS. Normalizar al formato requerido.GET /wp-json/wc/v3/orders?status=completed&per_page=100. Transformar a XML / JSON en el formato requerido incluyendo los line_items de cada pedido.categories[0].name como categoria y categories[0].parent como familia.id → id, name → nombre, sku → sku, stock_quantity → stock, images[0].src → thumbs, permalink → link.VTEX tiene una API robusta. Se requiere AppKey y AppToken generados desde el panel de administración.
Configuración de la cuenta → Gestión de la cuenta → Claves de aplicación. Asignar roles: Read products y Read orders.GET /api/catalog_system/pub/products/search?_from=0&_to=49 con headers X-VTEX-API-AppKey y X-VTEX-API-AppToken.GET /api/oms/pvt/orders?f_status=invoiced&page=1&per_page=100. Transformar a XML / JSON incluyendo los items de cada orden.GET /api/logistics/pvt/inventory/skus/{skuId} para obtener el stock total consolidado.productId → id, productName → nombre, brand → marca, categories → familia/categoria, images[0].imageUrl → thumbs, link → link.PrestaShop tiene su propio sistema de Webservices que debe habilitarse desde el panel de administración.
Parámetros Avanzados → Webservices → Habilitar. Crear una clave con permisos GET en products, orders y order_details.GET /api/products?output_format=JSON&display=[id,name,reference,price,categories,images,link_rewrite]. La URL del producto debe construirse con link_rewrite.GET /api/orders?output_format=JSON&filter[current_state]=5 (estado 5 = pagado). Luego cruzar con /api/order_details para obtener los productos de cada orden.GET /api/stock_availables?filter[id_product]=ID para obtener el stock de cada producto.Magento 2 tiene una API REST completa. Se recomienda crear un Integration Token de solo lectura.
Sistema → Extensiones → Integraciones → Agregar nueva integración. Asignar permisos: Catalog → Products y Sales → Orders.GET /rest/V1/products?searchCriteria[pageSize]=100&searchCriteria[currentPage]=1 con header Authorization: Bearer TOKEN.GET /rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=status&searchCriteria[filter_groups][0][filters][0][value]=complete. Los productos están en items[].items[].BASE_URL/pub/media/catalog/product + media_gallery_entries[0].file.id → id, sku → sku, name → nombre, extension_attributes.stock_item.qty → stock, custom_attributes[category_ids] → categoria.Odoo expone sus datos a través de JSON-RPC (nativo en todas las versiones) y REST API (disponible desde Odoo 16 con el módulo web_rest_api). Se recomienda crear un usuario técnico de solo lectura.
Configuración → Usuarios → Nuevo usuario. Asignar perfil de acceso interno con permisos de solo lectura en Inventario y Ventas. Generar API Key desde el perfil del usuario (Preferencias → API Keys).product.template. El endpoint es POST /web/dataset/call_kw con método search_read y campos: id, name, default_code, categ_id, list_price, qty_available, website_url, image_1920.sale.order con filtro state = 'sale' (pedidos confirmados/pagados). Cruzar con sale.order.line para obtener los productos de cada pedido. Tu dev debe transformar la respuesta a XML / JSON en el formato requerido.image_1920 o como URL pública vía /web/image/product.template/ID/image_1920. Usar la URL pública para el campo thumbs.categ_id como categoría del producto. Si tienes categorías del sitio web (ecommerce), usar el modelo product.public.category para obtener la jerarquía familia/categoría.id → id, default_code → sku, name → nombre, categ_id[1] → categoria, qty_available → stock, list_price → precio, /web/image/product.template/ID/image_1920 → thumbs, website_url → link.website_sale), asegúrate de que los productos tengan is_published = True para que el link del producto sea accesible públicamente.Jumpseller tiene una API REST con autenticación OAuth2. Se accede con un Login (email) y un Token generado desde el panel de administración.
Preferencias → API → Generar Token. Las credenciales son tu email de login + el token generado.GET https://api.jumpseller.com/v1/products.json?login=EMAIL&authtoken=TOKEN&limit=100&page=1&status=available. Iterar páginas hasta obtener todos los productos.GET https://api.jumpseller.com/v1/orders.json?login=EMAIL&authtoken=TOKEN&status=paid&limit=100&page=1. Los productos de cada orden están en el campo products dentro de cada orden.&page=1, &page=2, etc. hasta que la respuesta venga vacía.images[0].url dentro de cada producto. Son URLs absolutas y públicas — úsalas directamente como thumbs.id → id, sku → sku, name → nombre, categories[0].name → categoria, stock → stock, price → precio, images[0].url → thumbs, url → link, brand → marca, description → descripcion.categories[0] como categoria y categories[0].parent si existe como familia. Si no hay categoría padre, usar la misma categoría en ambos campos.Antes de enviar los endpoints a Xellers, verifica que todo esté correcto:
id del feed XML / JSON coincide con el ID_producto del XML / JSON de ventasthumbs) son absolutas y accesibles públicamentelink) son correctas y llevan a la ficha del productostock refleja el inventario real (no siempre 0 ni siempre 99)https://) con certificado válidoYYYY-MM-DD