---
title: "Shopify-connector"
description: "Volledige Shopify-integratiegids voor het synchroniseren van klanten, bestellingen, producten en cart-events met Brevo."
url: https://tajo.io/nl/docs/connectors/ecommerce/shopify/
markdown: https://tajo.io/nl/docs/connectors/ecommerce/shopify.md
lang: nl-NL
robots: noindex
---

Vraag vroegtijdige toegang aan

Vul je voornaam en je zakelijke e-mailadres in. We sturen je een link om je aanvraag voor toegang tot Tajo te bevestigen.

# Shopify-connector

Connectorstatus: In ontwikkeling In aanbouw. Nog niet geverifieerd.

| Bronveld | Doelveld | Voorbeeldwaarde |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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** | Nee |
| **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:

1. Een Shopify-winkel met admin-toegang
2. Een Brevo-account met API-toegang
3. Een Tajo-account

## Installatie

### Optie 1: Shopify App Store (aanbevolen)

1. Bezoek de [Tajo-app in de Shopify App Store](https://apps.shopify.com/tajo)
2. Klik op “Add app”
3. Verleen de gevraagde permissies
4. Verbind je Brevo-account

### Optie 2: Handmatige installatie

#### Stap 1: Maak een Shopify-app

1. Ga naar je Shopify-admin → Settings → Apps and sales channels
2. Klik op “Develop apps” → “Create an app”
3. Noem hem “Tajo Integration”

#### Stap 2: Configureer API-scopes

Activeer deze scopes:

```
read_customers
write_customers
read_orders
read_products
read_checkouts
write_script_tags
```

#### Stap 3: Installeer de app

```bash
# Using Tajo CLI
tajo connectors install shopify \
  --shop-url your-store.myshopify.com \
  --api-key $SHOPIFY_API_KEY \
  --api-secret $SHOPIFY_API_SECRET
```

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

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

### Veldmapping

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

```yaml
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: RECENCY
```

### Productsync

Synchroniseer producten voor e-mailaanbevelingen:

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

```yaml
sync:
  inventory:
    enabled: true
    low_stock_threshold: 10
    out_of_stock_events: true
```

## Events

### 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](https://tajo.io/nl/docs/skills/data-sync/customer-sync) | Realtime-klantsync |
| Order Events | Order-lifecycle-tracking |
| [Abandoned Cart](https://tajo.io/nl/docs/skills/email-marketing/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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Shopify store
await 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

```javascript
// Full historical sync
await tajo.connectors.sync('shopify', {
  type: 'full',
  resources: ['customers', 'orders', 'products'],
  since: '2023-01-01'
});

// Check sync status
const 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:

```liquid
<!-- 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.example.com/shopify.js"></script>
```

Caution

Het `example.com`-adres hierboven is een placeholder totdat het Tajo-endpoint beschikbaar is.

### Custom webhook-handler

```javascript
// Handle Shopify webhooks manually
app.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:

```bash
tajo connectors logs shopify --type webhook --last 24h
```

### Synchronisatiegeschiedenis

Raadpleeg historische sync-operaties:

```bash
tajo connectors history shopify --limit 10
```

## Probleemoplossing

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

```yaml
connectors:
  shopify:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Verbinding testen

```bash
tajo connectors test shopify
# ✓ API connection successful
# ✓ Webhooks registered
# ✓ Products accessible
# ✓ Customers readable
# ✓ Orders readable
```

## Best practices

1. **Begin met een testwinkel** - Gebruik eerst een development store
2. **Doe de initiële sync buiten drukke uren** - Grote syncs kunnen traag zijn
3. **Koppel custom-attributen** - Vertrouw niet alleen op de standaardmappings
4. **Schakel winkelwagentracking in** - Cruciaal voor abandoned-cart-recovery
5. **Monitor webhook-gezondheid** - Stel alerts in voor mislukte leveringen
6. **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

## Gerelateerde resources

- [WooCommerce-connector](https://tajo.io/nl/docs/connectors/ecommerce/woocommerce)
- [Customer Sync-skill](https://tajo.io/nl/docs/skills/data-sync/customer-sync)
- [Abandoned Cart-skill](https://tajo.io/nl/docs/skills/email-marketing/abandoned-cart)
- [Brevo Contacts API](https://tajo.io/nl/docs/contact-management)
