---
title: "Shopify Connector"
description: "Komplet guide til Shopify-integration til synkronisering af kunder, ordrer, produkter og kurvhændelser med Brevo."
url: https://tajo.io/dk/docs/connectors/ecommerce/shopify/
markdown: https://tajo.io/dk/docs/connectors/ecommerce/shopify.md
lang: da-DK
robots: noindex
---

Bed om tidlig adgang til Tajo

Indtast dit fornavn og din arbejds-e-mailadresse. Vi sender dig et link til at bekræfte din anmodning om adgang til Tajo.

# Shopify Connector

Connectorstatus: Under udvikling Under opbygning. Endnu ikke verificeret.

| Kildefelt | Destinationsfelt | Eksempelværdi |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Forbind din Shopify-butik til Brevo for komplet synkronisering af kundedata, genoprettelse af forladte kurve og automatiserede marketingkampagner.

## Oversigt

| Egenskab | Værdi |
| --- | --- |
| **Platform** | Shopify |
| **Kategori** | E-handel |
| **Opsætningskompleksitet** | Let |
| **Officiel integration** | Nej |
| **Synkroniserede data** | Kunder, ordrer, produkter, kurve, hændelser |
| **Tilgængelige skills** | 12 |

## Funktioner

- **Realtidssynkronisering af kunder** - Kundedata synkroniseres øjeblikkeligt til Brevo-kontakter
- **Ordresporing** - Ordrehændelser til flows efter køb
- **Produktkatalogsynkronisering** - Produkter tilgængelige til anbefalinger
- **Kurvforladelse** - Spor og genopret forladte kurve
- **Browseadfærd** - Sporing af sidevisninger og produktinteresse
- **Multi-butik-understøttelse** - Forbind flere Shopify-butikker

## Forudsætninger

Før du begynder, skal du sikre dig, at du har:

1. En Shopify-butik med administratoradgang
2. En Brevo-konto med API-adgang
3. En Tajo-konto

## Installation

### Mulighed 1: Shopify App Store (anbefalet)

1. Besøg [Tajo-appen i Shopify App Store](https://apps.shopify.com/tajo)
2. Klik “Add app”
3. Giv de ønskede rettigheder
4. Forbind din Brevo-konto

### Mulighed 2: Manuel installation

#### Trin 1: Opret en Shopify-app

1. Gå til din Shopify-admin → Settings → Apps and sales channels
2. Klik “Develop apps” → “Create an app”
3. Navngiv den “Tajo Integration”

#### Trin 2: Konfigurér API-scopes

Aktivér disse scopes:

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

#### Trin 3: Installér appen

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

#### Trin 4: Konfigurér webhooks

Tajo registrerer automatisk disse webhooks:

| Webhook | Formål |
| --- | --- |
| `customers/create` | Synkronisering af ny kunde |
| `customers/update` | Ændringer i kundedata |
| `customers/delete` | Fjernelse af kunde |
| `orders/create` | Hændelser om afgivne ordrer |
| `orders/updated` | Ændringer i ordrestatus |
| `checkouts/create` | Kurv oprettet |
| `checkouts/update` | Kurv opdateret |

## Konfiguration

### Grundlæggende opsætning

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

### Feltmapping

Knyt Shopify-felter til Brevo-kontaktattributter:

#### Standardmappings

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Kundens e-mail (unik identifikator) |
| `first_name` optional | string | Mapper til FIRSTNAME-attribut |
| `last_name` optional | string | Mapper til LASTNAME-attribut |
| `phone` optional | string | Mapper til SMS-attribut for WhatsApp/SMS |
| `accepts_marketing` optional | boolean | Styrer abonnementsstatus |
| `orders_count` optional | integer | Samlet antal ordrer |
| `total_spent` optional | number | Kundens livstidsværdi |
| `tags` optional | array | Kundetags fra Shopify |

#### Brugerdefineret attributmapping

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

### Produktsynkronisering

Synkronisér produkter til e-mailanbefalinger:

```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"]
```

### Lagersporing

Aktivér synkronisering af lagerniveau:

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

## Hændelser

### Kundehændelser

| Hændelse | Trigger | Anvendelse |
| --- | --- | --- |
| `customer_created` | Ny kundetilmelding | Velkomstserie |
| `customer_updated` | Profilændringer | Datasynkronisering |
| `customer_tags_added` | Tags tildelt | Segmentopdateringer |

### Ordrehændelser

| Hændelse | Trigger | Anvendelse |
| --- | --- | --- |
| `order_placed` | Checkout fuldført | Ordrebekræftelse |
| `order_fulfilled` | Ordre afsendt | Forsendelsesnotifikation |
| `order_cancelled` | Ordre annulleret | Annulleringsmail |
| `order_refunded` | Refusion behandlet | Refusionsbekræftelse |

### Kurvhændelser

| Hændelse | Trigger | Anvendelse |
| --- | --- | --- |
| `cart_created` | Varer lagt i kurv | Browse-sporing |
| `cart_updated` | Kurv ændret | Sporing af kurvværdi |
| `cart_abandoned` | Ingen checkout i 30 min. | Genoprettelsesmails |

## Aktiverede skills

Shopify-konnektoren aktiverer disse skills:

| Skill | Beskrivelse |
| --- | --- |
| [Customer Sync](https://tajo.io/dk/docs/skills/data-sync/customer-sync) | Realtidssynkronisering af kunder |
| Order Events | Sporing af ordrelivscyklus |
| [Abandoned Cart](https://tajo.io/dk/docs/skills/email-marketing/abandoned-cart) | E-mails til genoprettelse af kurv |
| Welcome Series | Onboarding af nye kunder |
| Post-Purchase | Opfølgning efter ordre |
| Win-Back | Genengagér inaktive kunder |
| Browse Abandonment | Opfølgning på produktinteresse |
| Replenishment | Genbestillingspåmindelser |

## Kodeeksempler

### Initialisér konnektor

```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
});
```

### Kør indledende synkronisering

```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
// }
```

### Spor kurvhændelser

Tilføj Tajo-scriptet til dit Shopify-tema:

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

Adressen `example.com` ovenfor er en pladsholder, indtil Tajo-endpointet er tilgængeligt.

### Brugerdefineret 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');
});
```

## Overvågning

### Dashboard-metrikker

Overvåg din Shopify-forbindelse i Tajo-dashboardet:

- **Synkroniseringsstatus**: Realtids-forbindelsestilstand
- **Synkroniserede kunder**: Samlet antal kontakter fra Shopify
- **Sporede ordrer**: Behandlede ordrehændelser
- **Kurvgenoprettelse**: Performance for forladte kurve
- **Fejlrate**: Mislykkede synkroniseringsforsøg

### Webhook-logfiler

Se webhook-leveringsstatus:

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

### Synkroniseringshistorik

Tjek historiske synkroniseringsoperationer:

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

## Fejlfinding

### Almindelige problemer

API-ratebegrænsninger

Shopify har API-ratebegrænsninger på 2 forespørgsler/sekund. Brug batch-synkronisering til store historiske importer.

| Problem | Årsag | Løsning |
| --- | --- | --- |
| Webhook ikke modtaget | App-rettigheder | Geninstallér appen med de korrekte scopes |
| Kunde ikke synkroniseret | Manglende e-mail | Shopify kræver e-mail for kunder |
| Produkter mangler | Produktstatus | Tjek, at produktet har statussen “active” |
| Kurv ikke sporet | Script ikke indlæst | Verificér script i theme.liquid |

### Fejlfindingstilstand

Aktivér udførlig logning:

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

### Test forbindelse

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

## Best practices

1. **Start med en testbutik** - Brug en udviklingsbutik først
2. **Kør indledende synkronisering uden for arbejdstid** - Store synkroniseringer kan være langsomme
3. **Map brugerdefinerede attributter** - Stol ikke kun på standardmappings
4. **Aktivér kurvsporing** - Kritisk for genoprettelse af forladte kurve
5. **Overvåg webhook-sundhed** - Opsæt advarsler for mislykkede leveringer
6. **Brug batch-importer** - Til historiske data over 10.000 poster

## Sikkerhed

- **OAuth 2.0** - Sikker tokenbaseret autentifikation
- **Webhook-verifikation** - HMAC-signaturvalidering
- **Krypteret lagring** - API-legitimationsoplysninger krypteres i hvile
- **Scoped adgang** - Kun minimumskrævede rettigheder

## Relaterede ressourcer

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