Guía de integración con Shopify
Tajo conecta Shopify con Brevo en dos lugares. La app de Shopify de Tajo convierte los webhooks de Shopify en escrituras en Brevo a medida que llegan. Las reglas de sincronización, que construye un agente y aprueba una persona, llevan registros a Brevo según una programación. Esta página cubre ambas y, después, las herramientas de Shopify que Tajo ofrece por MCP.
Requisitos previos
Antes de empezar la integración, asegúrate de tener:
- Una tienda de Shopify en cualquier plan (Basic, Shopify, Advanced o Plus)
- Una cuenta de Tajo (Tajo está en acceso anticipado)
- Una cuenta de Brevo, el destino de la sincronización
- Acceso de administrador a tu tienda de Shopify
Paso 1: conecta tu tienda de Shopify
Tajo está en acceso anticipado. La app de Shopify no figura en la Shopify App Store y no hay un enlace de instalación de autoservicio. Contacta con el equipo para que te lo configuren. Cuando tu espacio de trabajo de Tajo esté listo:
- En Tajo, abre Connections.
- Introduce el dominio myshopify.com de tu tienda y elige Connect Shopify. Shopify muestra los scopes que solicita Tajo y te devuelve a Tajo cuando los apruebas.
- Consulta para qué sirve cada scope, y qué escribe Tajo de vuelta en Shopify, en los permisos de Shopify explicados.
Paso 2: qué envía la app de Shopify de Tajo a Brevo
La app verifica cada webhook de Shopify, lo guarda, lo pone en cola y lo procesa de inmediato. Los temas de clientes y productos esperan antes unos cuatro segundos. No hay ventana de lotes. Un trabajo fallido se reintenta con backoff.
Temas de webhook
La app de Shopify de Tajo se suscribe a estos temas de webhook de Shopify:
| Temas de webhook | Propósito |
|---|---|
customers/create, customers/update, customers/delete | Mantener actualizados los contactos de Brevo |
orders/create, orders/updated, orders/fulfilled, orders/cancelled | Eventos de pedidos y métricas de pedidos para Brevo |
orders/paid, refunds/create | Otorgar y descontar puntos de fidelidad |
checkouts/create, checkouts/update | Recuperación de checkouts abandonados en Brevo |
products/create, products/update, products/delete | Mantener actualizado el catálogo de productos en Brevo |
inventory_levels/update | Mantener actualizado el stock de productos en Brevo |
collections/create, collections/update, collections/delete | Mantener actualizadas las colecciones |
companies/*, company_contacts/*, company_locations/* (create, update, delete) | Sincronización de empresas B2B |
app/uninstalled, app/scopes_update, app_subscriptions/update | Ciclo de vida de la app |
También se gestionan los webhooks de privacidad obligatorios de Shopify (solicitud de datos del cliente, eliminación de datos del cliente y eliminación de datos de la tienda). La app no se suscribe a carts/*. Los carritos abandonados provienen de los temas checkouts/*.
Lo que llega a Brevo:
| Evento de Shopify | En Brevo |
|---|---|
| Cliente creado o actualizado | El contacto se crea o actualiza con nombre, email y consentimiento de marketing. En los planes de pago, la app añade etiquetas, número de pedidos, importe gastado y último pedido. |
| Cliente eliminado | El contacto se da de baja, no se elimina |
| Pedido creado, actualizado, pagado, preparado o cancelado | El pedido a través de la API de pedidos de Brevo, y los eventos order_paid, order_completed y order_cancelled |
| Reembolso creado | El evento order_refunded. Si gestionas un programa de fidelidad de Brevo a través de Tajo, los puntos se descuentan de forma proporcional. |
| Pedido pagado, con un programa de fidelidad de Brevo | Puntos otorgados según tu tasa de puntos por dólar |
| Checkout creado o actualizado, con un email y artículos | Los eventos cart_updated y cart_abandoned. Tu automatización de Brevo decide cuándo enviar. |
| Producto o colección creados, actualizados o eliminados | El catálogo de productos y las categorías de Brevo |
| Nivel de inventario actualizado | El stock del producto en el catálogo de Brevo. Cuando una variante pasa de 0 a más de 0, cada comprador que pidió que se le avisara recibe un evento back_in_stock, una vez por reposición. |
La app no añade un botón “Notify me” a tu tema. Una solicitud de aviso de reposición tiene que venir de tu tienda, por ejemplo de un botón que añadas tú.
Datos existentes
Al instalarla, la app importa tus clientes existentes como contactos de Brevo. Una sincronización histórica completa se inicia desde la página de sincronización de la app. En los planes de pago también importa productos, colecciones, empresas y pedidos.
Paso 3: construye una regla de sincronización con el agente
Una regla de sincronización es una definición declarativa de una sincronización: un recurso de origen, una acción de Brevo, una asignación de campos y un filtro. No la escribes a mano. La describes, un agente la construye y una persona la aprueba.
- En Tajo, abre Agents y pide la sincronización al Brevo Integration Architect con tus propias palabras. Por ejemplo: “Envía a Brevo como contactos los clientes de Shopify que aceptaron el email marketing.”
- El agente inspecciona el conector de Shopify. Su muestra devuelve nombres y tipos de campos, nunca valores de clientes.
- Propone una regla con una asignación de campos y un filtro, valida la asignación de campos contra la acción de Brevo y hace una ejecución de prueba del borrador. Ninguno de los dos pasos lee registros de clientes.
- Guarda la regla como borrador. También puedes empezar desde una plantilla en Connections > Syncs and mappings > New sync from template.
- Request publish approval ejecuta una previsualización contra tu tienda. Lee como máximo 10 registros, no escribe nada en Brevo y no mueve el cursor. Solo registra recuentos: registros obtenidos, aptos, asignados y rechazados por el filtro, además de los errores de asignación. Si la previsualización falla, no se crea ninguna aprobación.
- Una persona aprueba la solicitud en la página Approvals, con una justificación escrita. La aprobación queda vinculada a un digest SHA-256 de la regla y caduca a los 30 minutos. La página de la regla muestra entonces Publish approved version.
Editar una regla publicada la devuelve a borrador. Vuelve a pasar por la previsualización y la aprobación antes de ejecutarse de nuevo.
Una regla real
Esta es la plantilla Shopify customers -> Brevo contacts tal como la define Tajo:
sourceSlug: "shopify",sourceResource: "customers",destinationSlug: "brevo",destinationAction: "upsert_contact",fieldMap: [ { source: "email", destination: "email", transform: "toLowerCase" }, { source: "first_name", destination: "attributes.FIRSTNAME" }, { source: "last_name", destination: "attributes.LASTNAME" }, { source: "phone", destination: "attributes.PHONE" }, { source: "total_spent", destination: "attributes.TOTAL_SPENT", transform: "toNumber" }, { source: "orders_count", destination: "attributes.ORDERS_COUNT", transform: "toNumber" }, { source: "tajo_email_marketing_consent", destination: "attributes.OPT_IN", transform: "toBoolean" }, { source: "tags", destination: "attributes.SHOPIFY_TAGS" }, { source: "id", destination: "attributes.SHOPIFY_ID", transform: "toString" }, { source: "created_at", destination: "attributes.SHOPIFY_CREATED_AT" }, { source: "updated_at", destination: "attributes.SHOPIFY_UPDATED_AT" },],filterExpression: "($json.tajo_email_marketing_consent === true) && ($json.tajo_email_suppressed === false)",El filtro es la comprobación de consentimiento. Tajo obtiene ambos valores de email_marketing_consent.state de Shopify, o del indicador más antiguo accepts_marketing. Una regla que escribe contactos en Brevo no puede publicarse sin él. La otra plantilla de Shopify, Shopify orders → Brevo orders, registra en Brevo los pedidos de los compradores que aceptaron el marketing en el checkout.
Cuándo se ejecuta una regla
- Las reglas de sincronización de contactos se ejecutan cada 15 minutos por defecto. Cada ejecución empieza desde el cursor de la regla.
- La página de una regla activa tiene un botón Test run (1 batch).
- Una regla Shopify orders → Brevo orders activa y publicada también se ejecuta cada 15 minutos. Su primera ejecución programada empieza unos minutos antes de ese momento y no envía pedidos más antiguos. Cada ejecución posterior envía los pedidos actualizados desde la ejecución anterior.
- Los pedidos anteriores solo llegan a Brevo cuando ejecutas tú la regla: con Test run (1 batch) o pidiéndole al agente Sync Operator que la ejecute.
- Una regla de pedidos solo se ejecuta de forma programada con el filtro de consentimiento de marketing del comprador que trae la plantilla. Una regla cuyo filtro se ha editado solo se ejecuta cuando la inicias tú.
- Tras cinco ejecuciones fallidas consecutivas, la regla se pausa sola y su página muestra el último error. Corrige la causa y vuelve a publicar.
Cada ejecución aparece en el historial de ejecuciones de la regla, con los registros leídos, escritos y fallidos, y su duración.
Qué lee y escribe el conector de Shopify
Las reglas de sincronización solo escriben en el destino, aquí Brevo. Nunca escriben en Shopify.
La app de Shopify de Tajo solicita 12 scopes y hace una lista corta de escrituras en Shopify, como las bajas por consentimiento y las etiquetas de fidelidad. Los permisos de Shopify explicados enumeran cada scope y cada escritura, con lo que la desencadena.
Los agentes y los hosts MCP acceden a la tienda a través del conector de Shopify:
| Lecturas | Escrituras |
|---|---|
| Datos de la tienda, clientes (lista y búsqueda), pedidos, productos, metacampos de clientes, niveles de inventario, estado de las exportaciones masivas | Metacampos y etiquetas de clientes, e inicio de una exportación masiva. Cada escritura se prepara como una propuesta y solo se ejecuta después de aprobarse. |
El conector también declara un ajuste de inventario. Necesita el scope write_inventory, que la app de Shopify de Tajo no solicita.
Paso 4: usa las herramientas de Shopify por MCP
Tajo ofrece el conector de Shopify como servidor MCP en https://alto.tajo.io/mcp/connectors/shopify. Añádelo a Claude Code:
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopifyEl host descubre el servidor OAuth de Tajo y abre el inicio de sesión de Tajo. El acceso está limitado a las cuentas con acceso anticipado. El servidor expone 12 herramientas:
| Herramienta | Qué hace |
|---|---|
preview_tajo_shopify_app | Previsualización interactiva de la app de Shopify de Tajo, renderizada como MCP UI |
get_shop | Los datos de la tienda |
search_customers | Busca clientes con la sintaxis de consulta de Shopify, como tag:tajo-vip o total_spent:>100 |
list_customers | Lista clientes, con paginación |
list_orders | Lista pedidos, con paginación |
list_products | Lista productos con variantes, imágenes e inventario |
get_customer_metafields | Lee los metacampos de un cliente |
get_inventory_levels | Lee el inventario de una variante en todas las ubicaciones |
poll_bulk_export | Comprueba una exportación masiva y obtiene su enlace de descarga cuando termina |
calculate_rewards_profile | Calcula el nivel, los puntos y el saldo de recompensas de un cliente a partir de los datos de comercio sincronizados |
shopify_propose | Prepara una escritura en Shopify como propuesta. No se envía nada. |
shopify_apply | Ejecuta una propuesta aprobada |
Solución de problemas
- Contactos que no aparecen en Brevo: consulta contactos que no aparecen en Brevo.
- Una regla que no se ejecuta, o que se pausó sola: consulta los datos no se sincronizan.
Próximos pasos
- Entender la sincronización de datos, cómo se comportan las reglas de sincronización
- Los permisos de Shopify explicados, cada scope y cada escritura
- Shopify + Brevo, la guía de integración
- Contacta con el equipo para que te lo configuren