Shopify konektor
Shopify konektor
Poveži svoju Shopify prodavnicu sa Brevo za kompletnu sinhronizaciju podataka o kupcima, oporavak napuštene korpe i automatizovane marketing kampanje.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | Shopify |
| Kategorija | E-commerce |
| Složenost podešavanja | Lako |
| Zvanična integracija | Da |
| Sinhronizovani podaci | Kupci, porudžbine, proizvodi, korpe, događaji |
| Dostupne veštine | 12 |
Karakteristike
- Sinhronizacija kupaca u realnom vremenu - Podaci o kupcima se trenutno sinhronizuju sa Brevo kontaktima
- Praćenje porudžbina - Događaji o porudžbinama za post-purchase tokove
- Sinhronizacija kataloga proizvoda - Proizvodi dostupni za preporuke
- Napuštanje korpe - Praćenje i oporavak napuštenih korpi
- Ponašanje pregledanja - Praćenje pregleda stranica i interesovanja za proizvode
- Multi-store podrška - Poveži više Shopify prodavnica
Preduslovi
Pre nego što započneš, proveri da imaš:
- Shopify prodavnicu sa admin pristupom
- Brevo nalog sa API pristupom
- Tajo nalog
Instalacija
Opcija 1: Shopify App Store (preporučeno)
- Poseti Tajo aplikaciju u Shopify App Store-u
- Klikni “Add app”
- Dozvoli tražene dozvole
- Poveži svoj Brevo nalog
Opcija 2: Ručna instalacija
Korak 1: Napravi Shopify aplikaciju
- Idi u Shopify admin → Settings → Apps and sales channels
- Klikni “Develop apps” → “Create an app”
- Nazovi je “Tajo Integration”
Korak 2: Konfiguriši API skopove
Omogući ove skopove:
read_customerswrite_customersread_ordersread_productsread_checkoutswrite_script_tagsKorak 3: Instaliraj aplikaciju
# Using Tajo CLItajo connectors install shopify \ --shop-url your-store.myshopify.com \ --api-key $SHOPIFY_API_KEY \ --api-secret $SHOPIFY_API_SECRETKorak 4: Konfiguriši webhook-ove
Tajo automatski registruje ove webhook-ove:
| Webhook | Svrha |
|---|---|
customers/create | Sinhronizacija novog kupca |
customers/update | Izmene podataka kupca |
customers/delete | Uklanjanje kupca |
orders/create | Događaji postavljene porudžbine |
orders/updated | Izmene statusa porudžbine |
checkouts/create | Korpa kreirana |
checkouts/update | Korpa ažurirana |
Konfiguracija
Osnovno podešavanje
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: 7Mapiranje polja
Mapiraj Shopify polja na Brevo atribute kontakta:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Email kupca (jedinstveni identifikator) |
first_name optional | string | Mapira se na FIRSTNAME atribut |
last_name optional | string | Mapira se na LASTNAME atribut |
phone optional | string | Mapira se na SMS atribut za WhatsApp/SMS |
accepts_marketing optional | boolean | Kontroliše status pretplate |
orders_count optional | integer | Ukupan broj porudžbina |
total_spent optional | number | Lifetime vrednost kupca |
tags optional | array | Tagovi kupca iz Shopify |
Prilagođeno mapiranje atributa
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: RECENCYSinhronizacija proizvoda
Sinhronizuj proizvode za preporuke u email-u:
sync: products: enabled: true include_variants: true include_images: true categories_as_tags: true
# Filter products filter: status: active exclude_tags: ["hidden", "wholesale-only"]Praćenje zaliha
Omogući sinhronizaciju nivoa zaliha:
sync: inventory: enabled: true low_stock_threshold: 10 out_of_stock_events: trueDogađaji
Događaji kupaca
| Događaj | Okidač | Primer upotrebe |
|---|---|---|
customer_created | Registracija novog kupca | Welcome series |
customer_updated | Izmene profila | Sinhronizacija podataka |
customer_tags_added | Dodeljeni tagovi | Izmene segmenata |
Događaji porudžbina
| Događaj | Okidač | Primer upotrebe |
|---|---|---|
order_placed | Završetak porudžbine | Potvrda porudžbine |
order_fulfilled | Porudžbina poslata | Obaveštenje o slanju |
order_cancelled | Porudžbina otkazana | Email o otkazivanju |
order_refunded | Obrađen povraćaj | Potvrda povraćaja |
Događaji korpe
| Događaj | Okidač | Primer upotrebe |
|---|---|---|
cart_created | Dodate stavke u korpu | Browse tracking |
cart_updated | Korpa izmenjena | Praćenje vrednosti korpe |
cart_abandoned | Nema checkout-a za 30min | Email-ovi za oporavak |
Omogućene veštine
Shopify konektor aktivira ove veštine:
| Veština | Opis |
|---|---|
| Customer Sync | Sinhronizacija kupaca u realnom vremenu |
| Order Events | Praćenje životnog ciklusa porudžbine |
| Abandoned Cart | Email-ovi za oporavak korpe |
| Welcome Series | Uvođenje novih kupaca |
| Post-Purchase | Praćenje nakon porudžbine |
| Win-Back | Reangažovanje neaktivnih kupaca |
| Browse Abandonment | Praćenje interesovanja za proizvode |
| Replenishment | Podsetnici za ponovnu kupovinu |
Primeri koda
Inicijalizacija konektora
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});Pokreni inicijalnu sinhronizaciju
// 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// }Praćenje događaja korpe
Dodaj Tajo skriptu u svoju Shopify temu:
<!-- 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>Prilagođeni webhook handler
// 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');});Praćenje
Metrike dashboard-a
Prati svoju Shopify vezu u Tajo dashboard-u:
- Sync Status: Zdravlje veze u realnom vremenu
- Customers Synced: Ukupno kontakata iz Shopify
- Orders Tracked: Obrađeni događaji porudžbina
- Cart Recovery: Performanse oporavka napuštene korpe
- Error Rate: Neuspeli pokušaji sinhronizacije
Webhook logovi
Pogledaj status isporuke webhook-ova:
tajo connectors logs shopify --type webhook --last 24hIstorija sinhronizacije
Proveri istorijske operacije sinhronizacije:
tajo connectors history shopify --limit 10Rešavanje problema
Česti problemi
API ograničenja
Shopify ima API limit od 2 zahteva/sekundi. Koristi batch sinhronizaciju za velike istorijske uvoze.
| Problem | Uzrok | Rešenje |
|---|---|---|
| Webhook nije primljen | Dozvole aplikacije | Ponovo instaliraj aplikaciju sa ispravnim skopovima |
| Kupac nije sinhronizovan | Nedostaje email | Shopify zahteva email za kupce |
| Proizvodi nedostaju | Status proizvoda | Proveri da li je proizvod u “active” statusu |
| Korpa se ne prati | Skripta nije učitana | Proveri skriptu u theme.liquid |
Debug režim
Uključi detaljno logovanje:
connectors: shopify: debug: true log_level: verbose log_webhooks: trueTestiraj vezu
tajo connectors test shopify# ✓ API connection successful# ✓ Webhooks registered# ✓ Products accessible# ✓ Customers readable# ✓ Orders readableNajbolje prakse
- Počni sa test prodavnicom - Prvo koristi development prodavnicu
- Pokreni inicijalnu sinhronizaciju van radnog vremena - Velike sinhronizacije mogu biti spore
- Mapiraj prilagođene atribute - Ne oslanjaj se samo na podrazumevana mapiranja
- Uključi praćenje korpe - Kritično za oporavak napuštene korpe
- Prati zdravlje webhook-ova - Postavi upozorenja za neuspele isporuke
- Koristi batch uvoz - Za istorijske podatke preko 10.000 zapisa
Bezbednost
- OAuth 2.0 - Bezbedna autentifikacija zasnovana na tokenima
- Verifikacija webhook-ova - HMAC validacija potpisa
- Šifrovano skladištenje - API kredencijali šifrovani u mirovanju
- Skopirani pristup - Samo minimum potrebnih dozvola