Odoo + Shopify Sync: Products, Orders, and Inventory

Complete guide to syncing Odoo 19 with Shopify. Covers product sync, real-time order import, bidirectional inventory, financial reconciliation, and multi-store management.

E
ECOSIRE Research and Development Team
|19 de marzo de 202612 min de lectura2.6k Palabras|

Odoo + Shopify Sync: productos, pedidos e inventario

Shopify genera más del 10% de todos los ingresos del comercio electrónico en EE. UU. Para las empresas que utilizan Odoo 19 Enterprise como columna vertebral operativa y Shopify como tienda de cara al cliente, mantener ambos sistemas sincronizados no es negociable: los sistemas desconectados significan errores de inventario, retrasos en el procesamiento de pedidos y dolores de cabeza contables.

Esta guía cubre la integración completa de Odoo-Shopify: decisiones de arquitectura, sincronización del catálogo de productos, importación de pedidos en tiempo real, gestión de inventario bidireccional, conciliación de Shopify Payments y gestión de múltiples tiendas.

Conclusiones clave

  • Se admiten las API REST y GraphQL de Shopify; GraphQL preferido para Shopify Plus
  • La sincronización del producto es bidireccional: crear en Odoo → publicar en Shopify o importar desde Shopify
  • La sincronización del inventario se basa en eventos: se activa con cada movimiento de stock en Odoo
  • El webhook de pedidos de Shopify a Odoo ofrece una importación de pedidos casi instantánea (< 30 segundos)
  • La conciliación de Shopify Payments maneja pagos, tarifas y reembolsos automáticamente
  • El inventario de múltiples ubicaciones se sincroniza con la función de múltiples ubicaciones de Shopify
  • Los catálogos de Shopify Plus B2B (mayoristas) enlazan con las listas de precios de Odoo
  • Flujo de devoluciones de Shopify a Odoo RMA con ajuste de stock automatizado

Arquitectura de integración

Enfoque API:

La integración utiliza la API de administración REST de Shopify para la mayoría de las operaciones y webhooks para actualizaciones basadas en eventos:

  • REST API: CRUD de producto, lectura de pedidos, gestión de inventario
  • API GraphQL: operaciones masivas (exportación de catálogos grandes), precios B2B (Shopify Plus)
  • Webhooks: creación de pedidos en tiempo real, actualización de pedidos, creación de reembolsos, actualización del nivel de inventario

Topología de conexión:

Odoo 19 (ERP Backend)
    ↕ Product, Inventory, Price
Shopify Admin API / Webhooks
    ↕ Real-time events
Shopify Storefront (Customer-facing)

Autenticación:

Shopify utiliza claves API de aplicaciones privadas o OAuth de aplicaciones personalizadas:

  • Aplicación privada: más sencilla, recomendada para integraciones de una sola tienda
  • Aplicación personalizada (OAuth): requerida para la distribución de Shopify App Store o administración de múltiples tiendas

Para el conector ECOSIRE, configura una aplicación personalizada en el Panel de socios de Shopify.


Configuración de la aplicación Shopify

Paso 1: crea una aplicación personalizada en Shopify

  1. Ve a tu administrador de Shopify → Configuración → Aplicaciones y canales de ventas
  2. Haga clic en Desarrollar aplicaciones → Crear una aplicación.
  3. Establezca el nombre de la aplicación (por ejemplo, "Integración de Odoo")
  4. Configure los alcances de la API:
    read_products, write_products
    read_orders, write_orders
    read_inventory, write_inventory
    read_shipping, write_shipping
    read_customers, write_customers
    read_fulfillments, write_fulfillments
    read_locations
    read_price_rules, write_price_rules
    
  5. Establezca la URL del webhook: https://your-odoo.com/shopify/webhook
  6. Instale la aplicación → copie Token de acceso a la API de administrador

Paso 2: Configurar en Odoo

Navega a Ventas → Shopify o Inventario → Tiendas Shopify:

CampoValor
Nombre de la tiendaEl nombre de tu tienda
Dominio Shopifytutienda.myshopify.com
Token de API de administradorDesde aplicación personalizada
Versión API2024-10 (último estable)
Secreto del webhookGenerado automáticamente, utilizado para verificar webhooks
Almacén predeterminadoAlmacén principal para pedidos de Shopify
MonedaMoneda de la tienda
EmpresaEmpresa Odoo para esta tienda
Diario de pagosDiario de Shopify Payments
Diario de reembolsosDiario de reembolsos de Shopify
Prefijo de pedidopor ejemplo, "SHO-"

Paso 3: registrar webhooks

Después de guardar la configuración, haga clic en Registrar Webhooks. El conector se suscribe a:

  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0
  • CÓDIGO0

Sincronización del catálogo de productos

Opciones de dirección de sincronización:

ModoDescripciónCaso de uso
Odoo → ShopifyOdoo es maestro, Shopify es displayNuevos productos creados en Odoo ERP primero
Shopify → OdooShopify es amo, Odoo es esclavoTienda Shopify existente, agregando Odoo
BidireccionalLos cambios en cualquiera de los sistemas se sincronizan en ambos sentidosExtraño; riesgo de conflictos

Recomendado: Odoo → Shopify para nuevas implementaciones. El maestro de productos de Odoo proporciona datos más completos (información de compra, costos, lista de materiales) que Shopify no necesita.

Mapeo de campos de producto:

Campo OdooCampo Shopify
Nombre del productoTítulo
Descripción de ventasCuerpo HTML
Categoría de productoTipo de producto
EtiquetasEtiquetas
Precio de listaPrecio
Comparar precioComparar al precio
Código de barras (EAN)Código de barras
PesoPeso
Imágenes del productoImágenes
Ventas correctasPublicado (verdadero/falso)
Tipo de producto (servicio/almacenable)Requiere envío

Sincronización de variantes:

Shopify admite hasta 3 opciones de productos (Color, Tamaño, Material) con un máximo de 100 variantes por producto. El conector mapea los atributos del producto de Odoo:

  1. Odoo product.template → Producto Shopify
  2. Odoo product.product (variantes) → Variantes de Shopify
  3. Valores de atributos de Odoo → Valores de opciones de Shopify

Sincronización masiva del catálogo:

Para configuración inicial con catálogos grandes (más de 1000 productos):

  1. Navega a Shopify → Catálogo → Sincronización masiva
  2. Seleccione categorías de productos para sincronizar
  3. Ejecute el trabajo de sincronización masiva (proceso en segundo plano)
  4. Supervise el progreso en el registro de sincronización.
  5. Revisar y resolver cualquier error de mapeo.

Gestión de pedidos

Importación de pedidos en tiempo real a través de webhooks:

Cuando un cliente realiza un pedido en Shopify, el webhook orders/create se activa en cuestión de segundos. El conector:

  1. Recibe la carga útil del webhook de Shopify
  2. Verifica la firma del webhook (HMAC-SHA256)
  3. Crea una orden de venta en Odoo inmediatamente.
  4. Devuelve 200 OK a Shopify (evita el reintento)

El tiempo de extremo a extremo desde el pago de Shopify hasta el pedido de venta de Odoo: normalmente de 3 a 15 segundos.

Mapeo de datos del pedido:

Campo ShopifyCampo Odoo
ID de pedidoReferencia (con prefijo)
Nombre del clientenombre del socio res.
Correo electrónico del clienteCorreo electrónico del socio
Dirección de facturaciónDirección de factura
Dirección de envíoDirección de entrega
Artículos de líneaLíneas de orden de venta
Códigos de descuentoLíneas de descuento
Método de envíoTransportista de entrega
Costo de envíoLínea de tarifa de envío
Impuesto totalLíneas impositivas
Estado financieroEstado de pago
Estado de cumplimientoEstado de entrega
NotasNotas del cliente
EtiquetasEtiquetas internas

Campos de pedido personalizados:

Para comerciantes de Shopify Plus con atributos de pago personalizados:

  • Asignar atributos de notas de pedido de Shopify a campos personalizados de Odoo
  • Ejemplo: atributo "Número de pedido" → x_purchase_order_number en orden de venta
  • Ejemplo: "Mensaje de regalo" → note en orden de venta

Flujo de trabajo de procesamiento de pedidos:

Después de la importación, el conector gestiona el pedido a través del flujo de trabajo estándar de Odoo:

  1. Orden de venta confirmada
  2. Orden de entrega creada en Odoo WMS
  3. Recogidas, embalajes y envíos en almacén
  4. Entrega validada en Odoo (seguimiento ingresado)
  5. Connector envía cumplimiento a Shopify con número de seguimiento
  6. Shopify marca el pedido como "Cumplido" y envía un correo electrónico al cliente

Cumplimientos parciales:

Shopify admite pedidos con múltiples cumplimientos (envíe lo que esté disponible ahora, descanse más tarde). El conector maneja:

  • Entrega parcial en Odoo → cumplimiento parcial enviado a Shopify
  • Shopify muestra el estado de cumplimiento parcial al cliente
  • Los artículos restantes crean una entrega separada cuando hay stock disponible

Sincronización de inventario

Sincronización de inventario bidireccional:

El inventario fluye en ambas direcciones para mantener la precisión:

Odoo → Shopify (dirección principal):

  • Cada movimiento de stock en Odoo activa una actualización del nivel de inventario en Shopify
  • Cantidad disponible = Disponible - Reservado - Stock de seguridad
  • Actualizaciones a través de la API de nivel de inventario de Shopify

Shopify → Odoo (alternativa):

  • Si el inventario de Shopify se ajusta manualmente (administrador o aplicación), se activa el webhook
  • Connector crea un ajuste de inventario de Odoo con nota de auditoría

Shopify multiubicación:

La función de múltiples ubicaciones de Shopify rastrea el inventario por ubicación física. Asigne almacenes de Odoo a ubicaciones de Shopify:

Almacén OdooUbicación de Shopify
Almacén PrincipalUbicación principal
Costa este de DCUbicación en la costa este
Costa oeste de DCUbicación en la costa oeste
Remitente directoUbicación del proveedor

El conector envía cantidades por ubicación a Shopify según el mapeo de ubicación del almacén.

Salvaguardias de precisión del inventario:

  • El buffer de stock de seguridad evita que Shopify muestre todo el inventario disponible
  • Manejo de falta de stock: cuando la cantidad llega a 0, el inventario de Shopify = 0 (no negativo)
  • Continuar vendiendo cuando esté agotado: configurable por producto (algunos vendedores permiten pedidos pendientes)

Conciliación de pagos de Shopify

Estructura de tarifas de Shopify Payments:

PlanoTarifa en líneaTarifa en persona
Básico2,9% + 30¢2,7%
Shopify2,6% + 30¢2,5%
Avanzado2,4% + 30¢2,4%
Más0,2% (Pagos Shopify)0,2%

Conciliación de pagos:

Shopify Payments realiza remesas a tu cuenta bancaria cada 2 o 3 días hábiles. El conector importa datos de pago:

  1. Descargue el informe de pagos de Shopify Payments (o mediante API)
  2. Importar a través de Shopify → Finanzas → Importar pago
  3. Connector crea entradas de diario:
  • Ingresos (montos netos de venta por pedido)
  • Gastos de Shopify Fees (procesamiento de pagos)
  • Ajustes de reembolsos
  • Pago neto por cobrar
  1. Cuando llegue la transferencia bancaria: conciliar con el diario de Shopify Payments

Manejo de reembolsos de Shopify:

Cuando se procesa un reembolso en Shopify:

  1. Se activa el webhook refunds/create
  2. Connector crea una nota de crédito en Odoo contra la factura original
  3. Si se devolvió stock (reabastecido): crea una transferencia de devolución
  4. Publica nota de crédito → saldo compensado contra la cuenta del cliente

Integración B2B de Shopify Plus

Shopify Plus incluye funciones B2B (catálogos mayoristas, condiciones de pago, pago neto). El conector los integra con los precios B2B de Odoo:

Mapeo de empresa y catálogo:

Shopify B2BEquivalente de Odoo
Empresares.empresa (o segmento de clientes)
CatálogoLista de precios
Condiciones de pagoCondiciones de pago en orden de venta
Borradores de pedidosCotizaciones (venta.pedido en borrador)

Sincronizar precios B2B:

  1. Crea un catálogo Shopify B2B en el conector
  2. Enlace a una lista de precios de Odoo
  3. Asignar a empresas B2B de Shopify
  4. Cambios de precios en la lista de precios de Odoo → enviados automáticamente al catálogo B2B de Shopify

Gestión de múltiples tiendas

Para marcas que operan múltiples tiendas Shopify (regiones, marcas, mayoristas versus minoristas):

Múltiples configuraciones de tienda:

Crea configuraciones de conectores separadas para cada tienda Shopify:

  • Diferentes credenciales API por tienda
  • Visibilidad de productos específicos de la tienda (algunos productos en todas las tiendas, algunos en específico)
  • Precios específicos de la tienda (precios regionales, mayoristas o minoristas)
  • Asignación de inventario específica de la tienda

Asignación de inventario entre tiendas:

Available for Store A = On-Hand - Reserve for Store B - Reserve for Store C - Safety Stock

Configure reglas de asignación para evitar la sobreventa cuando varias tiendas utilizan el mismo inventario.


Preguntas frecuentes

¿Cómo maneja el conector los metacampos de productos de Shopify para datos personalizados?

Los metacampos de Shopify almacenan datos personalizados sobre productos, pedidos y clientes. El conector asigna campos específicos de Odoo a metacampos de Shopify. Por ejemplo, asigne el campo x_care_instructions de Odoo a un metacampo product.care_instructions. Configure asignaciones de metacampos en la configuración avanzada del conector por tipo de recurso.

¿Puede el conector manejar los productos de suscripción de Shopify (Shopify Subscriptions o ReCharge)?

Los pedidos de suscripción estándar de Shopify se importan como pedidos regulares en Odoo. Para las suscripciones de ReCharge, los pedidos recurrentes se activan como webhooks orders/create individuales y se importan normalmente. El conector no administra el ciclo de vida de la suscripción en Shopify: procesa cada pedido independientemente de si se genera por suscripción o es único.

¿Qué sucede si el servidor Odoo no funciona cuando se activa un webhook de Shopify?

Shopify reintentó webhooks fallidos hasta 19 veces en 48 horas. El conector procesa el webhook cuando Odoo se recupera y la orden se importa. Para una confiabilidad de misión crítica, configure Odoo con infraestructura redundante (equilibrador de carga + múltiples trabajadores) y alertas de monitoreo para tiempo de inactividad. La ventana de reintento de 48 horas proporciona un margen para el mantenimiento planificado.

¿El conector es compatible con Shopify Markets (venta internacional multidivisa)?

Sí. Shopify Markets permite vender en múltiples monedas desde una sola tienda. El conector importa pedidos en la moneda de pago del comprador y crea pedidos de venta en esa moneda en Odoo. La conversión de moneda utiliza el tipo de cambio en el momento de la importación del pedido. Configure listas de precios separadas por Shopify Market en Odoo para obtener precios locales precisos.

¿Cómo manejo las tarjetas de regalo de Shopify en Odoo?

Las tarjetas de regalo de Shopify aparecen como método de pago en los pedidos. El conector crea una línea de pago independiente para la parte de la tarjeta de regalo de cada pedido. Configure una cuenta de responsabilidad de "Tarjetas de regalo Shopify" en Odoo. Cuando se vende una tarjeta de regalo (a través de un producto de tarjeta de regalo), los ingresos se difieren. Cuando se canjea en una orden, el pasivo se liquida y se reconocen los ingresos.


Próximos pasos

Una integración Odoo-Shopify bien ejecutada se vuelve invisible: simplemente funciona y mantiene ambos sistemas sincronizados sin intervención manual. El equipo de ECOSIRE ha creado integraciones Shopify-Odoo para todo, desde marcas D2C que procesan 50 pedidos al día hasta minoristas empresariales que procesan 10 000 pedidos al día.

Comuníquese con ECOSIRE sobre su integración Shopify-Odoo →

Explora los servicios Shopify de ECOSIRE →

Comparta los detalles de su tienda y los puntos débiles actuales y nuestro equipo analizará una integración Shopify-Odoo que elimine las brechas entre su ERP y su tienda.

E

Escrito por

ECOSIRE Research and Development Team

Construyendo productos digitales de nivel empresarial en ECOSIRE. Compartiendo perspectivas sobre integraciones Odoo, automatización de eCommerce y soluciones empresariales impulsadas por IA.

Chatea en whatsapp