Connettore WooCommerce
Connettore WooCommerce
Collega il tuo negozio WooCommerce a Brevo tramite Tajo per una sincronizzazione completa dei dati e-commerce. Sfrutta la WooCommerce REST API per sincronizzare clienti, ordini, prodotti e dati coupon per campagne di marketing mirate e workflow automatizzati.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | WooCommerce (WordPress) |
| Categoria | E-commerce |
| Complessità di setup | Media |
| Integrazione ufficiale | No |
| Dati sincronizzati | Clienti, Ordini, Prodotti, Coupon |
| Skill disponibili | 10 |
Funzionalità
- Sincronizzazione clienti - Sincronizzazione in tempo reale dei dati cliente con i contatti Brevo
- Tracciamento ordini - Tracciamento completo degli eventi del ciclo di vita dell’ordine per flussi post-acquisto
- Sincronizzazione catalogo prodotti - Sincronizza prodotti e variazioni per raccomandazioni email
- Gestione coupon - Sincronizza i codici coupon per le campagne promozionali
- Supporto webhook - Aggiornamenti in tempo reale tramite i webhook di WooCommerce
- Abbandono del carrello - Traccia e recupera i carrelli abbandonati
- Supporto multi-sito - Collega installazioni WooCommerce su WordPress multisite
- Meta field personalizzati - Mappa i meta personalizzati di WooCommerce agli attributi Brevo
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un sito WordPress con il plugin WooCommerce installato e attivato
- WooCommerce REST API abilitata (Impostazioni > Avanzate > REST API)
- Consumer Key e Consumer Secret API generati
- Il tuo sito deve usare HTTPS per l’autenticazione API
- Un account Brevo con accesso API
- Un account Tajo con credenziali API
Autenticazione
Chiavi REST API
WooCommerce utilizza coppie Consumer Key e Consumer Secret per l’autenticazione. Generale in WooCommerce > Impostazioni > Avanzate > REST API.
OAuth 1.0a (siti HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Autenticazione tramite query string (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Livelli di permesso
| Permesso | Accesso |
|---|---|
| Read | Solo visualizzazione risorse |
| Write | Creazione e modifica risorse |
| Read/Write | Accesso CRUD completo |
Configurazione
Setup di 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: 52Mappatura campi cliente
Mappa i campi cliente WooCommerce agli attributi 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_CATEGORYConfigurazione webhook
Registra i webhook in WooCommerce > Impostazioni > Avanzate > Webhook:
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"Endpoint API
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /wc/v3/customers | Elenca i clienti |
POST | /wc/v3/customers | Crea un cliente |
GET | /wc/v3/customers/{id} | Ottieni un cliente |
PUT | /wc/v3/customers/{id} | Aggiorna un cliente |
GET | /wc/v3/orders | Elenca gli ordini |
POST | /wc/v3/orders | Crea un ordine |
GET | /wc/v3/orders/{id} | Ottieni un ordine |
GET | /wc/v3/products | Elenca i prodotti |
GET | /wc/v3/products/{id} | Ottieni un prodotto |
GET | /wc/v3/products/{id}/variations | Elenca le variazioni di prodotto |
GET | /wc/v3/coupons | Elenca i coupon |
GET | /wc/v3/reports/sales | Ottieni i report di vendita |
GET | /wc/v3/reports/top_sellers | Ottieni i best seller |
POST | /wc/v3/webhooks | Crea un webhook |
Esempi di codice
Inizializza il connettore 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});Recupera e sincronizza i clienti
// 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'];Gestisci eventi 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');});Operazioni batch
// 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]});Limiti di velocità
WooCommerce non impone di per sé limiti di velocità API, ma il server WordPress sottostante e il provider di hosting possono imporre limiti:
| Fattore | Limite tipico | Dettagli |
|---|---|---|
| Hosting condiviso | 50-100 req/min | Varia in base all’host |
| Hosting WP gestito | 200-500 req/min | WP Engine, Kinsta, ecc. |
| Self-hosted | Nessun limite rigido | Limitato dalle risorse del server |
| Per pagina | Max 100 record | Il default è 10 |
| Operazioni batch | 100 elementi/batch | Create, update o delete |
Performance del server
I grandi negozi WooCommerce possono sperimentare risposte API lente. Usa la paginazione, limita i campi con il parametro _fields e pianifica le sync massive fuori dalle ore di punta.
Risoluzione dei problemi
| Problema | Causa | Soluzione |
|---|---|---|
401 Unauthorized | Chiavi API non valide | Rigenera Consumer Key/Secret nelle impostazioni WooCommerce |
403 Forbidden | Permessi insufficienti | Imposta la chiave API su accesso Read/Write |
| Errori certificato SSL | SSL non valido sul sito | Assicura un certificato SSL valido; usa verify_ssl: false solo per test |
| Webhook non attivati | WordPress cron disabilitato | Abilita WP-Cron o configura un cron a livello server |
| Risposte API lente | Database grande | Ottimizza il database WordPress, usa il parametro _fields |
| Campi personalizzati mancanti | Meta data non esposti | Usa il campo meta_data per accedere ai meta custom |
| Problemi di paginazione | Dimensione pagina di default | Imposta esplicitamente il parametro per_page (max 100) |
Best practice
- Usa i webhook per la sync in tempo reale - Configura i webhook WooCommerce invece di fare polling dell’API
- Verifica le firme dei webhook - Convalida sempre l’header
X-WC-Webhook-Signature - Pagina tutte le richieste di elenco - Usa i parametri
pageeper_page; controlla l’headerX-WP-TotalPages - Usa il parametro
_fields- Richiedi solo i campi necessari per ridurre la dimensione della risposta e migliorare le performance - Operazioni batch - Usa gli endpoint batch per operazioni massive di creazione/aggiornamento/eliminazione (fino a 100 elementi)
- Pianifica sync grandi - Esegui le sync iniziali complete fuori dagli orari di punta per evitare stress sul server
- Abilita HTTPS - La WooCommerce API richiede HTTPS per l’autenticazione OAuth
Sicurezza
- OAuth 1.0a - Autenticazione sicura tramite coppie Consumer Key/Secret
- Firme webhook HMAC - Verifica firma SHA-256 per i webhook in entrata
- HTTPS richiesto - L’API richiede cifratura TLS per l’autenticazione
- Scoping dei permessi - Le chiavi API possono essere impostate su Read, Write o Read/Write
- Sicurezza WordPress - Beneficia degli aggiornamenti di sicurezza del core WordPress
- Considerazioni PCI - I dati di pagamento sono gestiti dai gateway di pagamento WooCommerce, non esposti tramite API