Four shapes of store. One engine.

A marketplace, a wholesale catalogue, a plain shop and a group of storefronts are not four products here. They are records you create in one GoCommerce database — vendors, price lists, channels — and a store that never creates them pays nothing for their existence.

Pick the shape you are building

B2B commerce

  • Customer groups
  • Price lists
  • Quantity breaks
  • Scoped API keys

core/pricing.go, core/api_keys.go

Explore B2B

Direct-to-consumer

  • The default store
  • Cash on delivery built in
  • Manual fulfillment built in
  • Svelte Commerce in front

core/checkout.go, core/orders.go

Explore D2C

What each one adds

Every row is a capability in the engine today, checkable in the file named. What is not there is named too.

The four solutions compared
AspectMarketplaceB2BDirect-to-consumerMulti-store
Records you createVendors, offersCustomer groups, price listsProducts, nothing elseChannels
Who sets the priceEach vendor, per offerA price list, per group and quantityYou, per variantA price list, per channel
Who holds the stockEach offerYour locationsYour locationsYour locations, published per channel
Moderationpending → approved → suspended———
Machine buyers—Scoped API keys——
Known edgeCommission recorded, not settledNo quotes or approvals workflowStorefront is a separate projectChannels scope publishing and price, not orders
Sourcecore/vendors.gocore/pricing.gocore/checkout.gocore/channels.go

The storefront half

Svelte Commerce

A server-rendered SvelteKit storefront that runs against 26 commerce backends — arialshop.com is it in production, on one of them. Its GoCommerce connector is early, at 0.1.0: catalogue, cart, checkout and order lookup, not customer accounts or a search index.

Explore Svelte Commerce

Anything that speaks HTTP

GoCommerce holds no templates. Any client can drive its 342 operations — a Next.js site, a native app, a coding agent over MCP. The admin uses the same contract.

Headless, on the home page

Or none, to start

The one-command stack gives you the API and the admin on port 80. Load a catalogue, place a test order from the API docs, and choose a storefront after the backend has earned it.

Start on your own server

FAQ

Questions about solutions

Are these four separate products or editions?

No. They are four ways of configuring one engine. A marketplace, a B2B catalogue and a plain direct-to-consumer store run the same GoCommerce binary against the same PostgreSQL; what differs is which records you create — vendors, customer groups and price lists, or channels — and none of them costs anything to leave unused.

Can one store be more than one of these?

Yes. A B2B price list can be limited to one channel, a vendor can list offers on a store that also sells its own goods, and a direct-to-consumer store can add a second channel later. The primitives compose because they are rows in one database, not plugins with their own state.

Is the depth here the same as a dedicated platform’s?

Not yet, and each page says where the edge is. Marketplace commission is recorded per vendor but not settled; the storefront half of every solution depends on a client you choose. Read the page for the shape you need before committing.

Which page should I read first?

The one matching the store you are building. If you do not know yet, direct-to-consumer is the default and the other three add to it rather than replace it.

Start with the default, add the rest when a real order asks

Every solution above is a configuration of the same engine you can run in one command.

Chat on WhatsApp