Panduan Integrasi WooCommerce
Panduan ini menghubungkan toko WooCommerce ke Tajo. Integrasinya terdiri atas dua bagian yang bekerja bersama:
- Plugin Tajo for WooCommerce: merekam event keterlibatan real-time (pesanan, keranjang, pengembalian dana, ulasan, pengiriman formulir) di dalam WordPress dan mengirimkannya ke Tajo melalui outbox andal yang ditandatangani.
- Koneksi WooCommerce REST: Tajo membaca pelanggan, pesanan, produk, kupon, pengembalian dana, dan ulasan toko Anda untuk impor historis dan sinkronisasi berkelanjutan. Lihat referensi konektor WooCommerce untuk penyiapan REST saja.
Otomatisasi pemasarannya sendiri (email, SMS, WhatsApp melalui Brevo dan penyedia lain) dikonfigurasi di Tajo, bukan di plugin. Tugas plugin adalah mengeluarkan event yang tepercaya dari WordPress.
Prasyarat
- WordPress 6.3+ dengan akses admin
- PHP 7.4+
- WooCommerce 7.0+ (plugin ini juga berjalan di situs WordPress tanpa WooCommerce, adapter commerce-nya cukup tetap nonaktif)
- Akun Tajo dengan koneksi WordPress yang sudah dibuat
- HTTPS pada endpoint Tajo (selalu terpenuhi pada Tajo terkelola)
Langkah 1: Pasang plugin Tajo for WooCommerce
Pemasangan manual
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipLalu aktifkan dari admin WordPress:
- Buka Plugins → Installed Plugins
- Cari “Tajo for WooCommerce”
- Klik Activate
Anda juga dapat mengunggah berkas zip langsung melalui Plugins → Add New → Upload Plugin. Checksum SHA-256 diterbitkan bersama setiap rilis di tajo.io/downloads/woocommerce/. Plugin ini belum terdaftar di direktori WordPress.org; pemasangan manual adalah jalur yang didukung saat ini.
Langkah 2: Konfigurasikan koneksi
Buka WooCommerce → Tajo (pada situs tanpa WooCommerce: Settings → Tajo) lalu masukkan tiga nilai dari koneksi WordPress Tajo Anda:
| Bidang | Nilai |
|---|---|
| Endpoint Tajo | URL webhook HTTPS yang ditampilkan di Tajo, misalnya https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding ID | Binding ID koneksi tersebut dari Tajo |
| Signing secret | Secret bersama (32–256 karakter). Plugin membuat secret lokal yang kuat saat aktivasi; tempelkan ke Tajo, atau tempelkan secret dari Tajo di sini |
Tidak ada konstanta API key yang perlu ditambahkan ke wp-config.php. Event tetap aman mengantre di outbox lokal sampai ketiga nilai tersimpan.
Lalu verifikasi jalurnya dari ujung ke ujung:
- Klik Queue test event, lalu Process now.
- Tabel outbox pengiriman akan menampilkan event tersebut sebagai terkirim.
- Di Tajo, pastikan event
connection.testtiba pada koneksi WordPress.
Apa yang dikirim plugin
Setiap event berupa amplop ringkas yang diminimalkan demi privasi dan ditandatangani dengan HMAC-SHA256. Hanya bidang identitas keterlibatan (email, telepon, ID lokal) beserta metadata event yang terbatas yang keluar dari WordPress, tidak pernah nama, alamat pos, alamat IP, user agent, isi komentar, bidang formulir sembarang, catatan pesanan, atau detail pembayaran.
Event WooCommerce
| Hook | Event |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, penghapusan item, penerapan/penghapusan kupon | cart.updated (dengan ringkasan keranjang untuk alur keranjang terbengkalai) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled saat selesai) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Pembaruan status WooCommerce Subscriptions | subscription.status_changed |
Event pesanan membawa nomor pesanan, status, mata uang, total, item baris, serta URL ulasan dan pemesanan ulang yang siap pakai, cukup untuk otomatisasi pascapembelian dan win-back tanpa panggilan API lanjutan.
Event WordPress
contact.created/contact.updated/contact.deleteduntuk akun penggunacontent.published/content.updated/content.unpublisheduntuk konten publikcomment.created/comment.status_changeduntuk komentar pengunjung dan ulasan produk (catatan pesanan internal WooCommerce, pingback, dan trackback tidak pernah dikirim)form.submitteduntuk pengiriman Contact Form 7, WPForms, Gravity Forms, dan Fluent Forms yang berhasil; hanya bidang identitas email dan telepon bertipe serta metadata formulir yang diambil, bidang kiriman sembarang dibuang
Keandalan: outbox pengiriman
Plugin tidak pernah menembakkan event ke Tajo langsung dari pemuatan halaman. Setiap event ditulis lebih dulu ke tabel outbox lokal, lalu dikirim oleh WP-Cron dengan:
- Backoff eksponensial yang dibatasi (maksimal 8 percobaan, menghormati
Retry-After) - Dead letter dengan tombol Replay dead letters sekali klik di admin
- Batas retensi sehingga endpoint yang tidak dapat dijangkau tidak pernah bisa menimbun data pribadi (terkirim: 7 hari; mengantre: 30 hari; dead letter: 30 hari setelah pembaruan terakhir)
- ID event yang idempoten, sehingga percobaan ulang dan replay tidak pernah menduplikasi di sisi hilir
Jika hosting Anda menonaktifkan WP-Cron (DISABLE_WP_CRON), panggil wp-cron.php dari penjadwal sungguhan minimal sekali per menit.
Persetujuan tidak pernah disimpulkan
Pembuatan akun, checkout, pembelian, dan pengiriman formulir umum tidak diperlakukan sebagai persetujuan pemasaran. Event bawaan membawa daftar persetujuan kosong. Untuk mencatat persetujuan eksplisit (misalnya dari kotak centang newsletter yang dicentang), kirimkan melalui hook ekstensi:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));Hook yang sama memungkinkan plugin atau tema mana pun mengirim event kustom; semuanya melewati sanitizer, outbox, dan tanda tangan yang sama.
Langkah 3: Impor historis
Event real-time mencakup semuanya sejak pemasangan. Untuk riwayat yang mendahului plugin, koneksi WooCommerce REST milik Tajo mengimpor pelanggan, pesanan, produk, kupon, pengembalian dana, dan ulasan yang sudah ada, dikonfigurasi sepenuhnya di sisi Tajo dengan WooCommerce REST API key (WooCommerce → Settings → Advanced → REST API, izin baca). Lihat referensi konektor WooCommerce untuk detailnya.
Privasi dan GDPR
- Plugin mendaftarkan diri ke Tools → Export Personal Data dan Tools → Erase Personal Data milik WordPress; event outbox tersimpan untuk email yang cocok akan diekspor atau dihapus secara lokal.
- Penghapusan dan pengiriman berbagi mutex fail-closed, sehingga penghapusan tidak pernah bisa melaporkan selesai saat sebuah payload sedang dikirim.
- Penghapusan lokal hanya mencakup outbox WordPress, ajukan permintaan yang setara di Tajo untuk data di sisi hilir.
- Menonaktifkan plugin akan menjeda pengiriman tetapi mempertahankan konfigurasi dan event yang mengantre; menghapus plugin akan menghilangkan outbox, pengaturan, secret, dan penjadwalan secara permanen.
Kompatibilitas
- HPOS: plugin mendeklarasikan kompatibilitas WooCommerce High-Performance Order Storage dan hanya memakai objek CRUD serta hook publik.
- WooCommerce Subscriptions: perubahan status langganan direkam saat ekstensi tersebut aktif.
- Multisite: proses uninstall membersihkan setiap situs di jaringan.
Referensi operasional
Penemuan server-ke-server dan kendali outbox tersedia bagi administrator melalui autentikasi Application Password:
| Metode | Rute | Tujuan |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Versi plugin, adapter yang terdeteksi, inventaris event, kesehatan outbox |
GET | /wp-json/tajo/v1/outbox | Jumlah item outbox (payload tidak pernah diekspos) |
POST | /wp-json/tajo/v1/outbox/process | Proses satu batch segera |
POST | /wp-json/tajo/v1/outbox/replay | Replay dead letter |
Pemecahan masalah
| Gejala | Penyebab dan solusi |
|---|---|
| Event tetap “Queued” | Endpoint, binding ID, atau secret belum tersimpan, pengiriman dijeda sampai ketiganya dikonfigurasi |
| Event tetap “Retrying” | Endpoint Tajo tidak dapat dijangkau dari hosting Anda, atau WP-Cron tidak berjalan, periksa kolom error pada tabel outbox dan penyiapan cron Anda |
| Dead letter menumpuk | Error yang tidak dapat dicoba ulang (biasanya binding ID atau secret yang salah), perbaiki konfigurasinya lalu jalankan Replay dead letters |
| “Enter a valid HTTPS Tajo webhook endpoint” | Endpoint harus HTTPS tanpa kredensial yang tertanam |
| Event uji terkirim tetapi tidak ada apa pun di Tajo | Pastikan Anda menempelkan binding ID dari workspace dan koneksi Tajo yang sama dengan pemilik endpoint tersebut |
Langkah berikutnya
- Referensi konektor WooCommerce: sinkronisasi REST, detail tanda tangan webhook, kunci konfigurasi
- Sinkronisasi pelanggan: memetakan pelanggan WooCommerce ke sistem pencatatan utama Anda
- Konfigurasikan otomatisasi keranjang terbengkalai, pascapembelian, dan win-back di Tajo memakai event
cart.updated,order.placed, danorder.fulfilled