Build your first app
Create a new OpenShop project, run it locally, and verify the generated app works.
OpenShop is a Shopify integration framework for building apps that need background jobs, provider credentials, scheduled work, app proxy endpoints, Shopify Admin GraphQL calls, and an embedded admin UI.
Use OpenShop when you want the application code to own the integration logic while the framework handles the repetitive operational surface: OAuth installs, stored shop access, provider configuration, flow runs, step checkpoints, logs, migrations, and workers.
An OpenShop app usually contains:
Build your first app
Create a new OpenShop project, run it locally, and verify the generated app works.
Define a provider
Add a typed connector with config fields, validation, and a health check.
Define a flow
Create a checkpointed background job that calls Shopify and a provider.
Deploy to production
Build the app, apply committed migrations, and run web and worker processes.
Understand the architecture
See how Shopify, the web process, workers, PostgreSQL, and providers interact.
Operate and troubleshoot
Monitor runs, search logs, recover failures, and keep production healthy.
import { defineOpenShop, defineProvider } from 'openshop'
const warehouse = defineProvider({ name: 'warehouse', ui: { fields: { apiUrl: { type: 'text', label: 'API URL' }, apiKey: { type: 'password', label: 'API key' }, }, }, methods: { async push(config, rows: unknown[]) { await fetch(`${config.apiUrl}/orders`, { method: 'POST', headers: { Authorization: `Bearer ${config.apiKey}` }, body: JSON.stringify(rows), }) }, },})
const app = defineOpenShop({ providers: { warehouse },})
const syncOrders = app.defineFlow({ name: 'syncOrders', async run({ step, connectors }) { const orders = await step('fetch-orders', async () => []) await step('push-orders', async () => connectors.warehouse.push(orders)) },})
export default app.defineConfig({ flows: { syncOrders }, crons: [{ schedule: '*/5 * * * *', flow: 'syncOrders', shops: 'all' }],})Tutorials teach a complete first success path. Guides solve one task. Reference pages list exact APIs, options, defaults, constraints, and failure modes. Start with Architecture for the runtime model, then use the Admin API and Public SDK references when integrating OpenShop into application code.