El conector principal de Shopify vincula cualquier número de tiendas Shopify a Odoo 19 Community mediante registros de vinculación con alcance por compañía. Sincroniza productos, inventario, clientes, pedidos, devoluciones, reembolsos y fulfillment a través de la GraphQL Admin API.
Los webhooks firmados proporcionan la vía rápida, OCA queue_job proporciona una ejecución duradera y la reconciliación programada repara los eventos perdidos o retrasados. La incorporación, las comprobaciones de estado, un panel de sincronización, la recuperación de errores y la retención configurable facilitan la operación diaria.
Las imágenes de producto cubren la imagen principal de cada producto y las imágenes de sus variantes. Sincronizar los demás medios de producto de Shopify requiere el módulo glue Shopify Connector Website Sale, que se instala automáticamente con eCommerce.
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 19.0Conecta Odoo con una o varias tiendas Shopify, importando y exportando clientes, empresas B2B, catálogos, colecciones, pedidos, entregas e inventario a través de la API de Shopify, con trabajos en segundo plano, webhooks y un panel de sincronización.
Este módulo vincula Odoo con tiendas Shopify. Cada tienda se configura como una instancia de Shopify vinculada a una sola compañía de Odoo, y cada registro de Shopify importado se almacena como un registro de vinculación que recuerda su ID de Shopify, su última fecha de sincronización y si está pendiente, sincronizado o en error.
Qué pueden hacer los usuarios: - Importar clientes, direcciones, etiquetas y empresas B2B, ubicaciones, contactos y catálogos (con sus listas de precios) de Shopify desde botones de la instancia. - Exportar opcionalmente los cambios de clientes de Odoo de vuelta a Shopify cuando Odoo es el propietario del campo. - Importar productos, colecciones, pedidos, entregas e inventario, y enviar el inventario a Shopify. - Probar la conexión, reparar las suscripciones de webhooks, comprobar el estado de los webhooks, duplicar una configuración y abrir los errores de vinculación desde la instancia.
Comportamiento automático: - Las importaciones se ejecutan en segundo plano mediante trabajos de cola, con trabajos de reconciliación programados que reparan los eventos perdidos o retrasados. - Se crea automáticamente un contacto de cliente invitado para cada instancia, y al cambiar la compañía de la instancia se vuelve a crear. - Las reglas de negocio bloquean la mezcla de registros de distintas instancias o compañías, impiden la edición manual de la pertenencia a colecciones inteligentes y mantienen una vinculación por ID de Shopify por instancia. - Los errores se almacenan en la vinculación y se escriben en un registro.
Afecta a pedidos de venta, albaranes de inventario, transportistas de entrega, listas de precios, contactos y categorías de contactos, y añade sus propios menús y pantallas de panel.
Depende de
Lo necesitan otros módulos
Menús que añade
Modelos y campos (30)
- sale.order · amplía un modelo existenteshopify_note, shopify_tags, shopify_risk_hold, shopify_risk_level, shopify_binding_ids (Shopify Bindings), shopify_discount_codes
- res.partner · amplía un modelo existenteshopify_customer_binding_ids (Shopify Customer Bindings)
- shopify.log · modelo nuevolevel, entity, res_id (Related Document ID), message, direction, res_model (Related Document Model), instance_id
- stock.quant · amplía un modelo existente
- shopify.order · modelo nuevosource, odoo_id (Odoo Sales Order), is_draft, company_id, created_at (Shopify Created At), order_name (Shopify Order), risk_level, shop_total, raw_payload (Raw Shopify Payload), source_name, cancelled_at (Shopify Cancelled At), draft_status, order_number, shop_subtotal, discount_codes, payload_digest, replaced_by_id (Completed Order Binding), shop_tax_total, fulfillment_ids (Fulfillments), shop_money_json, financial_status, line_binding_ids (Shopify Lines), missing_tax_rate, shop_currency_id, order_currency_id, presentment_total, source_identifier, fulfillment_status, refund_binding_ids (Shopify Refunds), return_binding_ids (Shopify Returns)
- stock.picking · amplía un modelo existenteshopify_risk_hold, shopify_fulfillment_ids (Shopify Fulfillments)
- shopify.refund · modelo nuevonote, amount, move_id (Credit Note), line_ids (Refund Lines), company_id, created_at, currency_id, raw_payload, order_binding_id, restock_requested
- shopify.return · modelo nuevoname, closed_at, company_id, created_at, raw_payload, return_lines, return_status, exchange_lines, total_quantity, order_binding_id
- product.product · amplía un modelo existenteshopify_variant_binding_ids (Shopify Variant Bindings)
- sale.order.line · amplía un modelo existenteshopify_line_id, shopify_is_shipping, shopify_is_gift_card, shopify_expected_total, shopify_discount_amount
- shopify.catalog · modelo nuevotitle, status, company_id, odoo_pricelist_id, price_list_shopify_id (Shopify Price List GID)
- shopify.company · modelo nuevoodoo_id (Odoo Company), company_id, external_id (Shopify External ID), contact_binding_ids (Company Contacts), location_binding_ids (Company Locations)
- product.template · amplía un modelo existenteshopify_binding_ids (Shopify Bindings)
- shopify.customer · modelo nuevotags, odoo_id (Odoo Customer), company_id, tax_exempt, tag_category_ids (Imported Shopify Tags), address_binding_ids (Shopify Addresses), email_marketing_state
- shopify.instance · modelo nuevoname, state, active, shop_url (Shop Domain), client_id (Shopify App Client ID), company_id, api_version (API Version), access_token (Admin API Access Token), webhook_secret (Shopify App Client Secret), accept_webhooks, tax_mapping_ids (Tax Mappings), dashboard_orders, guest_partner_id (Shopify Guest Customer), shop_currency_id (Shopify Shop Currency), auto_confirm_paid, field_mapping_ids (Product Field Ownership), order_binding_ids (Orders), b2b_import_enabled (Import Shopify B2B), dashboard_products, dashboard_variants, dashboard_webhooks, log_retention_days, shopify_plus_state, carrier_mapping_ids (Carrier Mappings), catalog_binding_ids (B2B Catalogs), company_binding_ids (B2B Companies), dashboard_companies, dashboard_customers, dashboard_financial, dashboard_locations
- shopify.location · modelo nuevoname, active (Active in Shopify), address, is_mapped (Mapped), company_id, warehouse_id (Odoo Warehouse), odoo_location_id (Odoo Internal Location), legacy_resource_id (Shopify Legacy ID), fulfills_online_orders
- shopify.collection · modelo nuevoname, active, handle, collection_type, product_binding_ids (Products)
- shopify.order.line · modelo nuevosku, odoo_id (Odoo Sales Line), company_id, is_shipping, is_gift_card, shop_unit_price, current_quantity, order_binding_id, variant_shopify_id, refundable_quantity, shop_discount_total, shop_discounted_total, presentment_unit_price, presentment_discount_total, presentment_discounted_total
- shopify.fulfillment · modelo nuevoorigin, company_id, picking_id (Odoo Delivery), shopify_id (Shopify GID), raw_payload, tracking_url, idempotency_key, tracking_number, order_binding_id, tracking_company, fulfillment_status (Status), location_shopify_id, fulfillment_order_ids (Fulfillment Orders)
- shopify.refund.line · modelo nuevotax, quantity, subtotal, refund_id, shopify_id, restock_type, order_line_binding_id
- shopify.tax.mapping · modelo nuevorate, tax_id, company_id, country_id, instance_id, price_included
- res.partner.category · amplía un modelo existenteshopify_company_id
- shopify.binding.mixin · modelo nuevostate, shopify_id (Shopify GID), instance_id (Shopify Instance), error_message, last_sync_date (Last Synchronization), external_updated_at (Shopify Updated At)
- shopify.field.mapping · modelo nuevofield, owner, instance_id
- shopify.webhook.event · modelo nuevostate, topic, payload (Raw Payload), webhook_id, instance_id, error_message
- product.pricelist.item · amplía un modelo existente
- shopify.carrier.mapping · modelo nuevocarrier_id, company_id, instance_id, tracking_company
- shopify.company.contact · modelo nuevoroles, title, odoo_id (Odoo Company Contact), company_id, company_binding_id, customer_shopify_id
- shopify.gateway.journal · modelo nuevogateway, company_id, journal_id, instance_id
- shopify.gateway.payment · modelo nuevoamount, gateway, payment_id, instance_id, order_binding_id, transaction_shopify_id
Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.
Fuentes · Odoo 18.0
Confirmado el 2026-11-03 en la rama 18.0 de OCA/connector-shopify.
terminal Instalación y uso
Documentación de OCA · Odoo 19.0Configuración
Fuente · Odoo 19.0Aplicación de Shopify
Desde el 1 de enero de 2026, Shopify ya no permite a los comerciantes crear aplicaciones personalizadas heredadas desde el administrador de Shopify. Crea la aplicación en el Dev Dashboard de Shopify:
- Abre el Dev Dashboard de la organización propietaria de la tienda. Odoo obtiene sus tokens de acceso con la concesión de credenciales de cliente, que solo funciona cuando la aplicación y la tienda pertenecen a la misma organización. Ser propietario de la tienda o instalar la aplicación en ella no es suficiente. Para una tienda de prueba, créala desde la página Dev stores de ese mismo Dev Dashboard.
- Crea la aplicación y completa su versión. El conector no tiene página en el administrador de Shopify y nunca envía a los usuarios por las páginas de autorización de Shopify, así que:
- App URL:
https://shopify.dev/apps/default-app-home, el valor predeterminado que Shopify da para las aplicaciones que no están embebidas. - Embed app in Shopify admin: desmarcado.
- Allowed redirection URL(s): ninguna. Si Shopify solicita una, introduce de nuevo la App URL.
- Use legacy install flow: desmarcado, para que instalar la aplicación conceda los scopes seleccionados en la versión. Con el flujo heredado la aplicación tendría que solicitarlos ella misma, lo que el conector no puede hacer.
- Webhooks: ninguno. Odoo crea sus propias suscripciones durante el onboarding.
- Webhooks API version:
2026-01, la versión de la Admin API que usa el conector. Shopify escribe los payloads de las suscripciones que crea Odoo en esta versión. - Scopes:
read_customers,write_customers,read_draft_orders,read_fulfillments,read_inventory,write_inventory,read_locations,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_orders,read_products,write_productsyread_returns. Para importar pedidos de más de 60 días, selecciona tambiénread_all_orders, que Shopify puede tener que aprobar. - Publica la versión e instala la aplicación en la tienda. Tras un cambio posterior de scopes, publica una nueva versión y aprueba el cambio en la tienda.
- Copia el client ID y el client secret desde la página Settings de la aplicación.
La aplicación debe tener acceso a datos protegidos de clientes: nombres, direcciones, correos electrónicos y números de teléfono. Para las aplicaciones creadas por el comerciante esto depende del plan de la tienda, y el plan Basic no lo incluye. Sin ello, Shopify rechaza algunos de los webhooks de pedidos y fallan las importaciones de pedidos y clientes.
Una aplicación personalizada heredada creada antes de 2026 sigue funcionando. Deja el client ID vacío e introduce en su lugar el Admin API access token y la API secret key de la aplicación.
Odoo
- Añade OCA
queue_joby este repositorio a la ruta de addons de Odoo, y luego instala Shopify Connector. - Concede a los operadores el grupo Shopify Manager. El administrador lo recibe al instalar.
- Establece el parámetro de sistema
web.base.urlen una dirección HTTPS pública de Odoo, y estableceweb.base.url.freezeenTruepara que no cambie cuando un administrador inicie sesión desde otra dirección. Shopify envía sus webhooks a<web.base.url>/shopify/webhook/<instance id>y descarga las imágenes de producto exportadas desde la misma dirección. - Abre Shopify > Configuration > Instances y haz clic en Start Onboarding:
- Credentials: introduce el dominio
<store>.myshopify.com, el client ID y el client secret, y luego Test Connection. Odoo solicita el token de acceso y lo renueva antes de que caduque, cada 24 horas. El client secret también verifica las firmas de los webhooks. - API Scopes: añade cualquier scope que falte a una nueva versión de la aplicación, publícala, aprueba el cambio en la tienda y vuelve a comprobar.
- Asigna las ubicaciones de Shopify, revisa las asignaciones de impuestos generadas, elige las políticas de sincronización, instala los webhooks y encola las importaciones iniciales.
- Revisa las asignaciones de pasarelas de pago y transportistas antes de habilitar el procesamiento desatendido de pedidos y envíos.
Los trabajos se ejecutan en los canales root.shopify.import, root.shopify.export y root.shopify.webhook. Añade queue_job a los módulos de todo el servidor, después de los valores predeterminados de Odoo base,rpc,web, y asigna a cada canal una capacidad en odoo.conf, por ejemplo:
[options]
server_wide_modules = base,rpc,web,queue_job
[queue_job]
channels = root:4,root.shopify.import:2,root.shopify.export:1,root.shopify.webhook:1Use Shopify > Dashboard para monitorizar los estados de vinculación, el backlog de la cola, los errores recientes, el estado de los webhooks, las programaciones de drift y los tamaños de las tablas operativas.
Los cambios normales fluyen a través de webhooks y trabajos idempotentes. Use las acciones de importación de entidades o reconciliación para la puesta al día manual. Para los fallos, corrija la configuración o los datos subyacentes, seleccione las vinculaciones con error y elija Retry Failed Shopify Bindings. Restablecer a pendiente borra el estado sin programar trabajo.
Ejecute Check Webhooks después de cambiar dominios o credenciales y repare cualquier suscripción faltante o mal enrutada. Nunca edite los IDs de Shopify ni las cargas útiles sin procesar.
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.