Standard apps from the Shopify App Store rarely cover the specifics of medium and large businesses. When deep customization is needed—bypassing standard API limits, custom checkout logic, or integration with legacy systems—you have to write your own app. And it's crucial to choose the right type: public, private, or embedded.
A properly designed custom app pays off in 2–3 months thanks to zero Shopify commissions (up to 15%) and optimized business processes. For example, automatic order sync with 1C reduces processing time by 80%, and custom discounts via Shopify Functions increase the average order value by 12%. If you're considering such a solution, contact us—we'll evaluate your task in one day.
How to Choose the Right Shopify App Type for Your Tasks
| Criterion | Public App | Custom App | Embedded App |
|---|---|---|---|
| Availability | App Store, any store | Single store (by token) | Shopify admin via iframe |
| Moderation | Required | Not required | Not required |
| Shopify commission | 15% on subscriptions | 0% | 0% |
| Customization | Limited by policies | Full freedom | Full freedom |
| Examples | Accounting, analytics | 1C integration, loyalty system | Order management panel |
Custom App is the optimal choice for enterprise automation: no commission, full control over functionality, ability to work with any APIs. With proper architecture, custom app performance is 30–50% higher than public counterparts due to optimized queries and no unnecessary abstractions. Additionally, you save up to 70% on transaction costs by avoiding App Store commissions.
Official Shopify documentation confirms: for confidential data and non-standard business logic, Custom App is preferable.
When Does a Custom App Justify the Cost?
Typical scenarios: real-time order sync with 1C, custom discount logic (Shopify Functions), checkout extension for Plus stores, supplier portal. If standard Shopify functionality doesn't solve the problem—a custom app fills the gap. This is especially relevant for companies with monthly turnover of several million rubles, where even small savings on commissions offset development costs in 2–3 months.
For example, one of our clients—an electronics retail chain—automated stock export to 1C. Previously, managers manually cross-checked data, taking 4 hours daily. After implementing a Custom App, the process reduced to 10 minutes, and sync errors completely disappeared. Development costs paid off in 2.5 months.
What Technologies Do We Use?
Core stack: Node.js (Express/Nest.js), React + Polaris, PostgreSQL, Redis, Docker. For queues—BullMQ, for webhooks—built-in Shopify handlers.
Development process:
- Analysis—study business processes, API limits, security requirements.
- Design—architecture, app type selection, OAuth schema, database.
- Implementation—backend on Express, frontend on React+Polaris, webhooks.
- Integration—connection to 1C, CRM, telephony via REST/SOAP.
- Testing—load testing, Shopify guidelines compliance, automated tests.
- Deployment—on Railway, Fly.io, or own VPS with CI/CD monitoring.
Example OAuth flow and GraphQL API usage:
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 and background processing:
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); } }] }); Heavy tasks are offloaded to BullMQ queues—ensuring processing even under load spikes (up to 1000 orders per hour).
UI with 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="Order Management"> <Layout> <Layout.Section> <Card> <DataTable columnContentTypes={['text','text','numeric']} headings={['Order','Status','Total']} rows={orders.map(o => [o.name, o.financial_status, o.total_price])} /> </Card> </Layout.Section> </Layout> </Page> ); } What's Included in Custom Shopify App Development
- Application source code (git repository)
- API documentation and OAuth scheme
- Access to Shopify Admin and test store
- Employee training (2–3 hours)
- 30 days of support and bug fixing after delivery
- Help with App Store publication (if needed)
Estimated Timelines
| Complexity | Example functionality | Timeline |
|---|---|---|
| Basic | CRUD, Polaris UI, OAuth | 1–2 weeks |
| Medium | Webhooks, 1C integration, queues | 3–5 weeks |
| High | Shopify Functions, Checkout UI, multi-store | 2–3 months |
Pricing is calculated individually—depends on the number of integration points and business logic complexity. Get a preliminary estimate in 1 day: contact us, discuss your project, and we'll propose the optimal solution. We guarantee transparency and adherence to deadlines.
Order a consultation—we'll analyze your business processes and show how a custom app can reduce costs and speed up operations.







