---
title: "Conector de Shopify"
description: "Guía completa de integración con Shopify para sincronizar clientes, pedidos, productos y eventos de carrito con Brevo."
url: https://tajo.io/es/docs/connectors/ecommerce/shopify/
markdown: https://tajo.io/es/docs/connectors/ecommerce/shopify.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Shopify

Estado del conector: En desarrollo En construcción. Aún no verificado.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Conecta tu tienda de Shopify con Brevo para una sincronización completa de los datos de clientes, la recuperación de carritos abandonados y campañas de marketing automatizadas.

## Resumen

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Shopify |
| **Categoría** | Ecommerce |
| **Complejidad de configuración** | Fácil |
| **Integración oficial** | No |
| **Datos sincronizados** | Clientes, Pedidos, Productos, Carritos, Eventos |
| **Skills disponibles** | 12 |

## Funcionalidades

- **Sincronización de clientes en tiempo real** - Datos de cliente sincronizados al instante con los contactos de Brevo
- **Seguimiento de pedidos** - Eventos de pedido para flujos post-compra
- **Sincronización del catálogo de productos** - Productos disponibles para recomendaciones
- **Carritos abandonados** - Rastrea y recupera carritos abandonados
- **Comportamiento de navegación** - Seguimiento de vistas de página e interés por productos
- **Soporte multi-tienda** - Conecta varias tiendas de Shopify

## Requisitos previos

Antes de empezar, asegúrate de tener:

1. Una tienda de Shopify con acceso de administrador
2. Una cuenta de Brevo con acceso a la API
3. Una cuenta de Tajo

## Instalación

### Opción 1: Shopify App Store (recomendada)

1. Visita la [app de Tajo en la Shopify App Store](https://apps.shopify.com/tajo)
2. Haz clic en “Add app”
3. Concede los permisos solicitados
4. Conecta tu cuenta de Brevo

### Opción 2: Instalación manual

#### Paso 1: crea una app de Shopify

1. Ve al admin de Shopify → Settings → Apps and sales channels
2. Haz clic en “Develop apps” → “Create an app”
3. Ponle el nombre “Tajo Integration”

#### Paso 2: configura los scopes de la API

Habilita estos scopes:

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

#### Paso 3: instala la 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
```

#### Paso 4: configura los webhooks

Tajo registra automáticamente estos webhooks:

| Webhook | Propósito |
| --- | --- |
| `customers/create` | Sincronización de nuevo cliente |
| `customers/update` | Cambios en datos del cliente |
| `customers/delete` | Eliminación de cliente |
| `orders/create` | Evento de pedido realizado |
| `orders/updated` | Cambios de estado del pedido |
| `checkouts/create` | Carrito creado |
| `checkouts/update` | Carrito actualizado |

## Configuración

### Configuración básica

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

### Asignación de campos

Asocia los campos de Shopify con los atributos de contacto de Brevo:

#### Default Mappings

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Email del cliente (identificador único) |
| `first_name` optional | string | Se asocia al atributo FIRSTNAME |
| `last_name` optional | string | Se asocia al atributo LASTNAME |
| `phone` optional | string | Se asocia al atributo SMS para WhatsApp/SMS |
| `accepts_marketing` optional | boolean | Controla el estado de suscripción |
| `orders_count` optional | integer | Número total de pedidos |
| `total_spent` optional | number | Valor del cliente a lo largo del tiempo |
| `tags` optional | array | Etiquetas del cliente en Shopify |

#### Asignación de atributos personalizados

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

### Sincronización de productos

Sincroniza productos para recomendaciones por email:

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

### Seguimiento de inventario

Habilita la sincronización de niveles de stock:

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

## Eventos

### Eventos de cliente

| Evento | Disparador | Caso de uso |
| --- | --- | --- |
| `customer_created` | Registro de nuevo cliente | Serie de bienvenida |
| `customer_updated` | Cambios en el perfil | Sincronización de datos |
| `customer_tags_added` | Etiquetas asignadas | Actualización de segmentos |

### Eventos de pedido

| Evento | Disparador | Caso de uso |
| --- | --- | --- |
| `order_placed` | Checkout completado | Confirmación de pedido |
| `order_fulfilled` | Pedido enviado | Notificación de envío |
| `order_cancelled` | Pedido cancelado | Email de cancelación |
| `order_refunded` | Reembolso procesado | Confirmación de reembolso |

### Eventos de carrito

| Evento | Disparador | Caso de uso |
| --- | --- | --- |
| `cart_created` | Artículos añadidos al carrito | Seguimiento de navegación |
| `cart_updated` | Carrito modificado | Seguimiento del valor del carrito |
| `cart_abandoned` | Sin checkout en 30 min | Emails de recuperación |

## Skills habilitadas

El conector de Shopify habilita estas skills:

| Skill | Descripción |
| --- | --- |
| [Sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync) | Sincronización de clientes en tiempo real |
| Eventos de pedido | Seguimiento del ciclo de vida del pedido |
| [Carrito abandonado](https://tajo.io/es/docs/skills/email-marketing/abandoned-cart) | Emails de recuperación de carrito |
| Serie de bienvenida | Onboarding de nuevos clientes |
| Post-compra | Seguimiento del pedido |
| Win-back | Reactivar clientes inactivos |
| Abandono de navegación | Seguimiento por interés en producto |
| Reposición | Recordatorios de recompra |

## Ejemplos de código

### Inicializar el conector

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

### Ejecutar la sincronización inicial

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

### Rastrear eventos de carrito

Añade el script de Tajo a tu tema de Shopify:

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

La dirección `example.com` de arriba es un marcador de posición hasta que el endpoint de Tajo esté disponible.

### Handler personalizado de webhooks

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

## Monitorización

### Métricas del dashboard

Monitoriza tu conexión con Shopify desde el dashboard de Tajo:

- **Estado de sincronización**: salud de la conexión en tiempo real
- **Clientes sincronizados**: total de contactos desde Shopify
- **Pedidos rastreados**: eventos de pedido procesados
- **Recuperación de carrito**: rendimiento de carritos abandonados
- **Tasa de errores**: intentos de sincronización fallidos

### Logs de webhooks

Consulta el estado de entrega de los webhooks:

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

### Historial de sincronización

Revisa las operaciones de sincronización pasadas:

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

## Resolución de problemas

### Problemas habituales

Límites de velocidad de la API

Shopify tiene límites de velocidad de 2 peticiones/segundo. Usa sincronizaciones por lotes para grandes importaciones históricas.

| Problema | Causa | Solución |
| --- | --- | --- |
| Webhook no recibido | Permisos de la app | Reinstala la app con los scopes correctos |
| Cliente no sincronizado | Falta el email | Shopify requiere email en los clientes |
| Faltan productos | Estado del producto | Comprueba que el producto está en estado “active” |
| Carrito no rastreado | Script no cargado | Verifica el script en theme.liquid |

### Modo depuración

Habilita el logging detallado:

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

### Probar la conexión

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

## Buenas prácticas

1. **Empieza con una tienda de pruebas** - Usa primero una development store
2. **Ejecuta la sincronización inicial fuera de horas punta** - Las sincronizaciones grandes pueden ser lentas
3. **Asigna atributos personalizados** - No te quedes solo con las asignaciones por defecto
4. **Habilita el seguimiento del carrito** - Fundamental para la recuperación de carritos abandonados
5. **Monitoriza la salud de los webhooks** - Configura alertas para las entregas fallidas
6. **Usa importaciones por lotes** - Para datos históricos de más de 10.000 registros

## Seguridad

- **OAuth 2.0** - Autenticación segura basada en tokens
- **Verificación de webhooks** - Validación de firma HMAC
- **Almacenamiento cifrado** - Credenciales de API cifradas en reposo
- **Acceso por scopes** - Solo los permisos mínimos necesarios

## Recursos relacionados

- [Conector de WooCommerce](https://tajo.io/es/docs/connectors/ecommerce/woocommerce)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
- [Skill de carrito abandonado](https://tajo.io/es/docs/skills/email-marketing/abandoned-cart)
- [API de contactos de Brevo](https://tajo.io/es/docs/contact-management)
