Modules · Ecommerce website

You sell the ring at four. The website can't still be selling it at five.

Most stores have plenty of every product. You have one. That single fact is why a jewelry storefront can't be a nightly copy of your stock, and why this one reads the same product record your counter does, in the same second.

No sync job, no CSV Stripe checkout included
maisonlumiere.com/solitaire-070
Yellow gold solitaire ring set with a round brilliant diamond
Maison Lumière
Solitaire ring · 0.70 ct
18k yellow gold, GIA certificate included
$ 4,200
Sold
One of a kind, and this piece has found its owner
Sold at the Antwerp counter · 16:04
Storefront updated 16:04, nobody touched the website
Why jewelry is the hard case

A sync job that runs every fifteen minutes is fifteen minutes of double-selling.

Bolt a general ecommerce platform onto your stock and you get two databases that agree most of the time. For a shop with forty of a t-shirt, most of the time is fine. For a shop with one of a ring, the gap between them is the exact window where the same piece gets sold twice: once at the counter, once online, and someone gets an apology email and a refund.

Then gold moves and the website is quoting last week's price on a piece you'd now charge more for. The problem isn't the sync. It's having something to sync.

No exportNo plugin to keep aliveOne record
Stock system → platformTwo copies
16:04Sold in store · stock now 0
16:09Website still shows 1 available, order placed
16:15Sync runs. Too late, you owe someone a refund.
Gem Logic storefrontOne record
16:04Sold in store · stock now 0
16:04Website reads the same record. Marked sold.
There's no interval, because there's nothing to reconcile.
One record, two audiences

The product page is a view of the product, not a copy of it.

Everything a shopper needs is already on the piece: the photos you shot when it came in, the description, the metal and stone details, the price, the certificate. Publishing is deciding which of those the public sees, not typing them a second time.

Product · RG-4200Published
Solitaire ring thumbnail
Solitaire ring thumbnail
Solitaire ring thumbnail
3 photos
All three appear in the gallery, in this order
Public titleSolitaire ring · 0.70 ct
Retail price$ 4,200
Cost price$ 2,480 Never public
LocationAntwerp · safe 2 Never public
CertificateGIA 2185… · shown as a badge
Margin, supplier and location stay inside. You choose per field, once.
Add a piece, it appears

New stock lands on the site as soon as you mark it publishable. No second listing step, no waiting for an overnight run.

Reprice once

Change a price in Gem Logic, or let metal price sync change it for you, and the storefront is quoting the new one immediately.

Sold is sold, either direction

An online order takes the piece off the shop floor. A counter sale takes it off the website. Neither one needs to know about the other.

Make it yours

It should look like your shopfront, not like a platform.

A logo, an accent colour, a headline typeface and your own navigation, set once, applied everywhere. Add the pages a jeweler actually needs: your story, bespoke commissions, repairs, opening hours for the two shops.

Your marque, your colour: the same logo and accent already on your invoices and catalogs, so a customer who saw the PDF recognises the site.
Navigation you write: put Bespoke before Collection if that's what you'd rather sell. The menu isn't fixed by a theme.
Pages beyond the shop: thirty-five years of history is a reason to buy from you. Give it a page instead of a paragraph in the footer.

Want it done for you? Our e-commerce build service designs the whole storefront around your brand.

Brand settings Saved
Logo
Accent colour
#8D6A2B
Headline typeface
Aa
Serif
Aa
Display
Aa
Sans
Navigation
CollectionBespokeRepairsOur story+ Add page
Four decisions. No theme editor to get lost in.
Checkout, and what comes after

An online order is just a sale that happened without you.

Customers browse, save favourites to a wishlist, and pay through Stripe. What arrives on your side isn't a notification to act on, it's a sale, in the same list as everything sold over the counter, with the customer already in your CRM.

maisonlumiere.com/cart
Your cart3 items
Solitaire ring in the cart
Solitaire ring · 0.70 ct
Qty 1, only one exists
$ 4,200
Pearl drop earrings in the cart
Pearl drop earrings
Qty 1
$ 890
Emerald pendant in the cart
Emerald pendant
Qty 1
$ 1,210
Subtotal$ 6,300
Checkout with Stripe
Cards, Bancontact, iDEAL, Apple Pay
Sales · todayAll channels
Online
Claire Devos · 3 pieces
Paid via Stripe · 14:22 · awaiting shipment
$ 6,300
Counter
Walk-in · 1 piece
Card · 13:05 · Antwerp
$ 1,020
Counter
M. Peeters · repair collected
Cash · 11:40 · Ghent
$ 145
One list. Your day's takings include the website without you reconciling anything.
Wishlists that tell you something

A shopper saving three rings and returning twice is a lead. It's visible on the contact, not stuck in an analytics dashboard.

No second dashboard

Nothing to log into each morning to check whether an order came in overnight. It's already in the sales list.

Reach more customers

One piece, described properly in every language you sell in.

Not translated menus over English product copy. The descriptions themselves live in each language on the piece, so a Dutch customer reads Dutch and a French one reads French, and both versions are indexed.

NLmaisonlumiere.com/nl
Diamond ring shown on the Dutch storefront
Diamanten ring

Tijdloze elegantie in 18k geelgoud, met GIA-certificaat.

$ 2,890
FRmaisonlumiere.com/fr
Diamond ring shown on the French storefront
Bague diamant

Élégance intemporelle en or jaune 18 carats, certificat GIA.

$ 2,890
ENmaisonlumiere.com/en
Diamond ring shown on the English storefront
Diamond ring

Timeless elegance in 18k yellow gold, GIA certified.

$ 2,890
Same piece · three languages · one stock count

Sold once and it's gone from all three. Clean URLs, per-language meta descriptions and hreflang tags come as part of it, so someone searching in Dutch can find you at all.

hreflangSitemapPer-language meta
Stores already running one

Three storefronts. Three completely different businesses.

A family store in Leuven, a 150-year-old multi-brand house in Liège, and a buy-and-sell specialist in Nice. Same stock system underneath, and none of them looks like it.

Screenshot of the Juwelen Vander Avort storefront homepage
Visit vanderavort.be →Dutch, French and English
Juwelen Vander Avort
Leuven, Belgium · 35 years in trade · first year online

A family store that had been selling in one room since 1990. They moved their operations onto Gem Logic first; the storefront came afterwards, and it came fast, because the products and photos were already sitting there.

Their site carries the full collection with their own branding, and reads in the three languages their customers actually walk in speaking.

Having our website integrated directly with Gem Logic means we never worry about inventory mismatches. When a product sells online, it's immediately reflected in our store system.

Portrait of Maxime Vander Avort
Maxime Vander Avort
Juwelen Vander Avort
Piron Joailliers
Liège, Belgium · founded 1875

A multi-brand house carrying Pomellato, Vhernier, Pasquale Bruni and ten others alongside its own atelier creations, plus a pre-owned floor where every single piece is genuinely one of one.

Brand pages, category filters, wishlists and a French storefront, all reading the same stock as the counter on Rue des Dominicains.

13 designer brandsPre-ownedWishlist
Bijouterie Héritage
Nice, France · buys as much as it sells

Their stock is almost entirely second-hand signed pieces, each expertised and restored in the Nice atelier. Nothing repeats, which is the hardest possible case for a storefront, and the reason it can't be a synced copy.

The site also runs the buy side: gold purchase and valuation enquiries arrive as contacts, not as inbox mail.

One-of-one stockBuy-back enquiriesBespoke

How long after a counter sale does your website find out?

Book a demo and we'll sell a piece in front of you, then refresh the storefront. It's a short demo.

image_overlay