---
title: "Konektor WooCommerce"
description: "Panduan integrasi WooCommerce lengkap untuk menyinkronkan pelanggan, pesanan, produk, dan event keranjang dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/ecommerce/woocommerce/
markdown: https://tajo.io/in/docs/connectors/ecommerce/woocommerce.md
lang: id-ID
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Konektor WooCommerce

Status konektor: Dalam pengerjaan Sedang dibangun. Belum terverifikasi.

| Field sumber | Field tujuan | Nilai contoh |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

1. Situs WordPress dengan plugin WooCommerce terpasang dan aktif
2. WooCommerce REST API yang sudah diaktifkan (Settings > Advanced > REST API)
3. Consumer Key dan Consumer Secret API yang sudah dibuat
4. Situs Anda harus memakai HTTPS untuk autentikasi API
5. Akun Brevo dengan akses API
6. 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)

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

#### Autentikasi query string (HTTPS)

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

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

### Pemetaan field pelanggan

Petakan field pelanggan WooCommerce ke atribut 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
```

### Konfigurasi webhook

Daftarkan webhook di 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"
```

## 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

```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
});
```

### Ambil dan sinkronkan pelanggan

```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'];
```

### Tangani event 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');
});
```

### Operasi batch

```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]
});
```

## 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

1. **Gunakan webhook untuk sinkronisasi real-time** - Konfigurasikan webhook WooCommerce alih-alih melakukan polling ke API
2. **Verifikasi tanda tangan webhook** - Selalu validasi header `X-WC-Webhook-Signature`
3. **Paginasikan semua permintaan daftar** - Gunakan parameter `page` dan `per_page`, lalu periksa header `X-WP-TotalPages`
4. **Gunakan parameter `_fields`** - Minta hanya field yang diperlukan untuk memperkecil ukuran respons dan meningkatkan performa
5. **Operasi batch** - Gunakan endpoint batch untuk operasi buat/perbarui/hapus massal (hingga 100 item)
6. **Jadwalkan sinkronisasi besar** - Jalankan sinkronisasi penuh awal di luar jam sibuk agar server tidak terbebani
7. **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

## Sumber daya terkait

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