---
title: "Connecteur WooCommerce"
description: "Guide complet d'intégration WooCommerce pour synchroniser clients, commandes, produits et événements de panier avec Brevo via Tajo."
url: https://tajo.io/fr/docs/connectors/ecommerce/woocommerce/
markdown: https://tajo.io/fr/docs/connectors/ecommerce/woocommerce.md
lang: fr-FR
robots: noindex
---

Demandez un accès anticipé

Indiquez votre prénom et votre adresse e-mail professionnelle. Nous vous enverrons un lien pour confirmer votre demande d’accès à Tajo.

# Connecteur WooCommerce

Statut du connecteur: En cours En construction. Pas encore vérifié.

| Champ source | Champ de destination | Valeur d’exemple |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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 :

1. Un site WordPress avec le plugin WooCommerce installé et activé
2. La REST API WooCommerce activée (Settings > Advanced > REST API)
3. Une paire Consumer Key et Consumer Secret API générée
4. Votre site doit utiliser HTTPS pour l’authentification API
5. Un compte Brevo avec accès API
6. 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)

```bash
curl https://yourstore.com/wp-json/wc/v3/orders \
  -u "consumer_key:consumer_secret"
```

#### Authentification par query string (HTTPS)

```bash
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

```yaml
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: 52
```

### Mappage des champs client

Mappez les champs client WooCommerce vers les attributs Brevo :

```yaml
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_CATEGORY
```

### Configuration des webhooks

Enregistrez les webhooks dans WooCommerce > Settings > Advanced > Webhooks :

```yaml
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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect WooCommerce store
await 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

```javascript
// Fetch customers using WooCommerce REST API
const 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 pagination
const 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 headers
const totalPages = response.headers['x-wp-totalpages'];
const totalItems = response.headers['x-wp-total'];
```

### Gérer les événements webhook

```javascript
// WooCommerce webhook handler
app.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

```javascript
// Batch create, update, and delete products
const 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

1. **Utilisez les webhooks pour la synchronisation en temps réel**, Configurez les webhooks WooCommerce plutôt que du polling API
2. **Vérifiez les signatures de webhook**, Validez toujours l’en-tête `X-WC-Webhook-Signature`
3. **Paginez toutes les requêtes de liste**, Utilisez les paramètres `page` et `per_page` ; vérifiez l’en-tête `X-WP-TotalPages`
4. **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
5. **Opérations par lot**, Utilisez les endpoints batch pour les opérations de création/mise à jour/suppression en masse (jusqu’à 100 éléments)
6. **Planifiez les synchronisations volumineuses**, Exécutez les synchronisations initiales complètes en heures creuses pour éviter la surcharge serveur
7. **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

## Ressources associées

- [Connecteur Shopify](https://tajo.io/fr/docs/connectors/ecommerce/shopify)
- [Connecteur BigCommerce](https://tajo.io/fr/docs/connectors/ecommerce/bigcommerce)
- [Skill Customer Sync](https://tajo.io/fr/docs/skills/data-sync/customer-sync)
- [Skill Abandoned Cart](https://tajo.io/fr/docs/skills/email-marketing/abandoned-cart)
