Antes de dar de alta el primer transportista
La puesta en marcha se juega en pocos sitios: la ficha de cada transportista, el registro de cada petición y los campos de estado que vas a ver en las listas. Estos son los detalles que conviene tener claros antes de tocar nada. Si buscas la visión de conjunto de menús y flujo, la tienes en cómo funciona el módulo por dentro.
Las credenciales son las de tu cuenta con cada transportista
El alta de un transportista lleva Carrier Name, Carrier Type (un campo de selección), Enabled y Company. Junto a ellos van las credenciales. El propio módulo describe API Key como «API key of the carrier account» y API Secret como «API secret of the carrier account». Account Number es el número de cuenta propio de cada transportista, y el campo pone como ejemplos «FedEx account, UPS account, etc.».
La lectura práctica: esos tres datos son los de tu cuenta con cada transportista, así que tenlos a mano antes de sentarte a configurar. Y como cada alta lleva su propio Company, si trabajas con varias empresas en la misma base, comprueba a cuál queda asignado cada transportista.
Custom Endpoint URL es opcional y tiene un caso concreto
Entre los campos del transportista está Custom Endpoint URL. Su descripción lo define como una URL de API personalizada y opcional para «non-standard carriers». Si tu transportista no entra en ese caso, no tienes por qué rellenarlo.
Enabled y Connection Status se miran por separado
Enabled es una casilla; Connection Status es un campo de selección aparte. Son dos datos distintos y conviene revisarlos por separado. Al lado tienes Last Sync Time, con la fecha y hora de la última sincronización, y Last API Response, con la última respuesta de la API. En la misma ficha quedan también Created y Created By, con la fecha de alta y el usuario que la hizo.

Hazmat Categories, con seis categorías y su recargo a cero.Cada petición queda guardada campo a campo
El módulo guarda un registro con estos campos: Carrier, Request Type, Status, Timestamp, HTTP Status Code, Response Snippet, Error Message, Request Payload y Company. Cuando algo no cuadra, ese es el sitio donde mirar:
Request Type: qué tipo de petición era.Request Payload: lo que se envió.HTTP Status Code: el código HTTP de la respuesta.Response Snippet: un fragmento de la respuesta.Error Message: el texto del error.Timestamp: cuándo ocurrió.
Con Carrier y Timestamp acotas rápido de qué transportista y de qué momento hablas. Para interpretar cada mensaje concreto, tienes la guía de errores y avisos del módulo.
Hay varios campos de estado y no significan lo mismo
En el módulo vas a encontrar varios campos llamados status o state, cada uno con su propio juego de valores:
statusconSuccess,FailedyTimeout.statusconSuccess,ErroryLabel Exists.statusconDraft,Generated,PrintedyFailed.statusconActive,DegradedyDown.statusconDraft,In Progress,Completed,FailedyPaused.statusconDraft,Completed,FailedyPartial.stateconOpen,Submitted,Approved,RejectedyPaid.stateconDraftyDone.status_filterconDraft,Ready-to-ShipyAll.
Fíjate en que Failed y Draft aparecen en varios de ellos. Cuando filtres o cuando alguien del equipo te diga que algo está en Failed, pregunta en qué lista lo ha visto antes de buscar la causa.
El campo state más largo va de Draft a Cancelled
Uno de los campos state del módulo recorre estos valores: Draft, Blocked, Cost Quoted, Ready to Ship, In Transit, Out for Delivery, Delivered, Attempted Delivery, Returned to Sender, Lost, Damaged y Cancelled. Hay además dos campos, status y current_status, con Pre-Label, In-Transit, Out-for-Delivery, Delivered, Exception y Returned.
Ojo con la escritura: en un caso es Out for Delivery y en el otro Out-for-Delivery; lo mismo con Ready to Ship y el Ready-to-Ship de status_filter. Tenlo en cuenta al buscar o al crear filtros guardados.

Export Intrastat sobre la lista de envíos (Shipping › Shipments), con envíos de DHL Express en Ready to Ship y Delivered.
Bulk Print Labels con dos envíos de DHL Express seleccionados; el texto del asistente habla de un PDF único o un ZIP.
Create Return (con envío original, transportista, tipo de servicio, Email Customer y notas de devolución) y al registro de la factura del transportista con Record Carrier Invoice.last_health_check_status tiene tres valores
El campo last_health_check_status toma Success, Failed o Unknown. Durante la primera semana, apunta cuál de los tres muestra cada día y compáralo con Last Sync Time y Last API Response del transportista.
Qué revisar durante la primera semana
Con lo anterior, la revisión de los primeros días se resume así:
- Cada transportista tiene
API Key,API SecretyAccount Numberde su cuenta, y laCompanycorrecta.
Custom Endpoint URLsolo está relleno donde aplica el caso de «non-standard carriers».
EnabledyConnection Statusde cada transportista, mirados por separado.
Last Sync TimeyLast API Response, a diario.
- El valor de
last_health_check_status.
- En cada petición fallida:
HTTP Status Code,Error Message,Response SnippetyRequest Payload.
- Qué registros están en
Blocked,ExceptionoAttempted Delivery.
Lo que cuesta y cómo te ayuda FlexigoTech
El módulo cuesta 9 € sin IVA por versión de Odoo, en pago único, para 17, 18, 19 y 20; en Odoo 19 y 20, además, necesita la suscripción a FlexigoTech Cloud, cuyo plan Conector cuesta 49 €/mes o 490 €/año sin IVA (Pro: 98 €/mes o 980 €/año), con hasta 3 cuentas de la plataforma (Pro: 10). Esa conexión por FlexigoTech Cloud guarda cifradas las credenciales, vigila la sincronización y avisa por correo si falla; sin suscripción, o con el servicio suspendido, se para lo que da la suscripción y los datos se quedan en tu Odoo.
Tienes los detalles en la ficha de Odoo Apps y en la página del módulo en flexigotech.com.
En FlexigoTech implantamos Odoo 17, 18, 19 y 20 y desarrollamos conectores e integraciones a medida. Si necesitas ayuda para dar de alta tus transportistas, revisar los primeros fallos o adaptar el flujo de envíos a tu operativa, cuéntanos tu caso.
Sigue leyendo
Comprobado en el código del conector (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_api_log.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_config.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_batch_job.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_label.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/claim.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/cost_reconciliation.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/rate_lookup.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/shipment.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/tracking.py
- Código del módulo: flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): wizards/batch_processing_wizard.py
- apps.odoo.com/apps/modules/20.0/flexigo_advanced_shipping_carrier_integration
- apps.odoo.com/apps/modules/17.0/flexigo_advanced_shipping_carrier_integration
- apps.odoo.com/apps/modules/18.0/flexigo_advanced_shipping_carrier_integration
- apps.odoo.com/apps/modules/19.0/flexigo_advanced_shipping_carrier_integration
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
