Konektor Shopify
Hubungkan toko Shopify Anda ke Brevo untuk sinkronisasi data pelanggan yang lengkap, pemulihan keranjang yang ditinggalkan, dan kampanye pemasaran otomatis.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Shopify |
| Kategori | E-commerce |
| Kompleksitas penyiapan | Mudah |
| Integrasi resmi | Ya |
| Data yang tersinkron | Pelanggan, Pesanan, Produk, Keranjang, Event |
| Skill yang tersedia | 12 |
Fitur
- Sinkronisasi pelanggan real-time - Data pelanggan tersinkron seketika ke kontak Brevo
- Pelacakan pesanan - Event pesanan untuk alur pascapembelian
- Sinkronisasi katalog produk - Produk tersedia untuk rekomendasi
- Keranjang yang ditinggalkan - Lacak dan pulihkan keranjang yang ditinggalkan
- Perilaku penelusuran - Pelacakan tampilan halaman dan minat produk
- Dukungan multi-toko - Hubungkan beberapa toko Shopify sekaligus
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Toko Shopify dengan akses admin
- Akun Brevo dengan akses API
- Akun Tajo
Instalasi
Opsi 1: Shopify App Store (disarankan)
- Kunjungi aplikasi Tajo di Shopify App Store
- Klik “Add app”
- Berikan izin yang diminta
- Hubungkan akun Brevo Anda
Opsi 2: Instalasi manual
Langkah 1: Buat aplikasi Shopify
- Buka admin Shopify Anda → Settings → Apps and sales channels
- Klik “Develop apps” → “Create an app”
- Beri nama “Tajo Integration”
Langkah 2: Konfigurasikan scope API
Aktifkan scope berikut:
read_customerswrite_customersread_ordersread_productsread_checkoutswrite_script_tagsLangkah 3: Instal aplikasi
# Using Tajo CLItajo connectors install shopify \ --shop-url your-store.myshopify.com \ --api-key $SHOPIFY_API_KEY \ --api-secret $SHOPIFY_API_SECRETLangkah 4: Konfigurasikan webhook
Tajo secara otomatis mendaftarkan webhook berikut:
| Webhook | Tujuan |
|---|---|
customers/create | Sinkronisasi pelanggan baru |
customers/update | Perubahan data pelanggan |
customers/delete | Penghapusan pelanggan |
orders/create | Event pesanan dibuat |
orders/updated | Perubahan status pesanan |
checkouts/create | Keranjang dibuat |
checkouts/update | Keranjang diperbarui |
Konfigurasi
Penyiapan dasar
connectors: shopify: enabled: true shop_url: "your-store.myshopify.com" api_version: "2024-01"
# Data sync options sync: customers: true orders: true products: true carts: true inventory: false # Optional
# List assignment lists: all_customers: 5 buyers: 6 abandoned_cart: 7Pemetaan field
Petakan field Shopify ke atribut kontak Brevo:
Pemetaan default
| Parameter | Type | Description |
|---|---|---|
email required | string | Email pelanggan (identifier unik) |
first_name optional | string | Dipetakan ke atribut FIRSTNAME |
last_name optional | string | Dipetakan ke atribut LASTNAME |
phone optional | string | Dipetakan ke atribut SMS untuk WhatsApp/SMS |
accepts_marketing optional | boolean | Mengontrol status berlangganan |
orders_count optional | integer | Jumlah total pesanan |
total_spent optional | number | Nilai pelanggan seumur hidup |
tags optional | array | Tag pelanggan dari Shopify |
Pemetaan atribut kustom
field_mapping: # Standard fields email: email first_name: FIRSTNAME last_name: LASTNAME phone: SMS
# E-commerce metrics orders_count: ORDER_COUNT total_spent: TOTAL_SPENT last_order_date: LAST_ORDER_DATE
# Custom fields customer_type: CUSTOMER_TYPE preferred_language: LANGUAGE loyalty_tier: VIP_TIER
# Computed fields average_order_value: AOV days_since_last_order: RECENCYSinkronisasi produk
Sinkronkan produk untuk rekomendasi email:
sync: products: enabled: true include_variants: true include_images: true categories_as_tags: true
# Filter products filter: status: active exclude_tags: ["hidden", "wholesale-only"]Pelacakan inventaris
Aktifkan sinkronisasi level stok:
sync: inventory: enabled: true low_stock_threshold: 10 out_of_stock_events: trueEvent
Event pelanggan
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
customer_created | Pendaftaran pelanggan baru | Welcome series |
customer_updated | Perubahan profil | Sinkronisasi data |
customer_tags_added | Tag ditetapkan | Pembaruan segmen |
Event pesanan
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
order_placed | Checkout selesai | Konfirmasi pesanan |
order_fulfilled | Pesanan dikirim | Notifikasi pengiriman |
order_cancelled | Pesanan dibatalkan | Email pembatalan |
order_refunded | Refund diproses | Konfirmasi refund |
Event keranjang
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
cart_created | Item ditambahkan ke keranjang | Pelacakan penelusuran |
cart_updated | Keranjang diubah | Pelacakan nilai keranjang |
cart_abandoned | Tidak checkout dalam 30 menit | Email pemulihan |
Skill yang diaktifkan
Konektor Shopify mengaktifkan skill berikut:
| Skill | Deskripsi |
|---|---|
| Customer Sync | Sinkronisasi pelanggan real-time |
| Order Events | Pelacakan siklus hidup pesanan |
| Abandoned Cart | Email pemulihan keranjang |
| Welcome Series | Onboarding pelanggan baru |
| Post-Purchase | Tindak lanjut pesanan |
| Win-Back | Aktifkan kembali pelanggan yang tidak aktif |
| Browse Abandonment | Tindak lanjut minat produk |
| Replenishment | Pengingat pemesanan ulang |
Contoh kode
Inisialisasi konektor
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Shopify storeawait tajo.connectors.connect('shopify', { shopUrl: 'your-store.myshopify.com', apiKey: process.env.SHOPIFY_API_KEY, apiSecret: process.env.SHOPIFY_API_SECRET});Jalankan sinkronisasi awal
// Full historical syncawait tajo.connectors.sync('shopify', { type: 'full', resources: ['customers', 'orders', 'products'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('shopify');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// customersCount: 15420,// ordersCount: 8234,// productsCount: 342// }Lacak event keranjang
Tambahkan script Tajo ke tema Shopify Anda:
<!-- Add to theme.liquid before </head> -->{% if customer %}<script> window.tajoConfig = { customerId: "{{ customer.id }}", customerEmail: "{{ customer.email }}", customerName: "{{ customer.first_name }}" };</script>{% endif %}<script src="https://cdn.tajo.io/shopify.js"></script>Handler webhook kustom
// Handle Shopify webhooks manuallyapp.post('/webhooks/shopify', async (req, res) => { const hmac = req.get('X-Shopify-Hmac-SHA256');
// Verify webhook signature if (!verifyShopifyWebhook(req.body, hmac)) { return res.status(401).send('Unauthorized'); }
const topic = req.get('X-Shopify-Topic');
// Forward to Tajo await tajo.connectors.handleWebhook('shopify', { topic, payload: req.body });
res.status(200).send('OK');});Pemantauan
Metrik dasbor
Pantau koneksi Shopify Anda di dasbor Tajo:
- Status sinkronisasi: Kesehatan koneksi secara real-time
- Pelanggan tersinkron: Total kontak yang berasal dari Shopify
- Pesanan terlacak: Event pesanan yang telah diproses
- Pemulihan keranjang: Performa keranjang yang ditinggalkan
- Tingkat error: Upaya sinkronisasi yang gagal
Log webhook
Lihat status pengiriman webhook:
tajo connectors logs shopify --type webhook --last 24hRiwayat sinkronisasi
Periksa riwayat operasi sinkronisasi:
tajo connectors history shopify --limit 10Pemecahan masalah
Masalah umum
Batas rate API
Shopify menerapkan batas rate API sebesar 2 permintaan/detik. Gunakan sinkronisasi batch untuk impor data historis berukuran besar.
| Masalah | Penyebab | Solusi |
|---|---|---|
| Webhook tidak diterima | Izin aplikasi | Instal ulang aplikasi dengan scope yang benar |
| Pelanggan tidak tersinkron | Email tidak ada | Shopify mewajibkan email untuk setiap pelanggan |
| Produk tidak muncul | Status produk | Pastikan produk berstatus “active” |
| Keranjang tidak terlacak | Script tidak termuat | Verifikasi script di theme.liquid |
Mode debug
Aktifkan logging verbose:
connectors: shopify: debug: true log_level: verbose log_webhooks: trueUji koneksi
tajo connectors test shopify# ✓ API connection successful# ✓ Webhooks registered# ✓ Products accessible# ✓ Customers readable# ✓ Orders readablePraktik terbaik
- Mulai dengan toko uji - Gunakan development store terlebih dahulu
- Jalankan sinkronisasi awal di luar jam sibuk - Sinkronisasi berskala besar bisa berjalan lambat
- Petakan atribut kustom - Jangan hanya mengandalkan pemetaan default
- Aktifkan pelacakan keranjang - Krusial untuk pemulihan keranjang yang ditinggalkan
- Pantau kesehatan webhook - Siapkan alert untuk pengiriman yang gagal
- Gunakan impor batch - Untuk data historis di atas 10.000 record
Keamanan
- OAuth 2.0 - Autentikasi berbasis token yang aman
- Verifikasi webhook - Validasi tanda tangan HMAC
- Penyimpanan terenkripsi - Kredensial API dienkripsi saat disimpan
- Akses ber-scope - Hanya izin minimum yang diperlukan