Three branded microstores on one storefront: a swim club fundraiser, a staff store and a high-school team store, each at its own /store address
Multi-store commerce

Microstores: many small shops, one storefront

Team stores, staff stores and fundraisers on one storefront. How microstores keep each shop’s products and prices apart, and the bugs we hit on the way.

DesignMint Commerce · Oct 14, 2026 · 4 min read
Shipped
Sep 22, 2026
Address
/store/{slug} on one storefront
Publish
5 credits a store

A lot of a decorator’s best business comes from small groups that order again and again. The Riverside High athletics team needs a shop where parents can order hoodies. A local company wants a staff store for uniforms. The swim club runs a fundraiser every spring. Each group wants its own logo, its own products already decorated, its own prices and a link they can share. And none of it should ever show up in the decorator’s main shop.

That’s what microstores are. Each one is a small branded shop, and they all run on the same DesignMint Commerce storefront, each at its own address, like /store/riverside-high-athletics.

The DesignMint storefront home page with a Shop Now banner and a category grid
The main storefront. Its home page is built with the page editor in the admin.
Product page for the Recycled Transit Bag with colour, size, print location and quantity options
A product page. The print location and technique come from the product’s decoration settings, and the quantity range follows the supplier’s minimums.

Why one storefront for many shops

Running every shop on one storefront keeps life simple: one design to look after, one checkout, one place to fix a bug. The hard part is making sure each shop only ever shows its own products.

The obvious approach, and why we didn’t take it

The quick way is to tag every product with a store name and filter on that tag. It works until someone writes a new query and forgets the filter. Then the team’s custom hoodies, at the team’s price, appear in your main shop for everyone to see.

So we used sales channels instead. A sales channel is a list of products a storefront is allowed to see. Every microstore gets its own channel, created before the store itself; if the store fails to save, the channel is removed too, so nothing is left half-built.

When you add a product to a store, DesignMint Commerce makes a decorated copy of the blank product that exists only on that store’s channel. The original blank stays in your main catalogue. Your main shop can only see the main channel, so a store product can’t leak into it, even if a filter is forgotten somewhere.

Sales channel
Main
Your main catalogue
  • HoodieNo decorationBlank
  • TeeNo decorationBlank
Your main shop sees
  • Main channel
  • Any store’s channel
Not visible to the main shop
Sales channel
Riverside High Athletics
/store/riverside-high-athletics
  • HoodieTeam logoDecorated copy
Sales channel
Swim club fundraiser
/store/swim-club
  • TeeClub logoDecorated copy
Blanks stay on the main channel and each store’s decorated copies live on its own channel, which your main shop can’t see.

The idea worth borrowing: keep things apart by structure, not by remembering to filter. Structure doesn’t forget.

Prices that don’t creep up

Store prices are always worked out from the original blank, never from the store’s copy. Otherwise, every time someone opened and saved a product, the markup would be added on top of the last markup, and prices would slowly climb.

The formula is easy to follow: blank cost times your markup, plus the decoration charge, plus a 50-cent print-on-demand fee. For example, a $12 blank with a 1.8× markup and a $4 decoration charge comes to $26.10. The admin then suggests a friendlier price ending in .49, .95 or .99, like $26.49, and never goes below the formula’s price.

  1. Blank cost$12.00The original blank, not the copy
  2. Markup× 1.8$12.00 × 1.8 = $21.60
  3. Decoration charge$4.00
  4. Print-on-demand fee$0.50
  5. Formula price$26.10The suggestion never goes lower
The admin suggests a friendlier priceends in .49 · .95 · .99

Below the formula price: never suggested

$25.99 would read nicer, but it is below the $26.10 formula price, so the admin never offers it.

Bugs we hit, and what they taught us

  • Two buttons, one product. Autosave and the Continue button could both create the same product at the same moment, and the second one failed with “a product with this handle already exists”. Each store now takes a lock while it adds products, so only one can run at a time.
  • Ghosts of deleted stores. Deleting a store and creating a new one with the same name left the old copies behind, with clashing names. They’re now cleaned up when the new store is set up, and the System Health page checks for leftovers.
  • A cookie that remembered too much. An early version remembered your last store for 30 days, so visiting the main site could drop you into a team shop. Now the web address is the only thing that decides which shop you’re in.
  • $0.00 in Australia. Shoppers browsing in Australian dollars saw store products at $0.00, because store prices only existed in US dollars. Store products are now priced in the store’s own currency region.

What we learned

  • Separation should be built in, not remembered.
  • Calculate prices from the source, never from a copy.
  • When two parts of an app can do the same thing at once, assume they will.

Common questions

What is a microstore?

A small branded online shop for one group, such as a team, a company or a fundraiser, with its own logo, decorated products and prices, running inside your DesignMint Commerce storefront at its own address.

Will store products show up in my main shop?

No. Each store has its own sales channel, and your main shop can only see the main channel.

What does it cost to publish a store?

Publishing a store uses 5 credits from your wallet.

Filed under Multi-store commerceAll case studies
Case studies

Want it running
in your shop?

Book a call and we will walk through Stitch, lookbooks, mockups and microstores on your own products.