Avant de créer le premier transporteur
La mise en service se joue à quelques endroits : la fiche de chaque transporteur, le journal de chaque requête et les champs de statut que vous verrez dans les listes. Voici les détails à avoir en tête avant de toucher à quoi que ce soit. Si vous cherchez la vue d'ensemble des menus et du flux, vous l'avez dans comment le module fonctionne en interne.
Les identifiants sont ceux de votre compte chez chaque transporteur
La création d'un transporteur comprend Carrier Name, Carrier Type (un champ de sélection), Enabled et Company. À côté se trouvent les identifiants. Le module décrit lui-même API Key comme « API key of the carrier account » et API Secret comme « API secret of the carrier account ». Account Number est le numéro de compte propre à chaque transporteur, et le champ donne comme exemples « FedEx account, UPS account, etc. ».
En pratique : ces trois données sont celles de votre compte chez chaque transporteur, alors gardez-les sous la main avant de vous asseoir pour configurer. Et comme chaque création porte sa propre Company, si vous travaillez avec plusieurs sociétés dans la même base, vérifiez à laquelle chaque transporteur est rattaché.
Custom Endpoint URL est facultatif et sert un cas précis
Parmi les champs du transporteur figure Custom Endpoint URL. Sa description le définit comme une URL d'API personnalisée et facultative pour « non-standard carriers ». Si votre transporteur n'entre pas dans ce cas, vous n'avez pas à le remplir.
Enabled et Connection Status se consultent séparément
Enabled est une case à cocher ; Connection Status est un champ de sélection à part. Ce sont deux données distinctes et il vaut mieux les vérifier séparément. À côté, vous avez Last Sync Time, avec la date et l'heure de la dernière synchronisation, et Last API Response, avec la dernière réponse de l'API. Sur la même fiche figurent aussi Created et Created By, avec la date de création et l'utilisateur qui l'a faite.

Hazmat Categories, avec six catégories et leur majoration à zéro.Chaque requête est enregistrée champ par champ
Le module conserve un enregistrement avec ces champs : Carrier, Request Type, Status, Timestamp, HTTP Status Code, Response Snippet, Error Message, Request Payload et Company. Quand quelque chose ne colle pas, c'est là qu'il faut regarder :
Request Type: le type de requête.Request Payload: ce qui a été envoyé.HTTP Status Code: le code HTTP de la réponse.Response Snippet: un extrait de la réponse.Error Message: le texte de l'erreur.Timestamp: le moment où cela s'est produit.
Avec Carrier et Timestamp, vous cernez vite de quel transporteur et de quel moment il s'agit. Pour interpréter chaque message précis, vous avez le guide des erreurs et avertissements du module.
Il y a plusieurs champs de statut et ils ne signifient pas la même chose
Dans le module, vous allez trouver plusieurs champs appelés status ou state, chacun avec son propre jeu de valeurs :
statusavecSuccess,FailedetTimeout.statusavecSuccess,ErroretLabel Exists.statusavecDraft,Generated,PrintedetFailed.statusavecActive,DegradedetDown.statusavecDraft,In Progress,Completed,FailedetPaused.statusavecDraft,Completed,FailedetPartial.stateavecOpen,Submitted,Approved,RejectedetPaid.stateavecDraftetDone.status_filteravecDraft,Ready-to-ShipetAll.
Remarquez que Failed et Draft apparaissent dans plusieurs d'entre eux. Quand vous filtrez, ou quand quelqu'un de l'équipe vous dit que quelque chose est en Failed, demandez dans quelle liste il l'a vu avant de chercher la cause.
Le champ state le plus long va de Draft à Cancelled
Un des champs state du module parcourt ces valeurs : Draft, Blocked, Cost Quoted, Ready to Ship, In Transit, Out for Delivery, Delivered, Attempted Delivery, Returned to Sender, Lost, Damaged et Cancelled. Il y a aussi deux champs, status et current_status, avec Pre-Label, In-Transit, Out-for-Delivery, Delivered, Exception et Returned.
Attention à l'écriture : dans un cas c'est Out for Delivery et dans l'autre Out-for-Delivery ; de même pour Ready to Ship et le Ready-to-Ship de status_filter. Gardez-le en tête quand vous cherchez ou créez des filtres enregistrés.

Export Intrastat sur la liste des expéditions (Shipping › Shipments), avec des expéditions DHL Express en Ready to Ship et Delivered.
Bulk Print Labels avec deux expéditions DHL Express sélectionnées ; le texte de l'assistant parle d'un PDF unique ou d'un ZIP.
Create Return (avec expédition d'origine, transporteur, type de service, Email Customer et notes de retour) puis à l'enregistrement de la facture du transporteur avec Record Carrier Invoice.last_health_check_status a trois valeurs
Le champ last_health_check_status prend Success, Failed ou Unknown. Pendant la première semaine, notez chaque jour laquelle des trois s'affiche et comparez-la avec Last Sync Time et Last API Response du transporteur.
Quoi vérifier pendant la première semaine
Avec ce qui précède, la revue des premiers jours se résume ainsi :
- Chaque transporteur a
API Key,API SecretetAccount Numberde son compte, et la bonneCompany.
Custom Endpoint URLn'est rempli que là où le cas des « non-standard carriers » s'applique.
EnabledetConnection Statusde chaque transporteur, consultés séparément.
Last Sync TimeetLast API Response, chaque jour.
- La valeur de
last_health_check_status.
- Pour chaque requête en échec :
HTTP Status Code,Error Message,Response SnippetetRequest Payload.
- Quels enregistrements sont en
Blocked,ExceptionouAttempted Delivery.
Ce que ça coûte et comment FlexigoTech vous aide
Le module coûte 9 € HT par version d'Odoo, en paiement unique, pour 17, 18, 19 et 20 ; sur Odoo 19 et 20, il nécessite en plus l'abonnement à FlexigoTech Cloud, dont le plan Conector coûte 49 €/mois ou 490 €/an HT (Pro : 98 €/mois ou 980 €/an), avec jusqu'à 3 comptes de la plateforme (Pro : 10). Cette connexion via FlexigoTech Cloud conserve les identifiants chiffrés, surveille la synchronisation et envoie un e-mail en cas d'échec ; sans abonnement, ou avec le service suspendu, ce que fournit l'abonnement s'arrête et les données restent dans votre Odoo.
Vous trouverez les détails sur la fiche Odoo Apps et sur la page du module sur flexigotech.com.
Chez FlexigoTech, nous mettons en place Odoo 17, 18, 19 et 20 et développons des connecteurs et des intégrations sur mesure. Si vous avez besoin d'aide pour créer vos transporteurs, examiner les premiers échecs ou adapter le flux d'expéditions à votre activité, parlez-nous de votre cas.
À lire aussi
Vérifié dans le code du connecteur (version 20.0) et dans les sources citées
Sources
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_api_log.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_config.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_batch_job.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/carrier_label.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/claim.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/cost_reconciliation.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/rate_lookup.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/shipment.py
- Code du module : flexigo_advanced_shipping_carrier_integration 20.0 (ffa31c5f): models/tracking.py
- Code du module : 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
