Стандартные приложения из Shopify App Store редко покрывают специфику среднего и крупного бизнеса. Когда нужна глубокая кастомизация — обход стандартных лимитов API, нестандартная логика чекаута или синхронизация с legacy-системами — приходится писать своё приложение. И здесь важно правильно выбрать тип приложения: публичное, приватное или встраиваемое.
Правильно спроектированное кастомное приложение окупается за 2–3 месяца за счёт отсутствия комиссии Shopify (до 15%) и оптимизации бизнес-процессов. Например, автоматическая синхронизация заказов с 1С сокращает время обработки на 80%, а кастомные скидки через Shopify Functions увеличивают средний чек на 12%. Если вы задумались о таком решении, свяжитесь с нами — оценим задачу за один день.
Как выбрать тип Shopify App под ваши задачи?
| Критерий | Public App | Custom App | Embedded App |
|---|---|---|---|
| Доступность | App Store, любые магазины | Один магазин (по токену) | Админка Shopify через iframe |
| Модерация | Требуется | Не требуется | Не требуется |
| Комиссия Shopify | 15% с подписок | 0% | 0% |
| Кастомизация | Ограничена политиками | Полная свобода | Полная свобода |
| Примеры | Учёт, аналитика | Интеграция с 1С, бонусная система | Панель управления заказами |
Custom App — оптимальный выбор для корпоративной автоматизации: нет комиссии, полный контроль над функционалом, возможность работы с любыми API. При правильной архитектуре производительность Custom App на 30–50% выше, чем у публичных аналогов, за счёт оптимизированных запросов и отсутствия лишних абстракций. Кроме того, вы экономите до 70% на транзакционных издержках, избегая комиссии App Store.
Официальная документация Shopify подтверждает: для конфиденциальных данных и нестандартной бизнес-логики предпочтительнее использовать Custom App.
Когда кастомное приложение оправдывает затраты?
Типичные сценарии: синхронизация заказов с 1С в реальном времени, кастомная логика расчёта скидок (Shopify Functions), расширение чекаута для Plus-магазинов, создание личного кабинета поставщика. Если стандартный функционал Shopify не решает задачу — кастомное приложение закрывает пробел. Особенно это актуально для компаний с оборотом от нескольких миллионов рублей в месяц, где даже небольшая экономия на комиссиях окупает разработку за 2–3 месяца.
Например, один из наших клиентов — сеть магазинов электроники — автоматизировал выгрузку остатков в 1С. Раньше менеджеры вручную сверяли данные, что занимало 4 часа в день. После внедрения Custom App процесс сократился до 10 минут, а ошибки синхронизации исчезли полностью. Затраты на разработку окупились за 2,5 месяца.
Какие технологии мы используем?
Основной стек: Node.js (Express/Nest.js), React + Polaris, PostgreSQL, Redis, Docker. Для очередей — BullMQ, для вебхуков — встроенные обработчики Shopify.
Процесс разработки:
- Анализ — изучаем бизнес-процессы, API-лимиты, требования к безопасности.
- Проектирование — архитектура, выбор типа приложения, схема OAuth, база данных.
- Реализация — backend на Express, frontend на React+Polaris, webhooks.
- Интеграция — подключение к 1С, CRM, телефонии через REST/SOAP.
- Тестирование — нагрузочное, на соответствие Shopify guidelines, автотесты.
- Деплой — на Railway, Fly.io или собственный VPS + мониторинг CI/CD.
Пример реализации OAuth flow и работы с GraphQL API:
import { shopifyApp } from '@shopify/shopify-app-express'; import { PostgreSQLSessionStorage } from '@shopify/shopify-app-session-storage-postgresql'; const shopify = shopifyApp({ api: { apiKey: process.env.SHOPIFY_API_KEY, apiSecretKey: process.env.SHOPIFY_API_SECRET, scopes: ['read_products', 'write_products', 'read_orders', 'write_orders'], hostName: process.env.HOST.replace(/https?:\/\//, ''), apiVersion: ApiVersion.Latest, }, auth: { path: '/api/auth', callbackPath: '/api/auth/callback' }, webhooks: { path: '/api/webhooks' }, sessionStorage: new PostgreSQLSessionStorage(process.env.DATABASE_URL), }); app.get(shopify.config.auth.path, shopify.auth.begin()); app.get(shopify.config.auth.callbackPath, shopify.auth.callback(), shopify.redirectToShopifyOrAppRoot()); const client = new shopify.api.clients.Graphql({ session }); const response = await client.query({ data: `{ orders(first: 50, query: "financial_status:paid") { edges { node { id name totalPriceSet { shopMoney { amount } } lineItems { edges { node { title quantity } } } } } pageInfo { hasNextPage endCursor } } }` }); Webhooks и фоновая обработка:
shopify.webhooks.addHandlers({ ORDERS_PAID: [{ deliveryMethod: DeliveryMethod.Http, callbackUrl: '/api/webhooks/orders-paid', callback: async (topic, shop, body, webhookId) => { const order = JSON.parse(body); await syncOrderToERP(shop, order); } }] }); Тяжёлые задачи выносим в очередь BullMQ — гарантируем обработку даже при всплесках нагрузки (до 1000 заказов в час).
UI на Polaris:
import { Page, Layout, Card, DataTable, Button } from '@shopify/polaris'; import { useAppBridge } from '@shopify/app-bridge-react'; export default function Dashboard() { const app = useAppBridge(); return ( <Page title="Управление заказами"> <Layout> <Layout.Section> <Card> <DataTable columnContentTypes={['text','text','numeric']} headings={['Заказ','Статус','Сумма']} rows={orders.map(o => [o.name, o.financial_status, o.total_price])} /> </Card> </Layout.Section> </Layout> </Page> ); } Что входит в разработку кастомного Shopify App
- Исходный код приложения (git-репозиторий)
- Документация API и схема OAuth
- Доступ к Shopify Admin и тестовому магазину
- Обучение сотрудников (2–3 часа)
- Поддержка и исправление ошибок 30 дней после сдачи
- Помощь в публикации в App Store (если нужно)
Сроки ориентировочно
| Сложность | Пример функционала | Срок |
|---|---|---|
| Базовая | CRUD, Polaris UI, OAuth | 1–2 недели |
| Средняя | Webhooks, интеграция с 1С, очереди | 3–5 недель |
| Высокая | Shopify Functions, Checkout UI, мультимагазинность | 2–3 месяца |
Стоимость рассчитывается индивидуально — зависит от количества точек интеграции и сложности бизнес-логики. Получите предварительную оценку за 1 день: свяжитесь с нами, обсудим ваш проект и предложим оптимальное решение. Мы гарантируем прозрачность и соблюдение сроков.
Закажите консультацию — мы проанализируем ваши бизнес-процессы и покажем, как кастомное приложение может снизить издержки и ускорить операции.







