Openship order routing
Shop, channel, product-match, order, and fulfillment coordination from source you control.
Openship connects the places where orders originate with the places that fulfill them. A shop is an order source. A channel is a fulfillment destination. Links connect shops to channels, and matches map a shop item to a channel item before an order is placed downstream.
The repository contains shop-to-channel routing and Shopify/Openfront adapters.
Architecture and data
Openship uses the same Next.js, Keystone, GraphQL, Prisma and PostgreSQL application base as Openfront. Its active graph is smaller and routing-specific: users/roles/API keys, shop and channel platforms, shops and channels, orders/line/cart items, shop/channel items, matches, links and tracking details. Ownership is directly User-scoped; there is no organization or workspace tenant graph.
Provider-specific behavior belongs behind shop and channel platform handlers. Openship stores its routing and match state; connected commerce or fulfillment platforms remain authoritative for their own products, orders and tracking records.
Main workflow
- Configure a shop platform and shop with scoped credentials.
- Configure a channel platform and fulfillment channel.
- Link the shop to the channel.
- Search both product catalogs and create a match.
- Import or select a shop order.
- Convert matched lines into channel purchases.
- record tracking, cancellation, fulfillment or error state from the channel boundary.
Idempotency, signature verification, credential isolation, retries and reconciliation need to be proved for each adapter.
Routing at a glance
Shops
A Shop is one user-owned order source. Its ShopPlatform selects product, order, update, and webhook handlers. The shop holds connection-specific identity and credentials.
See Shops for the current adapter and credential limitations.
Channels
A Channel is one user-owned fulfillment destination. Its ChannelPlatform selects catalog, purchase, cancellation, webhook, and tracking handlers. Creating a Channel row does not establish a working provider connection.
See Channels for compiled adapters, custom execution, and reconciliation requirements.
Links
A Link connects one owned shop to one owned channel and supplies the routing relationship used for order work.
Matches
A Match maps one exact shop product/variant to one exact channel product/variant. Routing uses that mapping to decide which destination item can fulfill a source line. Operators can replace a match without changing the source catalog, but historical order/purchase identities should not drift when the current mapping changes.
Shops
Configure order sources and their platform handlers.
Channels
Configure fulfillment destinations and tracking behavior.
Product matching
Map shop products and variants to channel items.
GraphQL API
Inspect the generated contract for your exact source revision.
Openfront relationship
Openfront products can be shop sources for Openship, but Openship is not the Openfront storefront or payment system. It coordinates order routing across independently operated systems.