Qué es esta tarea y cuándo corre
Shopify Connector for Odoo incluye una tarea programada llamada Procesar webhooks de Shopify (Shopify Process Webhooks). Pertenece al modelo de las tiendas de Shopify y ejecuta el método que procesa los eventos de webhook recibidos. Corre cada minuto y viene activa al instalar el módulo. Existe en todas las ramas publicadas (17.0, 18.0, 19.0 y 20.0); en Odoo 17.0, además, está configurada para repetirse sin fin.

Shopify › Configuración › Tiendas (Shopify › Configuration › Stores).Con Odoo en castellano la tarea se llama Procesar webhooks de Shopify; este esquema recoge su nombre en otros idiomas:

Procesar webhooks de Shopify; en alemán, «Shopify-Webhooks verarbeiten»; en francés, «Traiter les webhooks Shopify»; en italiano, «Elabora webhook Shopify»; en portugués, «Processar webhooks Shopify».
Cronología de una pasada
En Odoo 20.0, una pasada sigue este orden:
- Cada minuto Odoo lanza la tarea. Lo primero que hace es comprobar que quien la ejecuta es administrador del sistema; si no lo es, puede parar con
Only an administrator can run this scheduled action.y no procesa nada.
- Al empezar Busca los eventos de webhook que están pendientes. Los ordena del más antiguo al más reciente según su fecha de recepción (y, si coinciden, por orden de creación) y coge como máximo 50 en cada pasada.
- Evento sin tienda Si un evento no tiene tienda asociada, la tarea lo marca como fallido, le pone la hora de proceso y un mensaje de error, y pasa al siguiente.
- Evento con tienda La tarea pide a la tienda que procese ese evento según su tema (más abajo, tema por tema). Si todo va bien, el evento queda como procesado, con su hora de proceso, el resultado guardado y sin mensaje de error. Después de cada evento, la tarea guarda los cambios en la base de datos.
- Si el procesado falla El evento queda como fallido, con la hora de proceso, el texto del error y el resultado parcial (los contadores de pedidos, productos y stock). La tarea no se detiene: sigue con el siguiente evento.
- Si falla algo más Si una excepción se escapa del procesado de un evento, la tarea la anota en el registro del servidor, deshace los cambios pendientes de esa vuelta y continúa con el resto.
- Al acabar los eventos Busca pedidos de Shopify que tengan un pedido de venta asociado en borrador o enviado, cuya tienda tenga activada la confirmación automática de ventas y que no lleven la marca de pedido de venta manual. Los toma de los actualizados más recientemente a los más antiguos, hasta 50, y pide confirmarlos; si esta parte falla, el error se anota y la tarea no se detiene.
- Al terminar Si se ha confirmado algún pedido de venta, el código lo deja anotado en el registro del servidor. Si esta última parte falla, se anota el error y se deshace solo ese paso: lo ya guardado de los eventos se mantiene.
Qué hace con cada evento según su tema
El tema del evento se lee en mayúsculas y decide qué ocurre:
APP_UNINSTALLED: la tienda se desactiva y se vacían su token de acceso, su token de actualización y la fecha de caducidad del token.- Temas que empiezan por
ORDERS_: si la tienda tiene activada la sincronización de pedidos por webhook, la tarea pasa el pedido del evento al proceso de sincronización de pedidos y guarda en el resultado cuántos se han tratado. - Temas que empiezan por
PRODUCTS_: si la tienda tiene activada la sincronización de productos por webhook, la tarea pasa el producto del evento al proceso de sincronización de productos y guarda en el resultado cuántos se han tratado. - Temas que empiezan por
INVENTORY_LEVELS: solo si la tienda tiene activada la sincronización de stock por webhook y, además, la sincronización de stock en general, la tarea pasa el cambio de inventario al proceso que lo aplica; si ese proceso lo confirma, el resultado anota una actualización de stock.
Un detalle que importa: si el tema no es ninguno de estos, o si el ajuste correspondiente de la tienda está desactivado, la tarea no pasa nada a sincronizar, pero el evento igualmente queda como procesado, con los contadores a cero. Un evento procesado no significa, por tanto, que se haya tocado un pedido, un producto o el stock.
Qué mirar si no hace nada
- La tarea ha de estar activa. Viene activa al instalar y corre cada minuto.
- Quién la ejecuta. Si la lanza alguien que no es administrador del sistema, puede parar con
Only an administrator can run this scheduled action. - Solo coge eventos pendientes. Un evento marcado como fallido no vuelve a entrar en esta tarea. Si hay muchos pendientes, en cada pasada se procesan los más antiguos, hasta 50, y el resto espera a las siguientes.
- Resultado con contadores a cero. Pasa cuando el tema del evento no es de los que la tarea trata o cuando la tienda no tiene activada la sincronización por webhook de ese tipo (para stock, también la sincronización de stock en general). El evento se marca como procesado sin pasar nada a sincronizar.
- Tienda desactivada. Un evento
APP_UNINSTALLEDdesactiva la tienda y borra sus tokens. - Pedidos de venta que siguen en borrador. La confirmación automática exige que la tienda la tenga activada, que el pedido de venta esté en borrador o enviado y que el pedido de Shopify no lleve la marca de pedido de venta manual. Solo mira hasta 50 pedidos por pasada.
Las tiendas se abren desde Shopify › Configuración › Tiendas (Shopify › Configuration › Stores). Para ver ese menú necesitas el permiso Operador (Operator) en el tramo Configuración (Configuration) y Visor (Viewer) en el tramo Shopify.
Precio y ayuda
El módulo es de pago único por versión y necesita la suscripción a FlexigoTech Cloud, plan Conector: 49 € al mes o 490 € al año, sin IVA. Está publicado para Odoo 17, 18, 19 y 20. La conexión pasa por FlexigoTech Cloud, que guarda cifradas las credenciales, vigila la sincronización y avisa por correo si falla.
Si estás implantando Odoo con Shopify o necesitas una integración a medida, FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores. Tienes más detalle en la página del módulo y en su ficha de Odoo Apps.
Sigue leyendo
Comprobado en el código del conector (versión 17.0 y 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): data/ir_cron_data.xml
- Código del módulo: flexigobe_shopify_seller_connector 17.0 (437257e3): data/ir_cron_data.xml
- Código del módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_instance.py
- Código del módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
