Shopify-connector
Shopify-connector
Verbind je Shopify-winkel met Brevo voor volledige klantdatasynchronisatie, abandoned-cart-recovery en geautomatiseerde marketingcampagnes.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Shopify |
| Categorie | E-commerce |
| Setupcomplexiteit | Eenvoudig |
| Officiële integratie | Ja |
| Gesynchroniseerde data | Klanten, Bestellingen, Producten, Winkelwagens, Events |
| Beschikbare skills | 12 |
Functies
- Realtime klantsync - Klantdata direct gesynchroniseerd naar Brevo-contacten
- Ordertracking - Order-events voor post-purchase-flows
- Productcatalogus-sync - Producten beschikbaar voor aanbevelingen
- Winkelwagenherstel - Volg en herstel verlaten winkelwagens
- Browsegedrag - Tracking van paginaweergaven en productinteresse
- Multi-store-ondersteuning - Verbind meerdere Shopify-winkels
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Shopify-winkel met admin-toegang
- Een Brevo-account met API-toegang
- Een Tajo-account
Installatie
Optie 1: Shopify App Store (aanbevolen)
- Bezoek de Tajo-app in de Shopify App Store
- Klik op “Add app”
- Verleen de gevraagde permissies
- Verbind je Brevo-account
Optie 2: Handmatige installatie
Stap 1: Maak een Shopify-app
- Ga naar je Shopify-admin → Settings → Apps and sales channels
- Klik op “Develop apps” → “Create an app”
- Noem hem “Tajo Integration”
Stap 2: Configureer API-scopes
Activeer deze scopes:
read_customerswrite_customersread_ordersread_productsread_checkoutswrite_script_tagsStap 3: Installeer de app
# Using Tajo CLItajo connectors install shopify \ --shop-url your-store.myshopify.com \ --api-key $SHOPIFY_API_KEY \ --api-secret $SHOPIFY_API_SECRETStap 4: Configureer webhooks
Tajo registreert automatisch deze webhooks:
| Webhook | Doel |
|---|---|
customers/create | Synchronisatie nieuwe klant |
customers/update | Wijzigingen in klantgegevens |
customers/delete | Verwijdering van klant |
orders/create | Events voor geplaatste bestellingen |
orders/updated | Wijzigingen in orderstatus |
checkouts/create | Winkelwagen aangemaakt |
checkouts/update | Winkelwagen bijgewerkt |
Configuratie
Basisopzet
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: 7Veldmapping
Koppel Shopify-velden aan Brevo-contactattributen:
Standaard-mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mailadres van de klant (unieke identifier) |
first_name optional | string | Koppelt aan FIRSTNAME-attribuut |
last_name optional | string | Koppelt aan LASTNAME-attribuut |
phone optional | string | Koppelt aan SMS-attribuut voor WhatsApp/sms |
accepts_marketing optional | boolean | Bepaalt de abonnementsstatus |
orders_count optional | integer | Totaal aantal bestellingen |
total_spent optional | number | Lifetime-klantwaarde |
tags optional | array | Klanttags uit Shopify |
Custom attribuutmapping
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: RECENCYProductsync
Synchroniseer producten voor e-mailaanbevelingen:
sync: products: enabled: true include_variants: true include_images: true categories_as_tags: true
# Filter products filter: status: active exclude_tags: ["hidden", "wholesale-only"]Voorraadtracking
Activeer synchronisatie van voorraadniveaus:
sync: inventory: enabled: true low_stock_threshold: 10 out_of_stock_events: trueEvents
Klant-events
| Event | Trigger | Use case |
|---|---|---|
customer_created | Nieuwe klantregistratie | Welkomstserie |
customer_updated | Profielwijzigingen | Datasync |
customer_tags_added | Tags toegewezen | Segmentupdates |
Order-events
| Event | Trigger | Use case |
|---|---|---|
order_placed | Checkout afgerond | Orderbevestiging |
order_fulfilled | Bestelling verzonden | Verzendnotificatie |
order_cancelled | Bestelling geannuleerd | Annuleringsmail |
order_refunded | Terugbetaling verwerkt | Terugbetalingsbevestiging |
Cart-events
| Event | Trigger | Use case |
|---|---|---|
cart_created | Items toegevoegd aan winkelwagen | Browse-tracking |
cart_updated | Winkelwagen aangepast | Waardetracking |
cart_abandoned | Geen checkout binnen 30 min | Recovery-e-mails |
Ingeschakelde skills
De Shopify-connector schakelt deze skills in:
| Skill | Beschrijving |
|---|---|
| Customer Sync | Realtime-klantsync |
| Order Events | Order-lifecycle-tracking |
| Abandoned Cart | Winkelwagenherstel-e-mails |
| Welcome Series | Onboarding van nieuwe klanten |
| Post-Purchase | Order-opvolging |
| Win-Back | Reactivering van inactieve klanten |
| Browse Abandonment | Opvolging van productinteresse |
| Replenishment | Herbestel-herinneringen |
Codevoorbeelden
Connector initialiseren
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});Voer initiële sync uit
// 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// }Cart-events tracken
Voeg het Tajo-script toe aan je Shopify-thema:
<!-- 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>Custom 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');});Monitoring
Dashboardmetrics
Monitor je Shopify-verbinding in het Tajo-dashboard:
- Syncstatus: Realtime-conditie van de verbinding
- Gesynchroniseerde klanten: Totaal aantal contacten uit Shopify
- Getrackte bestellingen: Verwerkte order-events
- Winkelwagenherstel: Prestaties van abandoned-cart
- Foutpercentage: Mislukte sync-pogingen
Webhook-logs
Bekijk de deliverystatus van webhooks:
tajo connectors logs shopify --type webhook --last 24hSynchronisatiegeschiedenis
Raadpleeg historische sync-operaties:
tajo connectors history shopify --limit 10Probleemoplossing
Veelvoorkomende problemen
API-ratelimits
Shopify hanteert API-ratelimits van 2 requests/seconde. Gebruik batch-sync voor grote historische imports.
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Webhook niet ontvangen | App-permissies | Herinstalleer de app met de juiste scopes |
| Klant niet gesynchroniseerd | Ontbrekende e-mail | Shopify vereist een e-mailadres voor klanten |
| Producten ontbreken | Productstatus | Controleer of het product op “active” staat |
| Winkelwagen niet getrackt | Script niet geladen | Verifieer script in theme.liquid |
Debugmodus
Activeer uitgebreide logging:
connectors: shopify: debug: true log_level: verbose log_webhooks: trueVerbinding testen
tajo connectors test shopify# ✓ API connection successful# ✓ Webhooks registered# ✓ Products accessible# ✓ Customers readable# ✓ Orders readableBest practices
- Begin met een testwinkel - Gebruik eerst een development store
- Doe de initiële sync buiten drukke uren - Grote syncs kunnen traag zijn
- Koppel custom-attributen - Vertrouw niet alleen op de standaardmappings
- Schakel winkelwagentracking in - Cruciaal voor abandoned-cart-recovery
- Monitor webhook-gezondheid - Stel alerts in voor mislukte leveringen
- Gebruik batch-imports - Voor historische data van meer dan 10.000 records
Beveiliging
- OAuth 2.0 - Veilige tokengebaseerde authenticatie
- Webhook-verificatie - HMAC-handtekeningvalidatie
- Versleutelde opslag - API-inloggegevens versleuteld opgeslagen
- Gescopede toegang - Alleen minimaal benodigde permissies