Integrations
Intégration PrestaShop
Synchronisez automatiquement vos produits entre Products Manager et votre boutique PrestaShop via l'API Webservice.
Vue d'ensemble
L'intégration PrestaShop permet une synchronisation bidirectionnelle entre Products Manager et votre boutique PrestaShop utilisant le PrestaShop Webservice API. Gérez vos produits, stocks et catégories de manière centralisée.
Fonctionnalités principales
- Synchronisation bidirectionnelle : Products Manager ↔ PrestaShop
- Gestion des produits : Titre, description, prix, SKU, EAN13, images
- Gestion des stocks : Synchronisation des quantités disponibles
- Catégories : Mapping automatique avec l'arborescence PrestaShop
- Multi-langue : Support de toutes les langues configurées dans PrestaShop
- Déclinaisons : Synchronisation des combinaisons (couleur, taille, etc.)
Prérequis
Versions supportées
- PrestaShop : 1.7.x, 8.0.x, 8.1.x (dernières versions)
- PHP : 7.4 minimum (8.0+ recommandé)
- Products Manager : v3.0.0 minimum
Permissions requises
L'intégration nécessite un accès au Webservice PrestaShop avec permissions sur :
- Products : GET, POST, PUT (lecture/écriture)
- Stock availables : GET, PUT (lecture/écriture)
- Categories : GET, POST (lecture/création)
- Images : GET, POST (lecture/upload)
- Combinations : GET, POST, PUT (lecture/écriture déclinaisons)
Informations nécessaires
- URL de votre boutique PrestaShop (ex:
https://maboutique.com) - Accès au back-office PrestaShop
- Droits administrateur pour activer le Webservice
Configuration étape par étape
1. Activer le Webservice PrestaShop
Activation obligatoire
Le Webservice est désactivé par défaut dans PrestaShop. Vous devez l'activer manuellement.
- Connectez-vous au back-office PrestaShop
- Allez dans Paramètres avancés → Webservice
- Activez l'option Activer le Webservice de PrestaShop
- Cliquez sur Enregistrer
2. Créer une clé API Webservice
- Dans la page Webservice, cliquez sur Ajouter une nouvelle clé
- Remplissez le formulaire :
- Clé : Laissez vide (générée automatiquement) ou créez une clé personnalisée
- Description :
Products Manager Integration - Statut : ✅ Activé
- Dans Permissions, sélectionnez les ressources :
- products : ✅ View, ✅ Modify, ✅ Add
- stock_availables : ✅ View, ✅ Modify
- categories : ✅ View, ✅ Add
- images : ✅ View, ✅ Add
- combinations : ✅ View, ✅ Modify, ✅ Add
- Cliquez sur Enregistrer
- Copiez la clé API générée (format : 32 caractères alphanumériques)
3. Configurer la connexion dans Products Manager
- Connectez-vous à Products Manager
- Allez dans Paramètres → Intégrations
- Cliquez sur Ajouter une intégration
- Sélectionnez PrestaShop
Remplissez le formulaire :
{
"name": "PrestaShop Production",
"type": "prestashop",
"config": {
"shop_url": "https://maboutique.com",
"api_key": "VOTRE_CLE_API_32_CARACTERES",
"default_language_id": 1,
"default_shop_id": 1
}
}
Paramètres :
shop_url: URL complète de votre boutique (avec https://)api_key: Clé générée dans PrestaShopdefault_language_id: ID de la langue par défaut (1 = Français généralement)default_shop_id: ID de la boutique (1 si mono-boutique)
4. Tester la connexion
Cliquez sur Tester la connexion :
✅ Connexion à maboutique.com réussie
✅ Authentification Webservice OK
✅ Permissions vérifiées (5/5 ressources)
✅ 1,847 produits détectés
✅ 25 catégories trouvées
✅ PrestaShop version : 8.1.2
Erreur de connexion ?
Si le test échoue, vérifiez :
- Le Webservice est bien activé dans PrestaShop
- L'URL est correcte (avec https://, sans
/à la fin) - La clé API est valide et active
- Votre serveur autorise les connexions sortantes vers PrestaShop
- Aucun pare-feu ne bloque les requêtes HTTP
5. Configurer la synchronisation
Fréquence de synchronisation
- Toutes les 5 minutes : Polling automatique (recommandé)
- Toutes les 15 minutes : Pour catalogues stables
- Toutes les heures : Pour boutiques avec peu de modifications
- Manuel : Synchronisation à la demande uniquement
Webhooks non disponibles
PrestaShop ne supporte pas nativement les webhooks. La synchronisation utilise le polling (interrogation périodique).
Direction de synchronisation
- Bidirectionnelle (défaut) : Products Manager ↔ PrestaShop
- PrestaShop → Products Manager : Import uniquement
- Products Manager → PrestaShop : Export uniquement
Champs à synchroniser
Produits :
- ✅ Nom (multi-langue)
- ✅ Description courte et complète
- ✅ SKU (référence)
- ✅ EAN13
- ✅ Prix TTC/HT
- ✅ Quantité en stock
- ✅ Catégorie
- ✅ Images
- ✅ Poids
- ✅ Actif/Inactif
Déclinaisons (combinations) :
- ✅ Attributs (couleur, taille, etc.)
- ✅ Prix spécifique
- ✅ SKU spécifique
- ✅ Stock par déclinaison
Fonctionnalités synchronisées
Synchronisation des produits
Mapping des champs
| PrestaShop | Products Manager | Notes |
|---|---|---|
name[id_lang] | title | Multi-langue supporté |
description[id_lang] | description | HTML préservé |
reference | sku | Référence unique |
ean13 | ean | Code-barres |
price | price | Prix HT par défaut |
wholesale_price | cost_price | Prix d'achat |
quantity | stock_quantity | Stock disponible |
id_category_default | category_id | Catégorie principale |
active | is_active | Statut actif/inactif |
weight | weight | En kg |
De PrestaShop vers Products Manager
Lors de la synchronisation depuis PrestaShop :
- Récupération : API call
GET /api/products?display=full - Parsing : Extraction des données XML/JSON
- Images : Téléchargement depuis PrestaShop CDN vers MinIO
- Multi-langue : Sélection de la langue par défaut configurée
- Création : Produit créé/mis à jour dans Products Manager
De Products Manager vers PrestaShop
Lors de la synchronisation vers PrestaShop :
- Validation : Vérification des champs obligatoires
- API Call :
POST /api/products(création) ouPUT /api/products/{id}(modification) - Images : Upload séparé via
POST /api/images/products/{id} - Stock : Mise à jour via
PUT /api/stock_availables/{id} - Multi-langue : Réplication du contenu dans toutes les langues configurées
Synchronisation des catégories
Le mapping de catégories respecte l'arborescence PrestaShop :
| PrestaShop | Products Manager |
|---|---|
| Accueil / Électronique | Catégories/Électronique |
| Accueil / Vêtements / Hommes | Catégories/Vêtements/Hommes |
| Accueil / Promotions | Catégories/Promotions |
Création automatique :
Si une catégorie n'existe pas dans PrestaShop, elle est créée sous la catégorie racine configurée.
Synchronisation des stocks
Le stock est synchronisé via la ressource stock_availables :
Mise à jour :
PUT /api/stock_availables/{id}
<stock_available>
<id_product>123</id_product>
<quantity>50</quantity>
<depends_on_stock>0</depends_on_stock>
</stock_available>
Multi-entrepôts :
Si vous utilisez le module Advanced Stock Management, configurez l'entrepôt par défaut dans les paramètres.
Synchronisation des déclinaisons
PrestaShop utilise le système de combinations pour les variantes :
Exemple : Chaussures avec 2 pointures et 3 couleurs = 6 combinations
| Combination | SKU | Prix | Stock |
|---|---|---|---|
| 42 / Noir | SHOE-42-BLACK | +0€ | 12 |
| 42 / Blanc | SHOE-42-WHITE | +0€ | 8 |
| 42 / Rouge | SHOE-42-RED | +5€ | 5 |
| 44 / Noir | SHOE-44-BLACK | +0€ | 10 |
| 44 / Blanc | SHOE-44-WHITE | +0€ | 6 |
| 44 / Rouge | SHOE-44-RED | +5€ | 3 |
Synchronisation :
- Option 1 (Défaut) : 6 produits séparés dans Products Manager liés au produit parent
- Option 2 : 1 produit avec 6 variations (requiert module variants dans PM)
Images et médias
Upload automatique vers PrestaShop :
# Upload d'une image
POST /api/images/products/{id_product}
Content-Type: multipart/form-data
# PrestaShop génère automatiquement les thumbnails
Formats supportés : JPG, PNG, GIF Taille max : 8 MB (configurable dans PrestaShop) Limite : Illimité (mais recommandé : <10 images/produit pour performance)
Multi-langue et multi-boutiques
Support multi-langue
PrestaShop est multi-langue natif. Products Manager peut synchroniser dans toutes les langues :
{
"language_mapping": {
"1": "fr", // ID 1 = Français
"2": "en", // ID 2 = English
"3": "es" // ID 3 = Español
},
"sync_all_languages": true,
"fallback_language_id": 1
}
Si sync_all_languages = true, le contenu de Products Manager est répliqué dans toutes les langues.
Support multi-boutiques
Si vous utilisez le module Multiboutique de PrestaShop :
{
"shop_id": 1, // ID de la boutique à synchroniser
"sync_all_shops": false // true = synchroniser toutes les boutiques
}
Pour synchroniser plusieurs boutiques, créez une intégration par boutique.
Troubleshooting courant
Erreur : "401 Unauthorized"
Cause : Clé API invalide ou permissions insuffisantes.
Solution :
- Vérifiez que la clé API est exactement celle affichée dans PrestaShop
- Vérifiez que toutes les permissions sont cochées (products, stock_availables, etc.)
- Vérifiez que la clé est Active
Erreur : "This call to PrestaShop Web Services failed"
Cause : Webservice désactivé ou URL incorrecte.
Solution :
# Testez manuellement l'API
curl -X GET "https://maboutique.com/api/products?limit=1" \
-H "Authorization: Basic $(echo -n 'VOTRE_CLE_API:' | base64)"
# Réponse attendue : XML/JSON avec 1 produit
Les images ne s'uploadent pas
Cause : Limite de taille PHP ou permissions fichiers.
Solution :
- Augmentez
upload_max_filesizeetpost_max_sizedans php.ini - Vérifiez les permissions du dossier
img/dans PrestaShop (777 ou www-data:www-data) - Compressez les images avant upload (<2 MB recommandé)
Les stocks ne se mettent pas à jour
Cause : Advanced Stock Management activé sans configuration.
Solution :
# Vérifier si ASM est activé
GET /api/configurations?filter[name]=PS_ADVANCED_STOCK_MANAGEMENT
# Si activé, configurez l'entrepôt par défaut dans Products Manager
{
"warehouse_id": 1
}
Synchronisation lente (>1000 produits)
Optimisations :
- Pagination : Synchroniser par lots de 100 produits
- Cache : Activer le cache Redis dans Products Manager
- Filtres : Ne synchroniser que les produits actifs
- Scheduler : Synchroniser en heures creuses (nuit)
{
"sync_config": {
"batch_size": 100,
"filter_active_only": true,
"cache_enabled": true
}
}
Limites connues
Limites techniques
- Rate limiting : Aucune limite native PrestaShop (dépend du serveur)
- Timeout : 30 secondes par défaut (configurable dans php.ini)
- Mémoire : Dépend de la configuration PHP du serveur
Fonctionnalités non supportées
- Webhooks : PrestaShop ne les supporte pas nativement
- Prix par groupe client : Non synchronisé
- Réductions spécifiques : Non synchronisées
- Features (caractéristiques) : Non synchronisées (roadmap)
- Fournisseurs : Synchronisation manuelle uniquement
Différences comportementales
| Comportement | PrestaShop | Products Manager | Note |
|---|---|---|---|
| Produits désactivés | active=0 | is_active=false | Mapping 1:1 |
| Prix | TTC ou HT (config) | Toujours TTC | Conversion automatique |
| Stock négatif | Configurable | Non autorisé | Validation PM |
Cas d'usage avancés
1. Synchronisation incrémentale
Synchronisez uniquement les produits modifiés depuis la dernière sync :
{
"sync_mode": "incremental",
"track_changes": true,
"last_sync_timestamp": "2025-10-05T10:00:00Z"
}
2. Mapping prix avec marges
{
"price_rules": {
"base_price": "wholesale_price",
"margin_percent": 35,
"apply_tax": true,
"tax_rule_id": 1
}
}
3. Synchronisation sélective par catégorie
Ne synchronisez que certaines catégories PrestaShop :
{
"category_filter": {
"include_categories": [2, 5, 12], // IDs PrestaShop
"exclude_categories": [8]
}
}
Sécurité
Bonnes pratiques
- ✅ Utilisez HTTPS obligatoirement (clé API en clair)
- ✅ Créez une clé API dédiée pour Products Manager
- ✅ Limitez les permissions au strict nécessaire
- ✅ Renouvelez la clé API tous les 6 mois
- ✅ Surveillez les logs d'accès au Webservice dans PrestaShop
- ✅ Activez un pare-feu (ModSecurity) pour limiter les abus
Chiffrement
- Les clés API sont stockées chiffrées (AES-256) dans Products Manager
- Les connexions utilisent TLS 1.2+ obligatoire
- Les logs ne contiennent jamais les clés API en clair
Ressources
Documentation officielle
Outils de développement
- Postman Collection : Tester l'API
- PrestaShop Webservice Lib : Librairie PHP
Support
- Email : integrations@productsmanager.com
- Documentation : https://docs.productsmanager.com
- Forum PrestaShop : https://www.prestashop.com/forums
Prochaines étapes
Après avoir configuré l'intégration PrestaShop :
