← Documentation

How-to · Updated October 5, 2026

Show 3D jewelry models on Shopify product pages

Jewel Shots turns your CAD files into interactive 3D viewers that show your metals, stones and finish. This guide links your models to Shopify products, publishes them, and puts the viewer on your product pages. A short test follows each step, so you can confirm it worked before moving on.

How it works

  1. Upload and set up a model. Upload a 3DM, OBJ or GLB file to My Jewel Shots, then set its metals, stones, finish and background in the editor.
  2. Choose products. Pick the Shopify products to work with, and choose a model for each one, by hand or by matching SKUs.
  3. Publish. Ring Facet adds one interactive 3D model item to each product's media in Shopify. Your product images and videos stay as they are.
  4. Show it. The Jewel Shots viewer takes the 3D item's place in your product gallery, sits in a theme block, or appears wherever you paste the embed code. Shoppers turn the ring and switch between the metals and stones you offer.

The viewer reads the model's settings each time a product page loads. A colour, finish or background change you save in the editor shows on your product pages without publishing again.

Before you start

  • The Ring Facet app is installed on your Shopify store, and the store is connected to your workspace. Check under Account → Store & domain. The Shopify product 3D panel in My Jewel Shots only appears once a connected store is found.
  • At least one model is uploaded to My Jewel Shots.
  • Your plan has room. Each product with a published model counts as one live embed, alongside your embed codes. See Plans and limits.

Set up each model

Open a model from My Jewel Shots in the editor. Everything below is saved with the model, and every place it is shown uses the same settings: embed codes, your Shopify product gallery and the 3D viewer block.

Metals and stones shoppers can switch between

  1. Next to Metal or Stone, click Edit colours.
  2. Add up to 4 metals and 4 stones. A metal starts from Yellow, Rose or White, adjusted with Whiteness and Darkness, or is any colour you pick. A stone comes from 16 presets, such as White Diamond, Fancy Pink or Sapphire Blue, or any colour.
  3. Name each colour. The name is what a shopper sees when they hover over its swatch.
  4. In the Metal and Stone rows, select the colour the viewer should open in.

With two or more colours of a kind, shoppers get a switch for it. With only one, no switch is shown, which suits a model you sell in one metal.

Many models? Use these colours on all models, at the bottom of the colours dialog, gives every model the same colours. Each model keeps its selected colour if that colour is in the new set, and opens in the first one otherwise. New uploads start with the colours of the last model you saved.

Background

Choose White, Transparent (your page shows through behind the ring) or any colour. Transparent works well in a product gallery, where the theme's own background then shows.

Finish, parts and pieces

  • Finish: slide from Polished through Brushed to Matte.
  • Parts: each part is detected as metal or stone; correct any that are wrong, or hide one. A Customizable part follows the shopper's switches. A Fixed part keeps its own colour, which is how two-tone metal and mixed stones are set up.
  • Select pieces to remove: click stray pieces such as reference planes or sizers to drop them. This can be undone.

Click Save. The next time a product page with this model loads, it shows the change.

An embed code made before October 5, 2026 keeps the colours and background it was made with until its model is next saved in the editor. After that it follows the model like everything else.

Build your product list

In My Jewel Shots, the Shopify product 3D panel lists the products you have picked, plus every product that already has a published model. It never loads your whole catalogue, so a store with thousands of products opens just as fast.

Select products

  1. Click Select products.
  2. Search by title or SKU. The last word you type matches the start of a word, so halo finds “Halo Solitaire” and SKU HALO-100. Results come 50 at a time; use Load more for more.
  3. Tick the products you want and click Add to list. Products already in your list show as ticked.

Your list is saved with your workspace. To drop a product you have not published, click the × on its row.

Auto-match by SKU

Auto-match SKUs reads your store once, when you click it, and adds every product whose handle or a variant SKU matches a model's file name, with that model already chosen. Letter case, punctuation and the .glb extension are ignored. The match uses the file name you uploaded, not a name you gave the model afterwards in My Jewel Shots.

Model fileMatchesDoes not match
HALO-100.glbSKU HALO-100, SKU halo_100, handle halo-100SKU HALO-100-YG (extra characters)
Oval Solitaire.glbhandle oval-solitaire, SKU OVALSOLITAIREhandle oval-solitaire-ring

If your SKUs carry a metal suffix such as -YG, rename the model files to match, or pick those products with Select products.

In the Shopify admin

The Ring Facet app in your Shopify admin has a Jewel Shots page with the same matching and publishing. It lists your store's products with a search box. Any match you make there also appears on ringfacet.com, and the reverse.

Publish to Shopify

  1. Choose a model for each product in its dropdown. The row's status changes to Ready.
  2. Click Publish matched. Products are published one at a time, each with its own status as it goes.
  3. A new 3D model shows Processing while Shopify prepares it, which usually takes about a minute.

What Shopify receives: one 3D model item in the product's media, with alt text starting Jewel Shots interactive 3D. Publishing again replaces that item, so a product never carries more than one. Your images and videos are not touched.

  • Change a product's model: choose another model, then click Publish matched.
  • Take the 3D off a product: choose No Jewel Shots model, then click Publish matched.
  • Updated the model file? Its rows show Ready again. Click Publish matched so Shopify's copy is replaced too.
  • Deleting a model in My Jewel Shots also takes it off every product it was published to.

Test: is the product published?

In the Shopify admin, open the product and look under Media. You should see a 3D model whose alt text starts with Jewel Shots interactive 3D. The row in My Jewel Shots should read Published.

Show the viewer on product pages

There are three ways, and they work independently. Use one or combine them.

Product gallery3D viewer blockCustom Liquid embed code
Where it showsIn place of the product's 3D item in your galleryWherever you put the block on the product pageWherever you paste the code
Set up inTheme editor → App embedsTheme editor → Add block → AppsTheme editor → Custom Liquid
Products without a modelUnchangedNothing shownNothing shown
If the viewer cannot loadYour theme's own 3D item staysThe block hides itselfThe code hides itself

1. Product gallery

  1. In the Shopify product 3D panel, click Turn on in the gallery. In the Ring Facet app, the button is Turn on in the product gallery. Either opens your theme editor with Jewel Shots gallery already switched on.
  2. Click Save in the theme editor.

To do it by hand: Online Store → Themes → Customize → App embeds, switch on Jewel Shots gallery, then click Save.

On product pages, the embed finds the product's Jewel Shots 3D item in your gallery. Once the Jewel Shots viewer has loaded, it swaps in at exactly the same size. If the viewer cannot load, your theme's 3D item stays, so shoppers never see an empty slot. With the embed off, the gallery shows Shopify's own 3D viewer, which has no metal and stone switches.

2. 3D viewer block

  1. Click Add a 3D viewer block in the panel, or Add a 3D viewer to the product page in the Ring Facet app. Your theme editor opens with the block added to the product section.
  2. Drag it where you want it, then click Save.

To do it by hand: Customize → open a product template → Add block → Apps → Jewel Shots 3D viewer.

The block has two settings. Shape can be Square, Portrait (4:5), Landscape (4:3) or Wide (16:9), and Corner radius runs from 0 to 24 px. On products without a published model it shows nothing; in the theme editor, a placeholder marks where it sits.

3. Custom Liquid embed code

This works in any theme that offers a Custom Liquid section or block. You can also use it for a placement the 3D viewer block cannot reach.

  1. In the panel, click Copy embed code.
  2. Theme editor → product template → Add section (or Add block) → Custom Liquid.
  3. Paste the code and click Save.

The copied code looks like this. One copy serves every product, because Shopify fills in {{ product.id }} for each page:

{%- for media in product.media -%}{%- if media.media_type == 'model' and media.alt contains 'Jewel Shots interactive 3D' -%}
<div data-jewel-3d style="position:relative;width:100%;aspect-ratio:1/1">
  <iframe src="https://ringfacet.com/embed.html?shop={{ shop.permanent_domain }}&product={{ product.id }}&autoplay=1" title="Interactive 3D product view" loading="lazy" allow="fullscreen" style="position:absolute;inset:0;width:100%;height:100%;border:0"></iframe>
</div>
<script>addEventListener('message',function(e){var d=e.data||{};if(e.origin!=='https://ringfacet.com'||d.type!=='ringfacet:jewel-viewer'||d.status!=='error')return;document.querySelectorAll('[data-jewel-3d] iframe').forEach(function(f){if(f.contentWindow===e.source)f.parentNode.style.display='none';});});</script>
{%- break -%}{%- endif -%}{%- endfor -%}

It only renders on products with a Jewel Shots 3D item, and the short script hides it if the viewer reports an error. To change the shape, edit aspect-ratio:1/1. For example, 4/5 is portrait and 16/9 is wide.

Test it

These checks take a minute each. Run them in order the first time. Replace YOUR-STORE, HANDLE and PRODUCT_ID with your own values.

1. Find a product's ID

Open the product in the Shopify admin. The number at the end of the address is its ID, for example …/products/8123456789. You can also open this in your browser and look for "id":

https://YOUR-STORE.myshopify.com/products/HANDLE.js

2. Check what the viewer receives

Open this address in your browser. It is the same request the viewer makes:

https://ringfacet.com/api/jewel-product?shop=YOUR-STORE.myshopify.com&product=PRODUCT_ID&site=YOUR-STORE.myshopify.com
  • Working: you see the model's file name, and under config its metals, gems and bg (background). The first metal and stone are the ones the viewer opens in.
  • No Jewel Shots model is mapped to this product. The product is not published, the ID is wrong, or the store is not the one connected to your workspace.
  • This embed is not authorized on this website. The site value is not one of your domains. See Where the viewer runs.

3. Try one product on any page

Before changing your product template, paste this into a Custom Liquid section on any page of your store, such as a test page. Swap in a real product ID:

<div style="max-width:480px;aspect-ratio:1/1">
  <iframe src="https://ringfacet.com/embed.html?shop={{ shop.permanent_domain }}&product=PRODUCT_ID&autoplay=1"
          title="3D viewer test" style="width:100%;height:100%;border:0"></iframe>
</div>

You should see the ring turning, with switches for each kind that has two or more colours. Remove the section when you are done.

4. Is the gallery viewer live? (browser console)

On a product page, open your browser's developer tools (Console tab) and run:

[...document.querySelectorAll('[data-ring-facet-jewel]')].map(el => el.dataset.ringFacetJewel)
  • ["ready"]: the Jewel Shots viewer has replaced the gallery item.
  • ["loading"]: the viewer is still loading. It loads when its slide is close to the screen, so scroll to it and run the check again.
  • ["failed"]: the viewer reported a problem and your theme's own item was put back. Run test 2.
  • []: the gallery embed found no Jewel Shots item on this page. Either the Jewel Shots gallery embed is off, the product is not published, or the slot is hidden or very small (thumbnails are skipped).

5. Watch a viewer report in (browser console)

Run this, then scroll a 3D viewer into view:

addEventListener('message', e => {
  if (e.origin === 'https://ringfacet.com' && e.data?.type === 'ringfacet:jewel-viewer') {
    console.log('Jewel Shots viewer:', e.data.status);
  }
});

It logs ready once the model has loaded, or error if it could not load. A viewer that had already loaded before you ran this will not report again.

Where the viewer runs

A product viewer only loads on your own sites:

  • your workspace's website domain, set under Account → Store & domain;
  • your Shopify store's own domain and its myshopify.com address;
  • subdomains of those, such as www.;
  • your workspace's test domain, for 14 days. Set it under Account → Store & domain → Test domain. For Shopify theme preview links, enter shopifypreview.com.

Anywhere else, the viewer shows “This product viewer is unavailable.”, and the gallery keeps your theme's own 3D item. Product viewers on Shopify never show a Ring Facet mark, on any plan.

Plans and limits

FreeStarterPro
Models530Unlimited
Live embeds (product viewers and embed codes together)130Unlimited
  • Each product with a published model counts as one live embed. Replacing a product's model does not use another.
  • Up to 4 metals and 4 stones per model.
  • Models larger than 100 MB cannot be published to Shopify.

See Jewel Shots pricing.

Troubleshooting

What you seeLikely causeWhat to do
The panel says to connect and claim a Shopify storeThe store is not connected to this workspace, or the app was uninstalledInstall the Ring Facet app, then connect the store under Account → Store & domain.
A product is missing from the listThe list only holds products you picked or publishedUse Select products or Auto-match SKUs.
Auto-match finds nothingNo handle or SKU equals a model's file nameCompare them using the rules in Auto-match by SKU, or pick products by hand.
Plan limit when publishingYour live embeds are used upRemove a product viewer or embed code, or upgrade.
Nothing changes in the galleryThe gallery embed is off, the product is not published, or your theme marks its gallery differentlyRun test 4. If it shows [] with the embed on and the product published, use the 3D viewer block or the embed code.
“This product viewer is unavailable.”The page is not on one of your domains, or the product has no published modelRun test 2. For a theme preview link, add shopifypreview.com as your test domain.
No metal or stone switchThe model has only one colour of that kindAdd colours with Edit colours in the editor and save.
Colours or background are not what you setThe model was not saved, or an older embed code still uses its own settingsSave the model in the editor and reload the page.
Status stays ProcessingShopify has not finished preparing the 3D modelClick Refresh after a minute, and check the product's media in the Shopify admin.

3D product viewer for Shopify · From CAD file to 3D viewer · Jewel Shots overview

Put the guide into practice.