WooCommerce-Connector
WooCommerce-Connector
Verbinde deinen WooCommerce-Shop mit Brevo über Tajo für eine vollständige Synchronisation deiner E-Commerce-Daten. Nutze die WooCommerce-REST-API, um Kund:innen, Bestellungen, Produkte und Gutscheindaten für zielgerichtete Marketingkampagnen und automatisierte Workflows zu synchronisieren.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | WooCommerce (WordPress) |
| Kategorie | E-Commerce |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Kund:innen, Bestellungen, Produkte, Gutscheine |
| Verfügbare Skills | 10 |
Funktionen
- Kundendaten-Synchronisation – Echtzeit-Synchronisation von Kundendaten mit Brevo-Kontakten
- Bestellverfolgung – Vollständiges Lifecycle-Event-Tracking für Post-Purchase-Flows
- Produktkatalog-Synchronisation – Synchronisiere Produkte und Variationen für E-Mail-Empfehlungen
- Gutschein-Management – Synchronisiere Gutscheincodes für Promo-Kampagnen
- Webhook-Unterstützung – Echtzeit-Updates über WooCommerce-Webhooks
- Warenkorb-Abandonment – Abgebrochene Warenkörbe verfolgen und reaktivieren
- Multi-Site-Unterstützung – Verbinde WordPress-Multisite-WooCommerce-Installationen
- Benutzerdefinierte Meta-Felder – Mappe WooCommerce-Custom-Meta auf Brevo-Attribute
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Eine WordPress-Site mit installiertem und aktiviertem WooCommerce-Plugin
- Aktivierte WooCommerce-REST-API (Settings > Advanced > REST API)
- Generierte Consumer-Key- und Consumer-Secret-API-Zugangsdaten
- Deine Site muss HTTPS für die API-Authentifizierung verwenden
- Einen Brevo-Account mit API-Zugang
- Einen Tajo-Account mit API-Zugangsdaten
Authentifizierung
REST-API-Schlüssel
WooCommerce verwendet Consumer-Key- und Consumer-Secret-Paare für die Authentifizierung. Generiere diese unter WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (HTTPS-Sites)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Query-String-Authentifizierung (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Berechtigungsstufen
| Berechtigung | Zugriff |
|---|---|
| Read | Nur Ressourcen ansehen |
| Write | Ressourcen erstellen und bearbeiten |
| Read/Write | Voller CRUD-Zugriff |
Konfiguration
Grundlegende Einrichtung
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: 52Kundenfeld-Mapping
Mappe WooCommerce-Kundenfelder auf Brevo-Attribute:
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_CATEGORYWebhook-Konfiguration
Registriere Webhooks unter 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"API-Endpoints
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /wc/v3/customers | Kund:innen auflisten |
POST | /wc/v3/customers | Kund:in anlegen |
GET | /wc/v3/customers/{id} | Kund:in abrufen |
PUT | /wc/v3/customers/{id} | Kund:in aktualisieren |
GET | /wc/v3/orders | Bestellungen auflisten |
POST | /wc/v3/orders | Bestellung anlegen |
GET | /wc/v3/orders/{id} | Bestellung abrufen |
GET | /wc/v3/products | Produkte auflisten |
GET | /wc/v3/products/{id} | Produkt abrufen |
GET | /wc/v3/products/{id}/variations | Produktvariationen auflisten |
GET | /wc/v3/coupons | Gutscheine auflisten |
GET | /wc/v3/reports/sales | Umsatzberichte abrufen |
GET | /wc/v3/reports/top_sellers | Top-Seller abrufen |
POST | /wc/v3/webhooks | Webhook anlegen |
Code-Beispiele
WooCommerce-Connector initialisieren
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});Kund:innen abrufen und synchronisieren
// 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'];Webhook-Events verarbeiten
// 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');});Batch-Operationen
// 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]});Rate Limits
WooCommerce selbst erzwingt keine API-Rate-Limits, der zugrunde liegende WordPress-Server und der Hosting-Provider können jedoch Limits festlegen:
| Faktor | Typisches Limit | Details |
|---|---|---|
| Shared Hosting | 50–100 Req./Min. | Variiert je nach Hoster |
| Managed WP Hosting | 200–500 Req./Min. | WP Engine, Kinsta usw. |
| Self-Hosted | Kein hartes Limit | Durch Server-Ressourcen begrenzt |
| Pro Seite | Max. 100 Datensätze | Standard ist 10 |
| Batch-Operationen | 100 Items/Batch | Create, Update oder Delete |
Server-Performance
Große WooCommerce-Shops können langsame API-Antworten erleben. Nutze Pagination, beschränke Felder mit dem _fields-Parameter und plane Massensynchronisationen außerhalb der Stoßzeiten.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
401 Unauthorized | Ungültige API-Schlüssel | Consumer Key/Secret in den WooCommerce-Einstellungen neu generieren |
403 Forbidden | Unzureichende Berechtigungen | API-Schlüssel auf Read/Write-Zugriff setzen |
| SSL-Zertifikat-Fehler | Ungültiges SSL auf der Site | Gültiges SSL-Zertifikat sicherstellen; verify_ssl: false nur zum Testen setzen |
| Webhooks werden nicht ausgelöst | WordPress-Cron deaktiviert | WP-Cron aktivieren oder serverseitigen Cron konfigurieren |
| Langsame API-Antworten | Große Datenbank | WordPress-Datenbank optimieren, _fields-Parameter nutzen |
| Benutzerdefinierte Felder fehlen | Meta-Daten nicht exponiert | meta_data-Feld zum Zugriff auf Custom-Meta verwenden |
| Pagination-Probleme | Standard-Seitengröße | Parameter per_page explizit setzen (max. 100) |
Best Practices
- Webhooks für Echtzeit-Synchronisation nutzen – Konfiguriere WooCommerce-Webhooks statt die API zu pollen
- Webhook-Signaturen verifizieren – Validiere immer den Header
X-WC-Webhook-Signature - Alle List-Requests paginieren – Nutze die Parameter
pageundper_page; prüfe den HeaderX-WP-TotalPages _fields-Parameter verwenden – Frage nur benötigte Felder ab, um Response-Größe zu reduzieren und Performance zu verbessern- Batch-Operationen – Nutze Batch-Endpoints für Bulk-Create-/Update-/Delete-Operationen (bis zu 100 Items)
- Große Synchronisationen planen – Führe Erst-Vollsynchronisationen außerhalb der Stoßzeiten aus, um den Server zu entlasten
- HTTPS aktivieren – Die WooCommerce-API verlangt HTTPS für die OAuth-Authentifizierung
Sicherheit
- OAuth 1.0a – Sichere Authentifizierung via Consumer-Key-/Secret-Paare
- HMAC-Webhook-Signaturen – SHA-256-Signatur-Verifizierung für eingehende Webhooks
- HTTPS erforderlich – API verlangt TLS-Verschlüsselung für die Authentifizierung
- Berechtigungs-Scoping – API-Schlüssel können auf Read, Write oder Read/Write gesetzt werden
- WordPress-Sicherheit – Profitiert von den Security-Updates des WordPress-Cores
- PCI-Überlegungen – Zahlungsdaten werden von den WooCommerce-Zahlungs-Gateways verarbeitet und nicht über die API exponiert