---
title: "Руководство по интеграции с Shopify | Tajo"
description: "Как Tajo соединяет магазин Shopify с Brevo: синхронизация приложения Shopify через вебхуки, правила синхронизации, которые строит агент и одобряет человек, и MCP-инструменты Shopify."
url: https://tajo.io/ru/docs/ecommerce-platforms/shopify/
markdown: https://tajo.io/ru/docs/ecommerce-platforms/shopify.md
lang: ru-RU
author: "Set Noa"
author_url: https://tajo.io/ru/set-noa/
robots: noindex
---

Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

# Руководство по интеграции с Shopify

[Set Noa](https://tajo.io/ru/set-noa/)

Tajo соединяет Shopify с Brevo в двух местах. Приложение Tajo для Shopify превращает вебхуки Shopify в записи в Brevo по мере их поступления. Правила синхронизации, которые строит агент и одобряет человек, переносят записи в Brevo по расписанию. На этой странице описано и то и другое, а затем инструменты Shopify, которые Tajo предоставляет через MCP.

## Предварительные требования

Перед началом интеграции убедитесь, что у вас есть:

- **Магазин Shopify** на любом тарифе (Basic, Shopify, Advanced или Plus)
- **Аккаунт Tajo** (Tajo находится в раннем доступе)
- **Аккаунт Brevo**, получатель синхронизации
- **Права администратора** в вашем магазине Shopify

## Шаг 1: подключите магазин Shopify

Tajo находится в раннем доступе. Приложение Shopify не опубликовано в Shopify App Store, и ссылки для самостоятельной установки нет. [Свяжитесь с командой](https://tajo.io/ru/contact), чтобы вас подключили. Когда рабочее пространство Tajo будет готово:

1. В Tajo откройте **Connections**.
2. Введите домен магазина на myshopify.com и выберите **Connect Shopify**. Shopify покажет scopes, которые запрашивает Tajo, и вернёт вас в Tajo, когда вы их одобрите.
3. Для чего нужен каждый scope и что Tajo записывает обратно в Shopify, описано в статье [о разрешениях Shopify](https://tajo.io/ru/resources/help/integrations/shopify-permissions-explained/).

## Шаг 2: что приложение Tajo для Shopify отправляет в Brevo

Приложение проверяет каждый вебхук Shopify, сохраняет его, ставит в очередь и сразу обрабатывает. Темы клиентов и товаров сначала ждут около четырёх секунд. Пакетного окна нет. Неудачное задание повторяется с нарастающей задержкой (backoff).

### Темы вебхуков

Приложение Tajo для Shopify подписывается на такие темы вебхуков Shopify:

| Темы вебхуков | Назначение |
| --- | --- |
| `customers/create`, `customers/update`, `customers/delete` | Поддерживают контакты Brevo в актуальном состоянии |
| `orders/create`, `orders/updated`, `orders/fulfilled`, `orders/cancelled` | События заказов и метрики заказов для Brevo |
| `orders/paid`, `refunds/create` | Начисление и списание баллов лояльности |
| `checkouts/create`, `checkouts/update` | Возврат брошенных оформлений заказа в Brevo |
| `products/create`, `products/update`, `products/delete` | Поддерживают каталог товаров в Brevo в актуальном состоянии |
| `inventory_levels/update` | Поддерживает остатки товаров в Brevo в актуальном состоянии |
| `collections/create`, `collections/update`, `collections/delete` | Поддерживают коллекции в актуальном состоянии |
| `companies/*`, `company_contacts/*`, `company_locations/*` (create, update, delete) | Синхронизация B2B-компаний |
| `app/uninstalled`, `app/scopes_update`, `app_subscriptions/update` | Жизненный цикл приложения |

Обязательные вебхуки Shopify о конфиденциальности (запрос данных клиента, удаление данных клиента, удаление данных магазина) тоже обрабатываются. Приложение не подписывается на `carts/*`. Брошенные корзины приходят из тем `checkouts/*`.

Что попадает в Brevo:

| Событие Shopify | В Brevo |
| --- | --- |
| Клиент создан или обновлён | Контакт создаётся или обновляется с именем, email и согласием на маркетинг. На платных тарифах приложение добавляет теги, число заказов, сумму покупок и последний заказ. |
| Клиент удалён | Контакт отписывается, а не удаляется |
| Заказ создан, обновлён, оплачен, выполнен или отменён | Заказ через API заказов Brevo, а также события `order_paid`, `order_completed` и `order_cancelled` |
| Создан возврат | Событие `order_refunded`. Если вы ведёте программу лояльности Brevo через Tajo, баллы списываются пропорционально. |
| Заказ оплачен, при наличии программы лояльности Brevo | Баллы начисляются по вашей ставке баллов за доллар |
| Оформление заказа создано или обновлено, с email и товарами | События `cart_updated` и `cart_abandoned`. Когда отправлять сообщение, решает ваша автоматизация в Brevo. |
| Товар или коллекция созданы, обновлены или удалены | Каталог товаров и категории Brevo |
| Обновлён уровень запасов | Остаток товара в каталоге Brevo. Когда остаток варианта меняется с 0 на больше 0, каждый покупатель, который попросил уведомить его, получает событие `back_in_stock`, один раз на каждое пополнение. |

Приложение не добавляет кнопку «Notify me» в вашу тему. Запрос на уведомление о поступлении должен приходить с вашей витрины, например с кнопки, которую вы добавите.

### Существующие данные

При установке приложение импортирует существующих клиентов как контакты Brevo. Полная историческая синхронизация запускается со страницы синхронизации в приложении. На платных тарифах она также импортирует товары, коллекции, компании и заказы.

## Шаг 3: создайте правило синхронизации с помощью агента

Правило синхронизации представляет собой декларативное определение одной синхронизации: исходный ресурс, действие в Brevo, сопоставление полей и фильтр. Вы не пишете его вручную. Вы его описываете, агент строит, а человек одобряет.

1. В Tajo откройте **Agents** и опишите **Brevo Integration Architect** нужную синхронизацию обычным языком. Например: «Отправляй в Brevo как контакты тех клиентов Shopify, которые согласились на email-маркетинг».
2. Агент изучает коннектор Shopify. Его выборка возвращает названия и типы полей, но никогда не возвращает значения данных клиентов.
3. Он предлагает правило с сопоставлением полей и фильтром, затем проверяет сопоставление полей на соответствие действию Brevo и выполняет пробный прогон черновика. Ни один из этих шагов не читает записи клиентов.
4. Он сохраняет правило как черновик. Можно также начать с шаблона в разделе **Connections > Syncs and mappings > New sync from template**.
5. **Request publish approval** запускает предварительный просмотр на данных вашего магазина. Он читает не более 10 записей, ничего не записывает в Brevo и не сдвигает курсор. Он фиксирует только счётчики: полученные записи, подходящие, сопоставленные и отклонённые фильтром, а также ошибки сопоставления. Если предварительный просмотр завершается ошибкой, запрос на одобрение не создаётся.
6. Человек одобряет запрос на странице **Approvals** с письменным обоснованием. Одобрение привязано к дайджесту SHA-256 правила и истекает через 30 минут. После этого на странице правила появляется кнопка **Publish approved version**.

Редактирование опубликованного правила возвращает его в черновик. Прежде чем снова запуститься, оно опять проходит предварительный просмотр и одобрение.

### Реальное правило

Так Tajo определяет шаблон **Shopify customers -> Brevo contacts**:

```ts
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)",
```

Фильтр и есть проверка согласия. Оба значения Tajo выводит из поля Shopify `email_marketing_consent.state` или из более старого флага `accepts_marketing`. Правило, которое записывает контакты в Brevo, нельзя опубликовать без этого фильтра. Другой шаблон Shopify, **Shopify orders → Brevo orders**, фиксирует в Brevo заказы покупателей, которые согласились на маркетинг при оформлении заказа.

### Когда выполняется правило

- Правила синхронизации контактов по умолчанию запускаются каждые 15 минут. Каждый запуск начинается с курсора правила.
- На странице активного правила есть кнопка **Test run (1 batch)**.
- Активное опубликованное правило **Shopify orders → Brevo orders** тоже запускается каждые 15 минут. Первый запуск по расписанию начинается за несколько минут до этого момента и не отправляет более ранние заказы. Каждый следующий запуск отправляет заказы, обновлённые после предыдущего.
- Прошлые заказы попадают в Brevo, только когда вы запускаете правило сами: кнопкой **Test run (1 batch)** или попросив агента **Sync Operator** его запустить.
- По расписанию правило для заказов запускается, только если в нём стоит фильтр согласия покупателя на маркетинг из шаблона. Правило с отредактированным фильтром выполняется, только когда вы сами его запускаете.
- После пяти неудачных запусков подряд правило само приостанавливается, а на его странице отображается последняя ошибка. Устраните причину и опубликуйте правило снова.

Каждый запуск отображается в истории запусков правила с числом прочитанных, записанных и ошибочных записей, а также с длительностью.

## Что коннектор Shopify читает и записывает

Правила синхронизации записывают только в получатель, в данном случае в Brevo. В Shopify они никогда не записывают.

Приложение Tajo для Shopify запрашивает 12 scopes и выполняет короткий список записей в Shopify, например отзыв согласия и теги лояльности. В статье [о разрешениях Shopify](https://tajo.io/ru/resources/help/integrations/shopify-permissions-explained/) перечислены все scopes и все записи, а также то, что их запускает.

Агенты и MCP-хосты обращаются к магазину через коннектор Shopify:

| Чтение | Запись |
| --- | --- |
| Данные магазина, клиенты (список и поиск), заказы, товары, метаполя клиентов, уровни запасов, статус массовой выгрузки | Метаполя и теги клиентов, а также запуск массовой выгрузки. Каждая запись оформляется как предложение и выполняется только после одобрения. |

Коннектор также объявляет корректировку запасов. Для неё нужен scope `write_inventory`, который приложение Tajo для Shopify не запрашивает.

## Шаг 4: используйте инструменты Shopify через MCP

Tajo предоставляет коннектор Shopify как MCP-сервер по адресу `https://alto.tajo.io/mcp/connectors/shopify`. Добавьте его в Claude Code:

```bash
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopify
```

Хост находит OAuth-сервер Tajo и открывает вход в Tajo. Доступ есть только у аккаунтов раннего доступа. Сервер предоставляет 12 инструментов:

| Инструмент | Что он делает |
| --- | --- |
| `preview_tajo_shopify_app` | Интерактивный предварительный просмотр приложения Tajo для Shopify в виде MCP UI |
| `get_shop` | Данные магазина |
| `search_customers` | Поиск клиентов с синтаксисом запросов Shopify, например `tag:tajo-vip` или `total_spent:>100` |
| `list_customers` | Список клиентов с постраничной выдачей |
| `list_orders` | Список заказов с постраничной выдачей |
| `list_products` | Список товаров с вариантами, изображениями и запасами |
| `get_customer_metafields` | Чтение метаполей клиента |
| `get_inventory_levels` | Чтение запасов варианта по всем локациям |
| `poll_bulk_export` | Проверка массовой выгрузки и получение ссылки на скачивание после её завершения |
| `calculate_rewards_profile` | Расчёт уровня, баллов и баланса вознаграждений клиента по синхронизированным торговым данным |
| `shopify_propose` | Оформление одной записи в Shopify как предложения. Ничего не отправляется. |
| `shopify_apply` | Выполнение одобренного предложения |

## Устранение неполадок

- Контакты не появляются в Brevo: см. [контакты не появляются в Brevo](https://tajo.io/ru/resources/help/troubleshooting/contacts-missing-in-brevo/).
- Правило не запускается или само приостановилось: см. [данные не синхронизируются](https://tajo.io/ru/resources/help/troubleshooting/data-not-syncing/).

## Дальнейшие шаги

- [Как устроена синхронизация данных](https://tajo.io/ru/resources/help/getting-started/understanding-data-sync/), как ведут себя правила синхронизации
- [Разрешения Shopify](https://tajo.io/ru/resources/help/integrations/shopify-permissions-explained/), каждый scope и каждая запись
- [Shopify + Brevo](https://tajo.io/ru/docs/integrations/shopify-brevo), руководство по интеграции
- [Свяжитесь с командой](https://tajo.io/ru/contact), чтобы вас подключили
