What is Openship?
Understand Openship's user-owned shop-to-channel routing boundary.
Openship is an operator order router. It connects a shop, where an order originates, to a channel, where matched items are purchased for fulfillment. It stores routing, match, purchase-reference, and tracking state; connected systems remain authoritative for their own catalog, inventory, customer order, funds, and shipment facts.
Current compiled adapters cover Shopify and Openfront only. Other commerce, marketplace, warehouse, 3PL, email, or spreadsheet systems require separate adapter source and verification. Openship is not a customer storefront, payment processor, warehouse system, or shipping carrier.
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.
Controlled flow
The intended path is shop order -> line match -> channel cart item -> downstream purchase -> authenticated tracking/cancellation -> source update. Custom GraphQL operations handle product/order search, matching, cart construction, purchase placement/cancellation, and webhooks. Each step needs same-user ownership, adapter allowlisting, idempotency, signed callback verification, durable error evidence, and reconciliation.
Current source has no onboarding seed. Initialize the first user at /dashboard/init, then configure synthetic platforms, one shop, one channel, a link, and matches manually. Do not connect production credentials until the exact adapter passes cross-user, credential-read, egress, duplicate-purchase, partial-failure, cancellation, tracking, and restore tests.