Synchronisation PrestaShop

PrestaShop est le canal de vente ; la plateforme fait autorité sur le stock. Trois flux alimentent la plateforme depuis votre boutique :

  • la sync commandes, toutes les 3 h ;
  • la sync produits, toutes les 3 h, avec réconciliation des fournisseurs ;
  • les webhooks temps réel, qui appliquent exactement le même import, événement par événement.

Cette page décrit ce qu'il faut configurer, ce que chaque flux importe, et ce qu'il n'importe pas : le stock.

Configurer la connexion

Tout se règle dans le back-office, sur la page Configuration PrestaShop (/manage/integrations/prestashop/settings).

1. Connecter la boutique (onglet « API & Connexion »)

  1. Dans le back-office PrestaShop, ouvrez Paramètres avancés → Webservice, activez le webservice et créez une clé. La clé doit être active.
  2. Dans Inklura, ajoutez un site distant PrestaShop avec l'URL de la boutique et cette clé.

La plateforme lit les clients, commandes, produits, catégories, fabricants et fournisseurs de votre boutique, en lecture seule, via le module de synchronisation Inklura installé sur la boutique. Chaque lecture est authentifiée par cette clé.

2. Activer les webhooks (onglet « Webhooks »)

Les webhooks évitent d'attendre la sync suivante : une commande passée sur la boutique est prise en compte en quelques secondes.

  1. Activez les webhooks et choisissez un secret de signature. C'est ce secret qui identifie votre boutique : choisissez une valeur longue, propre à cette boutique.
  2. Côté PrestaShop, déclarez les URL affichées dans l'onglet, de la forme https://<votre domaine back-office>/api/webhooks/prestashop/{entity} avec entity = customers, products ou orders.
  3. Configurez l'émetteur pour qu'il envoie le secret dans l'en-tête X-Webhook-Signature. Le secret est envoyé tel quel : ce n'est pas une signature HMAC du corps.

Chaque appel est un POST (Content-Type: application/json) dont le corps porte un lot d'événements :

{
  "events": [
    { "entity": "orders", "action": "update", "id": 1234, "timestamp": "2026-01-15T10:30:00+01:00" }
  ]
}
Champ Obligatoire Description
id oui Identifiant PrestaShop de l'élément (nombre ou chaîne)
action oui create, update ou delete
entity non S'il est présent, doit correspondre à l'{entity} de l'URL
timestamp non Date de l'événement (ISO 8601), reprise dans le journal

Les événements sont traités dans l'ordre. Pour create et update, la plateforme relit l'élément sur la boutique : le corps n'a pas à transporter ses données. Un événement sans id ou sans action est marqué en échec dans les résultats, sans bloquer les suivants.

Exemple d'appel :

curl -X POST "https://<votre domaine back-office>/api/webhooks/prestashop/orders" \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Signature: <votre secret>" \
  -d '{"events":[{"entity":"orders","action":"update","id":1234,"timestamp":"2026-01-15T10:30:00+01:00"}]}'

Réponse 200 :

{
  "success": true,
  "entity": "orders",
  "events_processed": 1,
  "results": [
    {
      "event_id": 1234,
      "action": "update",
      "success": true,
      "processing_time_ms": 412,
      "errors": [],
      "warnings": []
    }
  ]
}

La réponse contient aussi total_processing_time_ms, timestamp et session_id. Un événement en échec porte success: false et sa cause dans error ou errors.

Réponse Signification
200 Lot traité ; consultez success de chaque événement dans results
400 Entité inconnue, JSON invalide, tableau events absent, ou événement dont l'entity ne correspond pas à l'URL. Dans ce dernier cas, le traitement s'arrête à cet événement : ceux qui le précèdent ont déjà été traités.
401 Secret absent, ou ne correspondant à aucune boutique configurée
429 Plus de 600 requêtes par minute pour la même boutique ; réessayez après le délai indiqué par l'en-tête Retry-After (en secondes)
500 Erreur inattendue ; renvoyez le lot plus tard

Une requête GET sur la même URL renvoie la description du point d'entrée (actions acceptées, URL, méthode, authentification), ce qui permet de vérifier l'adresse.

Chaque événement reçu est journalisé (reçu, en cours, terminé ou en échec, avec son temps de traitement). Le journal se consulte sur /manage/integrations/prestashop/webhooks.

Les flux en un coup d'œil

Flux Cadence Importe
Sync commandes toutes les 3 h, commandes des 40 derniers jours Clients, commandes, lignes de commande
Sync produits toutes les 3 h, produits modifiés récemment Produits (prix, références, liens fournisseurs), fournisseurs, catégories
Webhooks à chaque événement La même chose que les syncs, à l'unité

Les syncs planifiées rattrapent tout ce qu'un webhook aurait manqué. La place de ces syncs dans la journée est décrite sur la journée type.

Sync commandes

La sync commandes importe les commandes des 40 derniers jours, avec leurs clients et leurs lignes. Chaque commande est rattachée à son identifiant PrestaShop, et chaque ligne à une clé stable : une nouvelle sync met à jour la commande et ses lignes existantes au lieu de créer des doublons.

La sync commandes ne décrémente pas le stock

Importer une commande ne retire rien du stock. Le stock diminue à la livraison :

  • quand vous validez la livraison ou la tournée dans le back-office, au moment où elle a lieu (le geste normal) ;
  • sinon, par la validation automatique, qui scelle les livraisons oubliées 12 h après leur date prévue.

Une commande importée compte en revanche tout de suite dans la demande : elle alimente le calcul des commandes fournisseurs. Voir Chemins d'écriture et Commandes fournisseurs.

Sync produits

Pour chaque produit, la sync importe : nom, description, référence, prix de vente, prix d'achat (le coût, utilisé pour valoriser le stock), poids et dimensions, SKU, taux de TVA, fabricant, fournisseur par défaut, catégories, composants des packs et classification. Les champs portés par PrestaShop sont mis à jour ; les données que la plateforme ajoute au produit (par exemple le fait que son stock soit validé comme fiable) sont conservées.

Le stock reste géré par la plateforme

La sync produits ne modifie pas le stock des produits existants : c'est le ledger de la plateforme qui fait foi. Un nouveau produit importé démarre à 0 ; saisissez son stock réel dans le back-office (mouvement manuel ou comptage), pour que chaque unité en stock ait sa ligne de journal.

Note

Si votre boutique affichait un stock fictif (par exemple un grand nombre pour ne jamais bloquer la vente), ne le recopiez pas tel quel. L'écran Écarts de stock du back-office aide à repérer les stocks gonflés avant qu'ils ne faussent les commandes fournisseurs.

Réconciliation des fournisseurs

À chaque sync produits, la plateforme aligne ses fournisseurs sur ceux de la boutique avant de rattacher les produits :

flowchart TD
  A["Sync produits"] --> B["1. Lecture des fabricants<br/>et des fournisseurs PrestaShop"]
  B --> C["2. Mise à jour du statut actif<br/>des fournisseurs connus"]
  C --> D["3. Création des fournisseurs<br/>absents de la plateforme"]
  D --> E["4. Rattachement de chaque produit<br/>à son fournisseur"]
  E --> F[(Produits liés aux fournisseurs)]
  1. Lecture des fabricants et des fournisseurs de la boutique. Les deux deviennent des fournisseurs sur la plateforme.
  2. Statut : si un fournisseur a été activé ou désactivé dans PrestaShop, seul ce statut est mis à jour ; les autres informations de la fiche (contacts, créneaux d'envoi, accès au portail fournisseur) sont conservées.
  3. Création des fournisseurs absents. Une entreprise enregistrée à la fois comme fabricant et comme fournisseur sous le même nom ne crée qu'une seule fiche ; sous deux noms différents, elle en crée deux.
  4. Rattachement des produits à leur fournisseur. Un produit sans fabricant ni fournisseur (identifiant 0 dans PrestaShop) est simplement ignoré. Un produit qui référence un fournisseur encore inconnu déclenche sa création.
Attention

Dans PrestaShop, fabricants et fournisseurs ont des numérotations séparées : le fabricant n° 110 et le fournisseur n° 110 peuvent être deux entreprises différentes. La plateforme les distingue toujours. Si un produit semble rattaché au mauvais fournisseur, vérifiez d'abord dans PrestaShop s'il est lié à un fabricant ou à un fournisseur.

Pour éviter les doublons, gardez le même nom pour une entreprise enregistrée des deux côtés.

Webhooks temps réel

Les webhooks appliquent le même import que les syncs planifiées : un produit reçu par webhook est traité exactement comme par la sync produits, une commande comme par la sync commandes. Ils changent la fréquence (à chaque événement au lieu de toutes les 3 h), pas le résultat.

Après chaque événement produit ou commande, les commandes fournisseurs concernées sont en général recalculées dans la minute. Une commande importée par la sync planifiée est prise en compte au plus tard à la passe suivante de génération des commandes fournisseurs (toutes les 30 min).

Suppressions

Un événement delete ne supprime jamais de données sur la plateforme :

Élément supprimé dans PrestaShop Effet sur la plateforme
Produit Désactivé et marqué comme supprimé de PrestaShop
Commande Annulée ; ses prévisions de stock en attente sont annulées, les mouvements déjà appliqués restent. Les commandes fournisseurs sont recalculées aussitôt pour libérer la demande.
Client Marqué comme supprimé de PrestaShop

Voir aussi