Konektor WooCommerce
Hubungkan toko WooCommerce Anda ke Brevo melalui Tajo untuk sinkronisasi data e-commerce yang lengkap. Manfaatkan WooCommerce REST API untuk menyinkronkan data pelanggan, pesanan, produk, dan kupon bagi kampanye pemasaran tertarget serta alur kerja otomatis.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | WooCommerce (WordPress) |
| Kategori | E-commerce |
| Kompleksitas penyiapan | Sedang |
| Integrasi resmi | Tidak |
| Data yang tersinkron | Pelanggan, Pesanan, Produk, Kupon |
| Skill yang tersedia | 10 |
Fitur
- Sinkronisasi pelanggan - Sinkronisasi data pelanggan secara real-time ke kontak Brevo
- Pelacakan pesanan - Pelacakan event siklus hidup pesanan secara penuh untuk alur pascapembelian
- Sinkronisasi katalog produk - Sinkronkan produk dan variasinya untuk rekomendasi email
- Manajemen kupon - Sinkronkan kode kupon untuk kampanye promosi
- Dukungan webhook - Pembaruan real-time melalui webhook WooCommerce
- Keranjang yang ditinggalkan - Lacak dan pulihkan keranjang yang ditinggalkan
- Dukungan multi-situs - Hubungkan instalasi WooCommerce pada WordPress multisite
- Custom meta field - Petakan custom meta WooCommerce ke atribut Brevo
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Situs WordPress dengan plugin WooCommerce terpasang dan aktif
- WooCommerce REST API yang sudah diaktifkan (Settings > Advanced > REST API)
- Consumer Key dan Consumer Secret API yang sudah dibuat
- Situs Anda harus memakai HTTPS untuk autentikasi API
- Akun Brevo dengan akses API
- Akun Tajo dengan kredensial API
Autentikasi
Key REST API
WooCommerce memakai pasangan Consumer Key dan Consumer Secret untuk autentikasi. Buat keduanya di WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (situs HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Autentikasi query string (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Level izin
| Izin | Akses |
|---|---|
| Read | Hanya melihat sumber daya |
| Write | Membuat dan mengubah sumber daya |
| Read/Write | Akses CRUD penuh |
Konfigurasi
Penyiapan dasar
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: 52Pemetaan field pelanggan
Petakan field pelanggan WooCommerce ke atribut 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_CATEGORYKonfigurasi webhook
Daftarkan webhook di 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"Endpoint API
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /wc/v3/customers | Daftar pelanggan |
POST | /wc/v3/customers | Buat seorang pelanggan |
GET | /wc/v3/customers/{id} | Ambil seorang pelanggan |
PUT | /wc/v3/customers/{id} | Perbarui seorang pelanggan |
GET | /wc/v3/orders | Daftar pesanan |
POST | /wc/v3/orders | Buat sebuah pesanan |
GET | /wc/v3/orders/{id} | Ambil sebuah pesanan |
GET | /wc/v3/products | Daftar produk |
GET | /wc/v3/products/{id} | Ambil sebuah produk |
GET | /wc/v3/products/{id}/variations | Daftar variasi produk |
GET | /wc/v3/coupons | Daftar kupon |
GET | /wc/v3/reports/sales | Ambil laporan penjualan |
GET | /wc/v3/reports/top_sellers | Ambil daftar produk terlaris |
POST | /wc/v3/webhooks | Buat sebuah webhook |
Contoh kode
Inisialisasi konektor 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});Ambil dan sinkronkan pelanggan
// 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'];Tangani event 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');});Operasi 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]});Batas rate
WooCommerce sendiri tidak menerapkan batas rate API, tetapi server WordPress yang mendasarinya dan penyedia hosting dapat memberlakukan batas:
| Faktor | Batas umum | Detail |
|---|---|---|
| Shared hosting | 50-100 permintaan/menit | Bervariasi menurut penyedia |
| Managed WP hosting | 200-500 permintaan/menit | WP Engine, Kinsta, dan sejenisnya |
| Self-hosted | Tanpa batas keras | Dibatasi oleh sumber daya server |
| Per halaman | Maksimum 100 record | Default-nya 10 |
| Operasi batch | 100 item/batch | Buat, perbarui, atau hapus |
Performa server
Toko WooCommerce berukuran besar dapat mengalami respons API yang lambat. Gunakan paginasi, batasi field dengan parameter _fields, dan jadwalkan sinkronisasi massal di luar jam sibuk.
Pemecahan masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
401 Unauthorized | Key API tidak valid | Buat ulang Consumer Key/Secret di pengaturan WooCommerce |
403 Forbidden | Izin tidak memadai | Setel key API ke akses Read/Write |
| Error sertifikat SSL | SSL situs tidak valid | Pastikan sertifikat SSL valid, setel verify_ssl: false hanya untuk pengujian |
| Webhook tidak terpicu | Cron WordPress nonaktif | Aktifkan WP-Cron atau konfigurasikan cron di level server |
| Respons API lambat | Database berukuran besar | Optimalkan database WordPress, gunakan parameter _fields |
| Custom field tidak muncul | Meta data tidak diekspos | Gunakan field meta_data untuk mengakses custom meta |
| Masalah paginasi | Ukuran halaman default | Setel parameter per_page secara eksplisit (maksimum 100) |
Praktik terbaik
- Gunakan webhook untuk sinkronisasi real-time - Konfigurasikan webhook WooCommerce alih-alih melakukan polling ke API
- Verifikasi tanda tangan webhook - Selalu validasi header
X-WC-Webhook-Signature - Paginasikan semua permintaan daftar - Gunakan parameter
pagedanper_page, lalu periksa headerX-WP-TotalPages - Gunakan parameter
_fields- Minta hanya field yang diperlukan untuk memperkecil ukuran respons dan meningkatkan performa - Operasi batch - Gunakan endpoint batch untuk operasi buat/perbarui/hapus massal (hingga 100 item)
- Jadwalkan sinkronisasi besar - Jalankan sinkronisasi penuh awal di luar jam sibuk agar server tidak terbebani
- Aktifkan HTTPS - WooCommerce API mewajibkan HTTPS untuk autentikasi OAuth
Keamanan
- OAuth 1.0a - Autentikasi aman melalui pasangan Consumer Key/Secret
- Tanda tangan webhook HMAC - Verifikasi tanda tangan SHA-256 untuk webhook yang masuk
- Wajib HTTPS - API mewajibkan enkripsi TLS untuk autentikasi
- Pembatasan izin - Key API dapat disetel ke Read, Write, atau Read/Write
- Keamanan WordPress - Memperoleh manfaat dari pembaruan keamanan inti WordPress
- Pertimbangan PCI - Data pembayaran ditangani oleh payment gateway WooCommerce dan tidak diekspos melalui API