Connecteur WooCommerce
Connecteur WooCommerce
Connectez votre boutique WooCommerce à Brevo via Tajo pour une synchronisation complète des données e-commerce. Exploitez la REST API WooCommerce pour synchroniser clients, commandes, produits et données de coupons afin d’alimenter des campagnes marketing ciblées et des workflows automatisés.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | WooCommerce (WordPress) |
| Catégorie | E-commerce |
| Complexité d’installation | Moyenne |
| Intégration officielle | Non |
| Données synchronisées | Clients, commandes, produits, coupons |
| Skills disponibles | 10 |
Fonctionnalités
- Synchronisation des clients, Synchronisation en temps réel des données client vers les contacts Brevo
- Suivi des commandes, Suivi complet du cycle de vie des commandes pour les workflows post-achat
- Synchronisation du catalogue produits, Synchronisez produits et variations pour les recommandations e-mail
- Gestion des coupons, Synchronisez les codes coupons pour les campagnes promotionnelles
- Prise en charge des webhooks, Mises à jour en temps réel via les webhooks WooCommerce
- Abandon de panier, Suivez et récupérez les paniers abandonnés
- Prise en charge multi-sites, Connectez les installations WooCommerce WordPress multisite
- Champs meta personnalisés, Mappez les métadonnées personnalisées WooCommerce vers des attributs Brevo
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un site WordPress avec le plugin WooCommerce installé et activé
- La REST API WooCommerce activée (Settings > Advanced > REST API)
- Une paire Consumer Key et Consumer Secret API générée
- Votre site doit utiliser HTTPS pour l’authentification API
- Un compte Brevo avec accès API
- Un compte Tajo avec des identifiants API
Authentification
Clés REST API
WooCommerce utilise des paires Consumer Key et Consumer Secret pour l’authentification. Générez-les dans WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (sites HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Authentification par query string (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Niveaux de permission
| Permission | Accès |
|---|---|
| Read | Consultation des ressources uniquement |
| Write | Création et édition de ressources |
| Read/Write | Accès CRUD complet |
Configuration
Configuration de base
connectors: woocommerce: enabled: true store_url: "https://yourstore.com" consumer_key: "ck_your_consumer_key" consumer_secret: "cs_your_consumer_secret" api_version: "wc/v3" verify_ssl: true
# Data sync options sync: customers: true orders: true products: true coupons: true
# Brevo list assignment lists: all_customers: 50 buyers: 51 abandoned_cart: 52Mappage des champs client
Mappez les champs client WooCommerce vers les attributs Brevo :
customer_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME billing.phone: SMS billing.company: COMPANY billing.city: CITY billing.state: STATE billing.country: COUNTRY billing.postcode: ZIP
# E-commerce metrics (computed) orders_count: ORDER_COUNT total_spent: TOTAL_SPENT date_created: SIGNUP_DATE
# Meta fields meta_data.loyalty_points: LOYALTY_POINTS meta_data.preferred_category: PREF_CATEGORYConfiguration des webhooks
Enregistrez les webhooks dans WooCommerce > Settings > Advanced > Webhooks :
webhooks: - topic: "customer.created" event: "customer_created" - topic: "customer.updated" event: "customer_updated" - topic: "order.created" event: "order_placed" - topic: "order.updated" event: "order_updated" - topic: "order.completed" event: "order_fulfilled" - topic: "order.refunded" event: "order_refunded" - topic: "coupon.created" event: "coupon_created" - topic: "product.created" event: "product_added" - topic: "product.updated" event: "product_updated"Endpoints API
| Méthode | Endpoint | Description |
|---|---|---|
GET | /wc/v3/customers | Lister les clients |
POST | /wc/v3/customers | Créer un client |
GET | /wc/v3/customers/{id} | Récupérer un client |
PUT | /wc/v3/customers/{id} | Mettre à jour un client |
GET | /wc/v3/orders | Lister les commandes |
POST | /wc/v3/orders | Créer une commande |
GET | /wc/v3/orders/{id} | Récupérer une commande |
GET | /wc/v3/products | Lister les produits |
GET | /wc/v3/products/{id} | Récupérer un produit |
GET | /wc/v3/products/{id}/variations | Lister les variations d’un produit |
GET | /wc/v3/coupons | Lister les coupons |
GET | /wc/v3/reports/sales | Obtenir les rapports de ventes |
GET | /wc/v3/reports/top_sellers | Obtenir les meilleures ventes |
POST | /wc/v3/webhooks | Créer un webhook |
Exemples de code
Initialiser le connecteur WooCommerce
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect WooCommerce storeawait tajo.connectors.connect('woocommerce', { storeUrl: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET});Récupérer et synchroniser les clients
// Fetch customers using WooCommerce REST APIconst WooCommerce = require('@woocommerce/woocommerce-rest-api').default;
const api = new WooCommerce({ url: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET, version: 'wc/v3'});
// List customers with paginationconst response = await api.get('customers', { per_page: 100, page: 1, orderby: 'registered_date', order: 'desc'});
const customers = response.data;// [{ id, email, first_name, last_name, billing, shipping, ... }]
// Pagination info from headersconst totalPages = response.headers['x-wp-totalpages'];const totalItems = response.headers['x-wp-total'];Gérer les événements webhook
// WooCommerce webhook handlerapp.post('/webhooks/woocommerce', async (req, res) => { const topic = req.headers['x-wc-webhook-topic']; const signature = req.headers['x-wc-webhook-signature'];
// Verify webhook signature const expectedSignature = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest('base64');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
// Forward to Tajo await tajo.connectors.handleWebhook('woocommerce', { topic, payload: req.body });
res.status(200).send('OK');});Opérations par lot
// Batch create, update, and delete productsconst batchResponse = await api.post('products/batch', { create: [ { name: 'New Product', type: 'simple', regular_price: '19.99' } ], update: [ { id: 123, regular_price: '24.99' } ], delete: [456]});Limites de débit
WooCommerce lui-même n’applique pas de limites de débit API, mais le serveur WordPress sous-jacent et l’hébergeur peuvent imposer des limites :
| Facteur | Limite typique | Détails |
|---|---|---|
| Hébergement mutualisé | 50-100 req/min | Varie selon l’hébergeur |
| Hébergement WP managé | 200-500 req/min | WP Engine, Kinsta, etc. |
| Auto-hébergé | Pas de limite dure | Limité par les ressources serveur |
| Par page | 100 enregistrements max | Par défaut : 10 |
| Opérations par lot | 100 éléments/lot | Création, mise à jour ou suppression |
Performance du serveur
Les grandes boutiques WooCommerce peuvent connaître des réponses API lentes. Utilisez la pagination, limitez les champs avec le paramètre _fields et planifiez les synchronisations volumineuses en heures creuses.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
401 Unauthorized | Clés API invalides | Régénérez Consumer Key/Secret dans les paramètres WooCommerce |
403 Forbidden | Permissions insuffisantes | Réglez la clé API sur l’accès Read/Write |
| Erreurs de certificat SSL | SSL invalide sur le site | Assurez-vous d’un certificat SSL valide ; définissez verify_ssl: false pour les tests uniquement |
| Webhooks non déclenchés | WP-Cron désactivé | Activez WP-Cron ou configurez un cron au niveau serveur |
| Réponses API lentes | Base de données volumineuse | Optimisez la base WordPress, utilisez le paramètre _fields |
| Champs personnalisés manquants | Métadonnées non exposées | Utilisez le champ meta_data pour accéder aux métas personnalisées |
| Problèmes de pagination | Taille de page par défaut | Définissez explicitement le paramètre per_page (max 100) |
Bonnes pratiques
- Utilisez les webhooks pour la synchronisation en temps réel, Configurez les webhooks WooCommerce plutôt que du polling API
- Vérifiez les signatures de webhook, Validez toujours l’en-tête
X-WC-Webhook-Signature - Paginez toutes les requêtes de liste, Utilisez les paramètres
pageetper_page; vérifiez l’en-têteX-WP-TotalPages - Utilisez le paramètre
_fields, Ne demandez que les champs nécessaires pour réduire la taille de la réponse et améliorer les performances - Opérations par lot, Utilisez les endpoints batch pour les opérations de création/mise à jour/suppression en masse (jusqu’à 100 éléments)
- Planifiez les synchronisations volumineuses, Exécutez les synchronisations initiales complètes en heures creuses pour éviter la surcharge serveur
- Activez HTTPS, L’API WooCommerce requiert HTTPS pour l’authentification OAuth
Sécurité
- OAuth 1.0a, Authentification sécurisée via des paires Consumer Key/Secret
- Signatures de webhook HMAC, Vérification de signature SHA-256 pour les webhooks entrants
- HTTPS requis, L’API nécessite un chiffrement TLS pour l’authentification
- Portée des permissions, Les clés API peuvent être définies en Read, Write ou Read/Write
- Sécurité WordPress, Bénéficie des mises à jour de sécurité du cœur WordPress
- Considérations PCI, Les données de paiement sont gérées par les passerelles de paiement WooCommerce, non exposées via l’API