Simplio3D Tutorials

Step-by-step guides to help you create stunning 3D product configurators, set up materials, manage assets, integrate with e-commerce platforms, and more.

How to Use These Tutorials

Use the sidebar to navigate between topics, or use the search box to look across the full content of every tutorial — not just the titles. Each tutorial is structured with clear steps, tips, and recommendations. We suggest starting with the Assets section if you're new, then moving on to Materials and Projects.

AssetsMaterialsProjectsIntegrationsRequests

Recommended Learning Path

1

Upload Assets

Start by uploading your 3D models, textures, and graphics.

2

Create Materials

Build PBR materials and organise them into categories.

3

Create a Project

Set up a Viewer, Configurator, or Modular project.

4

Configure Options

Add option blocks, conditional logic, and pricing.

5

Share & Embed

Generate share links and embed on your website.

6

Integrate

Connect with WooCommerce, Shopify, or use the API.

Video Tutorials

5:30

Getting Started with Simplio3D

A complete overview of the platform: upload assets, create materials, and publish your first configurator.

8:15

Building a Product Configurator

Step-by-step walkthrough creating a chair configurator with material options and pricing.

6:45

Modular Project Deep Dive

Learn the drag-and-drop module system: snap points, alignment, rotation, and mirroring.

7:20

Conditional Logic Masterclass

Advanced rules with AND/OR conditions, cascading selections, and dynamic pricing.

4:50

E-Commerce Integration

Connect your configurator to WooCommerce or Shopify in under 5 minutes.

6:10

Headless API & SDK

Build a fully custom 3D experience using the REST API and JavaScript SDK.

Quick Links

API Documentation

Full REST API reference for headless integration.

SDK Documentation

JavaScript SDK for embedding 3D viewers and configurators.

WooCommerce Guide

Step-by-step WooCommerce plugin installation.

Shopify Guide

Step-by-step Shopify app integration.

Uploading 3D Models

Learn how to upload, organise, and manage your 3D model assets in Simplio3D. Understanding file limits and best practices will ensure your configurators load fast and look great.

Supported Formats

FormatExtensionRecommended ForNotes
glTF Binary.glbMost use casesPreferred format. Compact, includes textures.
glTF.gltf + .binMulti-file assetsRequires uploading associated .bin and texture files.
FBX.fbxCAD / animation exportsWidely supported by 3D tools; converted internally.
OBJ.obj + .mtlSimple geometryLegacy format; no animation support.
STL.stl3D printing modelsGeometry only, no materials or colours.
Best format: We strongly recommend .glb (glTF Binary) for the best balance of quality, file size, and compatibility. Export from Blender, 3ds Max, or any major 3D tool.

File Limits & Recommendations

LimitValueRecommendation
Maximum file size100 MBKeep models under 20 MB for fast loading.
Maximum polygonsNo hard limitTarget 50k-200k polygons for web. Use decimation for CAD models.
Texture resolutionUp to 4096x4096Use 1024x1024 or 2048x2048 for best balance.
AnimationsSupported in glTF/FBXKeep animation clips short and purposeful.

How to Upload

  1. 1Navigate to the Dashboard and click "Assets" in the sidebar.
  2. 2Click the "Upload" button in the top-right corner of the Assets page.
  3. 3Select one or more 3D model files from your computer. You can drag-and-drop files directly into the upload area.
  4. 4Wait for the upload and processing to complete. A thumbnail preview will be generated automatically.
  5. 5Once uploaded, you can rename the asset, add tags, and assign it to a category.

Organising with Categories

Categories help you organise large asset libraries. You can create categories like "Furniture", "Hardware", "Accessories", etc.

  1. 1Go to the Assets page and click the "Categories" tab or the folder icon.
  2. 2Click "New Category" and give it a descriptive name.
  3. 3Drag assets into categories, or select an asset and choose its category from the details panel.
  4. 4Use the category filter in the asset browser to quickly find models when building projects.

Upload Workflow

Prepare ModelApply transforms, clean geometry
Export as .glbInclude materials & textures
Upload to AssetsDrag & drop or click Upload
CategoriseAssign to a category
Use in ProjectLoad from asset browser

Optimisation Tips

Reduce Polygon Count

Use Blender's Decimate modifier or simplify meshes in your 3D tool before exporting. Target 50k-200k polygons for web.

Compress Textures

Use JPEG for diffuse maps and PNG for transparency. Avoid uncompressed TGA or BMP formats.

Clean Geometry

Remove hidden faces, internal geometry, and duplicate vertices. Apply transforms (location, rotation, scale) before export.

Proper Naming

Name your mesh objects descriptively (e.g., 'chair_seat', 'chair_leg'). These names appear in the Objects panel.

Common issue: If your model appears too small or too large, make sure you've applied scale transforms in your 3D software before exporting. In Blender, use Ctrl+A > Scale.
Model versions: When you upload a new model with the same filename as an existing one, Simplio3D automatically creates a version chain (v1, v2, v3…). You can then replace older versions in your projects while preserving all option block configurations. See for the full guide.
Modular projects: When preparing models for the Modular project type, ensure each module has its origin point set correctly. The origin determines where the module snaps and connects with others. See the for details.

Uploading Textures

Textures are image files used to define the surface appearance of your 3D materials. Simplio3D supports PBR (Physically Based Rendering) texture workflows with both user-uploaded textures and a built-in free texture library.

Supported Formats

FormatBest ForNotes
JPEG / JPGDiffuse, roughness, AO mapsLossy compression; small files. Best general-purpose format.
PNGNormal maps, transparencyLossless; larger file sizes. Required when transparency is needed.
BMPLegacy sourcesUncompressed; large files. Accepted but not recommended.

Texture Types in PBR Workflow

Texture MapPurposeFormat Tip
Albedo / Diffuse (Base Color)Defines the base colour of the surface.Use JPEG for solid colours, PNG if transparency is needed.
Normal MapAdds surface detail without extra geometry.Always use PNG to avoid compression artefacts.
Roughness MapControls how rough or glossy a surface appears.Greyscale image; white = rough, black = smooth.
Metallic / Metalness MapDefines which parts are metallic.Greyscale; white = metal, black = non-metal.
Ambient Occlusion (AO)Adds subtle shadowing in crevices and contact areas.Greyscale image, typically baked from 3D software.

File Limits & Compression

LimitValue
Maximum file size per texture50 MB
Auto-compression thresholdFiles over 3 MB are automatically compressed to JPEG (quality 0.85)
Maximum resolution after compression2048 × 2048 pixels
Recommended resolution1024 × 1024 or 2048 × 2048 pixels
Aspect ratioSquare (1:1) recommended; power-of-two dimensions (512, 1024, 2048) for best performance

How to Upload Textures

  1. 1Navigate to Dashboard > Assets.
  2. 2Switch to the "Textures" tab using the filter or tab selector.
  3. 3Click "Upload" to open the texture upload dialog.
  4. 4Drag and drop your texture files into the drop zone, or click to browse. You can upload multiple files at once.
  5. 5Files are processed sequentially — watch the progress indicator for total/completed/failed counts.
  6. 6After upload, each texture gets a thumbnail preview and is stored in your texture library.
  7. 7Assign textures to a category for easy organisation and retrieval.
Auto-classification: Simplio3D automatically classifies textures by filename. Use suffixes like _color, _normal, _roughness, _metallic, _ao in your filenames so the system knows which PBR slot each texture belongs to.

Texture Library (Free PBR & Non-PBR Textures)

Simplio3D includes a built-in texture library with 60+ free PBR texture sets and a non-PBR image search powered by Pixabay. Access the library from Dashboard > Assets > Textures > "Texture Library" button, or directly from the Material Editor.

PBR Textures Tab

Curated, high-quality PBR texture sets from CC0-licensed sources (ambientCG, Poly Haven, CGBookcase). Each set includes diffuse, normal, roughness, AO, and metallic maps where applicable.

CategoryExamples
WoodOak Planks, Walnut Veneer, Pine Board, Bamboo, Weathered Barn Wood
MetalBrushed Aluminium, Rusted Steel, Diamond Plate, Copper Patina, Galvanised Steel
FabricDenim Twill, Canvas, Velvet, Wool Knit, Silk Satin
StoneRough Granite, Limestone, Slate, Sandstone, Red Rock
ConcretePoured Concrete, Board-Formed, Cracked, Exposed Aggregate
BrickRed Brick Wall, White Brick, Herringbone, Dark Clinker
TilesSubway Tile, Hexagon Mosaic, Terracotta, Penny Round
MarbleCarrara White, Nero Marquina, Green Marble, Pink Onyx
GroundForest Floor, Dry Sand, Gravel Path, Grass Lawn
LeatherFull-Grain Brown, Black Patent, Suede Tan, Crocodile Embossed
PlasterSmooth White, Venetian, Rough Stucco, Tadelakt
MiscCork Board, Cardboard, Chainmail, Woven Rattan

Each PBR texture set can be imported at three resolutions: 1K (~2–4 MB), 2K (~6–12 MB), or 4K (~20–40 MB). You can mark favourites and view recently used textures for quick access.

Non-PBR Textures Tab

Search for any image on Pixabay (24 results per page). Non-PBR textures are single images (no PBR map sets) — useful for decals, patterns, or simple colour references. These are downloaded through a server proxy and imported as standard texture assets.

Importing from the Texture Library

  1. 1Open the Texture Library dialog (from Assets or Material Editor).
  2. 2Browse categories or search by name. Use the Favourites/Recent tabs for quick access.
  3. 3Select one or more texture sets (PBR) or images (Non-PBR).
  4. 4Choose the resolution (1K, 2K, or 4K) for PBR textures.
  5. 5Click "Import". The textures are downloaded from their CDN source and added to your asset library.
  6. 6If importing from the Material Editor, PBR maps are automatically assigned to the correct slots (diffuse, normal, roughness, AO, metallic).

Categories & Organisation

Textures can be organised into custom categories (e.g., "Wood Textures", "Metal Textures", "Fabric Textures"). Categories are shared across the Assets page and can be filtered when assigning textures to materials. Use a consistent naming pattern like [material]_[maptype] (e.g., walnut_diffuse.jpg, walnut_normal.png) for easy identification.

Uploading Graphics

Graphics are 2D images and SVG files used in Pattern Designer and Design Canvas option blocks. They can include logos, patterns, decals, and artwork that users apply onto 3D surfaces.

Supported Formats

FormatUse CaseNotes
SVGLogos, patterns, vector artScalable; colour channels can be read and recoloured.
PNGPhotos, detailed graphicsSupports transparency. Best for raster graphics.
JPEG / JPGPhotos, printsNo transparency. Good for photographic decals.
WebPGeneral purposeModern format, excellent compression.

File Limits

LimitValue
Maximum file size10 MB per graphic
Recommended resolution (raster)1024x1024 to 2048x2048 pixels
SVG complexityKeep under 500 paths for best performance

How to Upload

  1. 1Navigate to Dashboard > Assets.
  2. 2Switch to the "Graphics" tab.
  3. 3Click "Upload" and select your image or SVG files.
  4. 4After upload, assign a name and category to each graphic.
  5. 5Graphics will become available in the Pattern Designer and Design Canvas option blocks.

Uploading SVG Files

SVG files are especially powerful in Simplio3D because the platform can read individual colour channels from the SVG, allowing end users to recolour specific parts of the design.

  1. 1Prepare your SVG in a vector editor (Illustrator, Figma, Inkscape). Use distinct fill colours for parts you want to be independently recolourable.
  2. 2Upload the SVG file via the Assets > Graphics tab.
  3. 3When the SVG is used in a Pattern Designer or Design Canvas option block, Simplio3D automatically detects the colour channels (distinct fill colours in the SVG).
  4. 4Each detected colour channel becomes a configurable option — users can change individual colours at runtime.
SVG colour channels: For example, if your logo SVG has a red fill (#FF0000) for the icon and a black fill (#000000) for the text, Simplio3D will detect two colour channels. Users can then independently change the icon colour and text colour in the configurator.

Using Graphics in Option Blocks

Pattern Designer

Apply repeating patterns onto 3D surfaces. Supports SVG and raster images with adjustable scale, rotation, and offset.

Design Canvas

Place graphics freely on a 3D surface. Users can position, scale, and rotate decals, logos, or artwork.

Categories

Organise graphics into categories such as "Logos", "Patterns", "Decals", "Icons", etc. When creating option blocks, you can filter by category to quickly find the right graphic.

3D Model Versions

Simplio3D automatically tracks versions when you upload updated 3D models with the same filename. This lets you iterate on designs without losing previous versions, and seamlessly update models already in use within your projects.

Upload Modele.g. custom_shoe.glb
Upload UpdateSame name → v2
Version Taggedv1, v2 assigned
Replace in ProjectSwap model, keep options
Preview & ShareUpdated everywhere

How Automatic Versioning Works

When you upload a 3D model file that has the same base name (ignoring case and extension) as an existing asset, Simplio3D automatically creates a version chain:

  1. 1Upload your first model file (e.g. "custom_shoe.glb"). It is stored normally — no version tag yet.
  2. 2Later, upload an updated model with the same name ("custom_shoe.glb"). Simplio3D detects the name match.
  3. 3The original model is retroactively tagged as "v1". The new upload is tagged as "v2".
  4. 4Each subsequent upload with the same name increments the version: v3, v4, and so on.
  5. 5Version tags appear as badges on the asset thumbnail in both grid and list views.
Name matching: Version detection compares base filenames (without the extension) in a case-insensitive manner. So Custom_Shoe.glb, custom_shoe.glb, and custom_shoe.fbx are all considered the same asset and will form a version chain.

Managing Version Tags

Version tags (e.g. "v1", "v2") are informational labels that help you identify which iteration of a model you're looking at. You can remove a version tag if you prefer a cleaner view.

  1. 1Navigate to Dashboard > Assets and locate the versioned model.
  2. 2In grid view, hover over the version badge on the thumbnail to reveal the × (remove) button.
  3. 3In list view, the version badge appears next to the asset name with the same × button.
  4. 4Click × to remove the version tag. The tag is removed from the UI, but the version history is preserved internally.
Tip: Removing a version tag does not delete the asset or affect its version history. It simply hides the tag from the UI. The version number is still tracked internally for replacement matching.

Replacing a Model Version in a Project

When you've iterated on a 3D model and uploaded a new version, you can replace the older version in any project that uses it. The replacement preserves all option block references, materials, and configurations.

  1. 1Open your project in the Project Editor.
  2. 2Click the "Asset Browser" button to open the asset library dialog.
  3. 3Browse or search for the updated model. Versioned assets show their version badge (e.g. "v2").
  4. 4Select the new version and click "Load". The system detects that a model with the same base name is already in the scene.
  5. 5A confirmation dialog appears explaining that the existing model will be replaced. Click "Yes, replace" to continue.
  6. 6The new model data replaces the old one while keeping the same internal model ID. All option blocks, material assignments, and transform references are preserved.
  7. 7After loading, the system compares 3D part names between the old and new model. You'll see a success or warning toast.

Part Name Matching

When a model is replaced, Simplio3D checks whether the 3D part names (mesh names) in the new model match those referenced by your option blocks. This ensures your configurator options continue to work correctly.

All Parts Match

If all part names referenced by option blocks exist in the new model, everything works seamlessly. A success toast confirms the replacement.

Some Parts Missing

If some part names have been renamed or removed in the new model, a warning toast lists the affected parts. You'll need to update those option blocks manually.

Important: When preparing an updated 3D model, try to keep the same mesh/part names for objects that are referenced by option blocks (e.g. "seat_cushion", "frame_left"). If you rename parts, the corresponding option blocks will need to be reconfigured to target the new names.

What Gets Preserved During Replacement

ItemPreserved?Details
Model ID in sceneYesThe internal model identifier stays the same, so all references remain valid.
Option block referencesYesAll targetObjectId references in option blocks continue to point to the correct model.
Material assignmentsYesMaterials assigned by option blocks are re-applied if the part names match.
Part transforms (saved)ResetCustom part transforms are cleared since the new model may have different geometry.
Deleted parts listResetPreviously deleted parts are cleared to reflect the new model structure.
AnimationsUpdatedAnimation clips from the new model replace the old ones.

Best Practices

Consistent Naming

Keep the same filename when uploading iterations of a model. This ensures automatic version detection and easy replacement.

Keep Part Names Stable

Maintain consistent mesh/part names across versions so option blocks and conditional logic continue to work.

Preview Before Sharing

After replacing a model version, preview the project in Share view to verify all options, materials, and visibility toggles still behave correctly.

Version History

Upload multiple iterations freely. Each version is stored independently in your asset library, so you can always go back to a previous version.

Example Workflow

Updating a Shoe Configurator

You've built a shoe configurator with option blocks for sole material, upper colour, and lace style. The designer sends you an updated model with refined geometry.

  1. 1The designer exports the updated model as "custom_shoe.glb", keeping the same part names (sole, upper, laces, tongue).
  2. 2Upload "custom_shoe.glb" to Dashboard > Assets. It is automatically tagged as "v2". The original becomes "v1".
  3. 3Open the shoe project in the editor and click "Asset Browser".
  4. 4Select "custom_shoe.glb (v2)" and click Load.
  5. 5Confirm the replacement when prompted. The editor swaps the model data.
  6. 6A success toast appears: "Model replaced — all 4 referenced parts found in the new model."
  7. 7Save and preview. All option blocks (sole material, upper colour, lace style) work correctly with the new geometry.
Quick iteration: You can replace a model version as many times as needed during development. Each replacement is instant — there's no need to reconfigure option blocks as long as part names stay consistent.

Creating Materials

Materials define how surfaces look in your 3D scene. Simplio3D uses a PBR (Physically Based Rendering) material system with a three-tab editor, a live 3D preview sphere, and four material presets for quick starting points.

New MaterialName & base preset
Surface TabColour or texture mode
Properties TabMetallic, roughness, reflectivity
Advanced TabTransparency, IOR, emissive
Preview & SaveCheck on 3D sphere

Step-by-Step: Create a New Material

  1. 1Navigate to Dashboard > Materials.
  2. 2Click the "New Material" button.
  3. 3Enter a name for your material (e.g., "Brushed Aluminium", "Oak Wood").
  4. 4Optionally choose a base preset (Flat, Fabric, Metal, or Glossy) to pre-fill sensible property values.
  5. 5Configure the Surface tab: choose between a flat colour or a texture. For textures, click the texture slot to browse your uploaded textures or open the Texture Library directly.
  6. 6Configure the Properties tab: adjust Metallic, Roughness, Specular, and Reflectivity sliders.
  7. 7Configure the Advanced tab if needed: set double sided rendering, transparency mode, IOR (for glass), or emissive glow.
  8. 8Check the live 3D preview sphere — it updates in real time as you change settings.
  9. 9Click "Save" to create the material. It appears in your material library immediately.

Material Editor — Surface Tab

The Surface tab controls the base appearance. Switch between Colour mode (flat colour via the colour picker) and Texture mode (image-based via texture maps).

SettingRange / TypeDescription
ModeColour | TextureSwitch between a flat colour or a texture-based surface.
ColourAny colourThe base surface colour (Colour mode). Overridden when a diffuse texture is applied.
Opacity0 – 100%Surface opacity. 100% = fully opaque, 0% = fully transparent.
Texture (Diffuse)ImageThe main colour/albedo texture map.
Tiling0.1 – 5How many times the texture repeats across the surface. Higher = smaller pattern.
Rotation0 – 360°Rotates the texture around the UV centre.
Bump / Normal ToggleBump | NormalChoose between a bump map (height-based) or a normal map (directional).
Bump / Normal Intensity0 – 2Strength of the surface detail effect. 1 is standard.

Material Editor — Properties Tab

The Properties tab controls the physical characteristics of the material.

PropertyRangeDescription
Metallic0 – 1How metallic the surface is. 0 = dielectric (plastic, wood, fabric), 1 = full metal (steel, gold, chrome).
Roughness0 – 1Surface smoothness. 0 = mirror-like, 1 = fully matte.
Specular0 – 1Intensity of specular highlights. Increase for shinier surfaces.
Reflectivity0 – 1Overall reflectivity of the surface. Controls how much the environment is reflected.
Reflection Strength0 – 1Multiplier for the reflection intensity on top of reflectivity.

Material Editor — Advanced Tab

PropertyRange / TypeDescription
Double SidedOn / OffRender both sides of the geometry. Enable for thin surfaces like curtains or leaves.
Transparency ModeOpaque | TransparentSwitch between opaque and transparent rendering. Use Transparent for glass, water, plastic film.
Index of Refraction (IOR)1.0 – 2.5How much light bends when passing through the material. Glass ≈ 1.5, Water ≈ 1.33, Diamond ≈ 2.42.
Emissive ColourAny colourColour of light emitted by the surface. For LEDs, screens, indicator lights.
Emissive Intensity0 – 2Strength of the emissive glow. 0 = no glow, 2 = very bright.

PBR Texture Map Slots

When in Texture mode, four PBR map slots are available. Assign textures to each slot for realistic surface detail.

SlotPurposeWhat to Upload
Normal MapAdds surface detail (bumps, scratches, weave) without extra geometry.RGB normal map. Use PNG to avoid compression artefacts.
Metallic MapDefines which areas are metallic vs. dielectric.Greyscale image: white = metal, black = non-metal.
Roughness MapVaries glossiness across the surface.Greyscale image: white = rough/matte, black = smooth/glossy.
Ambient Occlusion (AO)Adds subtle shadowing in crevices and contact areas.Greyscale image, typically baked from 3D software.

Material Presets

Four built-in presets pre-fill property values as a starting point:

PresetRoughnessMetallicBest For
Flat1.00Matte surfaces — cardboard, clay, unfinished wood.
Fabric0.80Textiles — cotton, linen, upholstery.
Metal0.31.0Metals — steel, aluminium, gold, chrome.
Glossy0.10Smooth non-metals — lacquer, gloss plastic, varnish.

Organising into Categories

  1. 1In the Materials page, click the "Categories" tab.
  2. 2Create categories like "Metals", "Woods", "Fabrics", "Glass", "Plastics" — pick a colour swatch for each so they're easy to spot.
  3. 3Assign a category from either the per-card Select on the Materials grid OR the category chip in the Material Editor header (next to the status badge). Both routes write to the same field.
  4. 4Need a new category while editing? Open the category chip in the Material Editor and click "Manage categories…" at the bottom — the management dialog opens inline; new categories are available immediately without leaving the editor.
  5. 5Use category filters to quickly find materials when assigning them in project option blocks.
Texture Library shortcut: You can import free PBR textures directly from the Material Editor. Click the texture slot, then "Texture Library" to browse 60+ PBR sets. The imported maps are automatically assigned to the correct slots (diffuse, normal, roughness, AO, metallic).

Material Library

The Material Library provides 90 ready-made PBR material presets across 14 categories. Instead of building materials from scratch, browse the library, preview on a 3D sphere, and import presets into your personal collection in one click.

Using Library Materials

  1. 1Navigate to Dashboard > Materials.
  2. 2Click the "Material Library" button.
  3. 3Browse by category or search by name.
  4. 4Click on a preset to see a live 3D sphere preview showing how the material looks under scene lighting.
  5. 5Click "Use Material" to copy the preset into your personal material library.
  6. 6The imported material is now fully editable — adjust colours, roughness, metallic, swap textures, or tweak advanced settings as needed.

Available Categories (90 Presets)

Brick

Red brick wall, white washed, herringbone, dark clinker

4 presets

Concrete

Poured, board-formed, cracked, exposed aggregate, polished

5 presets

Fabric

Cotton, linen, denim, canvas, velvet, wool, silk, knit

14 presets

Floors

Hardwood, laminate, parquet, vinyl plank

4 presets

Glass

Clear, frosted, tinted, textured, coloured, privacy

8 presets

Marble

Carrara, nero marquina, green, pink onyx

4 presets

Metal

Brushed aluminium, steel, gold, copper, chrome, brass, titanium

14 presets

Plastic

Matte, glossy, translucent, rubber, soft-touch

5 presets

Roofing

Clay tile, slate, asphalt shingle, corrugated metal

4 presets

Stone

Granite, limestone, sandstone, slate

4 presets

Tiles

Subway, hexagon, terracotta, penny round

4 presets

Wood

Oak, walnut, maple, birch, pine, bamboo, cherry, ash

8 presets

Various

Cork, cardboard, paper, leather, woven rattan, ceramic

12 presets
Customisation: Library materials are duplicated into your collection when you import them. You can freely edit the copy without affecting the original preset. This is great for creating variations (e.g., "Brushed Steel - Silver" and "Brushed Steel - Gold").
Lighting matters: Library material previews use the same HDR environment as your project. If a material looks different after import, check your project's lighting settings (Project Settings > Lighting) — the environment map heavily influences how metallic and reflective materials appear.

Applying PBR Textures

PBR textures bring realism to your materials by providing detailed surface information. Apply them from your uploaded assets or import free textures directly from the built-in Texture Library.

Step-by-Step: Apply Textures to a Material

  1. 1Navigate to Dashboard > Materials and select the material you want to edit (or create a new one).
  2. 2In the Material Editor, switch the Surface tab to "Texture" mode.
  3. 3Click the diffuse texture slot to open the texture browser.
  4. 4Choose a texture from your uploaded assets, or click "Texture Library" to browse 60+ free PBR texture sets.
  5. 5If using the Texture Library, select a set, choose a resolution (1K, 2K, or 4K), and click "Import". All PBR maps (diffuse, normal, roughness, AO, metallic) are imported and auto-assigned to the correct slots.
  6. 6If uploading manually, assign each texture to the appropriate PBR slot: Normal Map, Metallic Map, Roughness Map, and AO Map.
  7. 7Adjust the Tiling value (0.1 – 5) to control how many times the texture repeats on the surface. Higher values = smaller pattern.
  8. 8Adjust the Rotation (0 – 360°) if the texture grain or pattern needs to be oriented differently.
  9. 9Set the Bump/Normal toggle and adjust Intensity (0 – 2) for the desired surface depth effect.
  10. 10Preview the material on the live 3D sphere — it updates in real time.
  11. 11Click "Save" to apply all changes.

Texture Map Slots

SlotRequired?What to Upload
Base Colour / DiffuseRecommendedThe main colour texture. Sets the surface colour and pattern.
Normal MapRecommendedAdds fine surface detail (scratches, weave, grain) without extra geometry. Use PNG.
Roughness MapOptionalGreyscale image controlling glossiness variation. White = rough, black = smooth.
Metallic MapOptionalGreyscale image defining metallic vs. dielectric areas. White = metal, black = non-metal.
AO MapOptionalAmbient occlusion for subtle contact shadows in crevices.

Texture Library Integration

The Texture Library is accessible directly from the Material Editor's texture browser. When you import a PBR texture set from the library:

  • All available maps (diffuse, normal, roughness, AO, metallic) are downloaded from their CC0-licensed CDN source.
  • Maps are automatically assigned to the correct PBR slots in the Material Editor.
  • The textures are also added to your asset library for reuse in other materials.
  • Available sources include ambientCG, Poly Haven, and CGBookcase.
Texture tiling: If your texture looks stretched or too large, increase the tiling value (e.g., from 1 to 3). If it looks too repetitive, decrease the value. Power-of-two texture dimensions (512, 1024, 2048) tile most cleanly.
Performance note: Using all texture slots simultaneously increases GPU memory usage and load time. For simpler materials (e.g., a solid-colour plastic), you may only need a base colour with no textures at all. Higher resolution (4K) textures look better but load slower — use 1K or 2K for most production use cases.

Material Examples

Follow these step-by-step recipes to create five common material types. Use these as starting points and adjust to your specific needs.

Cotton Fabric

A soft, matte fabric material suitable for clothing, upholstery, and soft furnishings.

PropertyValueExplanation
Base ColourYour desired colour (e.g., #FFFFFF for white cotton)The fabric colour.
Metalness0Fabrics are never metallic.
Roughness0.85 – 0.95Cotton is quite rough/matte.
Normal MapCotton weave normal mapAdds subtle woven texture detail.
AO MapOptionalAdds depth to weave pattern.
Tip: Set roughness to ~0.9 for everyday cotton, or ~0.7 for a slightly shiny satin-cotton blend. A normal map with a woven pattern is key to making it look realistic.

Stainless Steel

A polished or brushed metallic surface for appliances, hardware, and industrial parts.

PropertyValueExplanation
Base Colour#C8C8C8 (light grey)Metals get their colour from reflections; keep base colour neutral grey.
Metalness1.0Stainless steel is fully metallic.
Roughness0.15 – 0.350.15 for polished, 0.35 for brushed finish.
Normal MapBrushed metal normal map (optional)Adds directional brush strokes for brushed steel.
Environment MapEnabledEssential for realistic metal reflections.
Tip: For a brushed finish, use a directional normal map with fine horizontal or circular lines. For polished/mirror steel, skip the normal map and set roughness to 0.05-0.1.

Wood

A natural wood material suitable for furniture, flooring, and decorative elements.

PropertyValueExplanation
Base ColourUse a wood grain diffuse textureThe texture provides all colour variation and grain pattern.
Metalness0Wood is never metallic.
Roughness0.4 – 0.80.4 for lacquered/varnished, 0.8 for raw/unfinished wood.
Normal MapWood grain normal mapAdds tactile depth to the grain pattern.
AO MapWood AO map (optional)Enhances grain depth.
Tip: The most important texture for wood is the diffuse/albedo map. Pair it with a matching normal map for depth. Set tiling to match the real-world scale of the grain.

Glass

A transparent or semi-transparent material for windows, bottles, lenses, and display cases.

PropertyValueExplanation
Base Colour#FFFFFF (clear) or tinted (e.g., #E8F4E8 for green glass)Tint the base colour for coloured glass.
Metalness0Glass is non-metallic (but highly reflective due to low roughness).
Roughness0.0 – 0.150.0 for crystal clear, 0.15 for slightly frosted.
Opacity0.1 – 0.40.15 for clear glass, 0.4 for frosted/tinted.
Environment MapEnabledEssential for realistic glass reflections.
Tip: For frosted glass, increase roughness to 0.3-0.5 and opacity to 0.4-0.6. For perfectly clear glass, roughness 0.0 and opacity 0.1 gives a subtle, realistic effect.

Aluminium

A lightweight metal common in electronics, automotive, and consumer products. Can range from matte anodised to polished mirror finish.

PropertyValueExplanation
Base Colour#D4D4D4 (silver)Slightly lighter grey than steel. For anodised aluminium, use the anodised colour.
Metalness1.0Aluminium is fully metallic.
Roughness0.2 – 0.50.2 for polished, 0.5 for matte/anodised finish.
Normal MapFine grain or sandblast normal (optional)Adds subtle surface texture for anodised finishes.
Environment MapEnabledNeeded for metallic reflections.
Tip: For anodised aluminium (e.g., Apple products), set the base colour to the anodised colour (Space Grey: #5A5A5E, Silver: #E3E3E8, Gold: #E8D5C4) and roughness to 0.35-0.45. The slight roughness gives that signature soft-matte look.

Bulk-Add Materials by Category

Expose your entire material library as swatches in seconds. The Select Material option block has a second authoring mode — From Category — that auto-populates one swatch per material in a category. Adding a material to the category later makes it appear in the share view on next load, with no editor change required.

When to use it

  • You have a library of 20+ materials (woods, fabrics, metals, …) and don't want to click "Add Material" once per material.
  • The materials all apply to the same set of 3D objects/parts — and you can now pick multiple target objects at once (e.g., every wood option goes on both the main roof and the extra roofs).
  • A flat per-material price works for your pricing model (option b in the design — one fixed amount whenever any material is selected).
  • You expect to add/remove materials from the category over time without re-editing the project.

Step-by-step

  1. 1Open Dashboard → Materials. Create or pick a category (e.g., "Woods") and assign every material that belongs to it.
  2. 2Open your project, switch to Options mode, and add a Select Material option block (or open an existing one).
  3. 3At the top of the block properties panel, switch the Source segmented control from "Manual" to "From Category".
  4. 4Pick the category from the dropdown. The "Live Preview" panel below shows the swatches end users will see, including a live count badge.
  5. 5Pick one or more Target Objects (check the 3D models the materials apply to). Leave none checked to apply to every loaded object. Optionally scope each object to specific mesh parts via the parts list — parts are grouped by object + subgroup, with nested groups shown at any depth. Leave a target’s parts empty to cover every mesh in it.
  6. 6Set Sort Materials By (Name / Newest / Oldest). Hover an object or a part to see the affected meshes outline-highlight in the viewport so you can verify your target across all selected objects.
  7. 7Click Preview to verify the swatch list and 3D application work as expected. The Preview modal renders the synthesized variants identically to the share view.
  8. 8Optional: switch to Pricing mode and add a Price Group / Variable / Price Table / Unique Price block linked to this Select Material block to author per-material pricing.

What changes vs Manual mode

AspectManual modeFrom Category mode
Variant authoringPer variant via Add MaterialAutomatic — one swatch per material in the chosen category
Per-variant pricingPrice Group / Variable / Price TableSame — link a pricing block to this option block in Pricing mode
Per-variant conditional rulesYesNo — target the entire block, 3D objects/parts, or materials instead
Adding materials laterRe-edit the project and click Add MaterialJust assign the material to the category — appears automatically on next share-view load
Per-variant targetEach variant has its own target object/partsOne shared target — supports multiple 3D objects (+ nested subgroups) — for every material in the block

Pricing

Pricing for a category-mode block lives in Pricing mode, exactly like Manual mode. Add a Price Group, Variable (For Options), Price Table axis, or Unique Price block and link it to this Select Material block. The Pricing panel automatically shows one price row per material in the category so you can author per-material prices. The pricing key uses the stable synthesized variant value (auto:{materialId}), so renaming a material in the library does not break the price.

Conditional logic

Other blocks can hide or show a category-mode Select Material block at the block level, and the block's materials can be referenced by 3D Objects / 3D Parts / Materials targeting scopes. Per-variant conditional targeting is unavailable in category mode (runtime variant IDs change with category contents). Switch back to Manual if you need per-variant rules.

Tip — keep the category curated. The block exposes every material in the category to end users. If you have a "Materials" catch-all category, create a dedicated subset (e.g., "Living Room Woods") and point the block at that. You can also reorder the swatches with the Sort Materials By control.
Heads-up — switching modes preserves both sides. Flipping the Source control between Manual and From Category does not delete data. Manual-mode dropdownVariants stay in storage but are ignored while in category mode (and vice-versa). Switching back resurfaces the other mode's authoring.
How it works under the hood. The block stores materialSource: 'category' plusmaterialCategoryId and the shared target — categoryTargetObjectIds (the selected objects) and categoryTargetParts (per-object mesh names). Runtime variants are synthesized asauto:{materialId}; with two or more target objects each variant carries a per-modelselectedTargetParts map so the right meshes get the material in every targeted object. The public share viewer lazy-fetches referenced categories in one batchedGET /share/:projectId/:token/category-materials?ids=cat1,cat2 request on first paint, whileGET /share/:projectId/:token/category-materials/:categoryId remains available for a single category. The initial share payload stays light even for large libraries.

Project Overview

Projects are the core of Simplio3D. Each project is a self-contained 3D experience that can be a simple viewer, a full product configurator, or a modular assembly system.

Project Types

Viewer

A simple 3D model viewer with no configuration options. Perfect for product showcases, portfolios, and interactive displays. Users can rotate, zoom, and pan the model.

  • Interactive 3D viewing
  • Animations support
  • Hotspots & annotations
  • Shareable & embeddable

Configurator

A full product configurator where users can customise options like colours, materials, parts visibility, dimensions, and more. Ideal for CPQ (Configure, Price, Quote) workflows.

  • Option blocks (dropdowns, swatches, etc.)
  • Conditional logic between options
  • Real-time pricing
  • Contact forms & quote requests

Modular

A drag-and-drop modular assembly system where users combine 3D modules to build custom configurations. Supports snap points, alignment, rotation, and mirroring.

  • Drag-and-drop modules onto a grid
  • Snap system with alignment guides
  • Rotate, mirror, move, delete modules
  • Undo/Redo support

Creating a New Project

  1. 1Navigate to Dashboard > Projects.
  2. 2Click "New Project".
  3. 3Choose a project type: Viewer, Configurator, or Modular.
  4. 4Enter a project name and optional description.
  5. 5Click "Create" to open the project editor.
  6. 6Upload or select a 3D model from your assets. For Modular projects, add modules in the Objects panel.
Project type cannot be changed after creation. If you need a different type, create a new project and re-import your models. Choose carefully based on your use case.

Duplicating a Project

On Pro and Enterprise plans — including during your 30-day Pro trial — you can duplicate any of your projects from the Projects dashboard. Hover a project card (or any list row) and click the Copy icon button — a small dialog lets you rename the copy before confirming.

A duplicate is a complete copy of the original — the whole 3D scene (every model, group, nested group, and part), all option blocks and their variants (including hotspots, scenery, and material swatches), the entire pricing setup (price groups, tables, unique-price blocks, variables, and SKUs), the full form with all its fields, animations, conditional logic, and every project setting all carry over. Open the copy and it looks and behaves exactly like the source.

Duplicates reuse the same models, materials, and textures from your library by reference, so there's no extra storage cost or re-upload step. Per-project uploaded models, the AR file, and the thumbnail are copied so the duplicate works independently of the original — even if you later delete the source.

Not carried over: share link & token, WooCommerce / Shopify product links, and saved configurations. These are set up fresh on the duplicate — the original is left untouched.
Duplication is available on Pro and Enterprise (and throughout your Pro trial). It's hidden only once an account is confirmed Starter with no active trial. If the button doesn't appear on a Pro account, reload the page — and if it still doesn't, sign out and back in to refresh your session.

Editor UI & Key Features

The project editor is where you build and configure your 3D experience. This section introduces the main interface elements and key features.

Editor Layout

Project Editor — Layout Overview
← Mode Tabs
Left Panel (Objects / Options / Pricing / Forms)
3D Viewport
Properties Panel

3D Viewport (Centre)

The main 3D canvas where your model is displayed. Rotate (left-click drag), pan (right-click drag or Shift+left-click), and zoom (scroll wheel) to navigate.

Mode Tabs (Top)

Switch between Objects, Options, Pricing, Forms, and Settings modes using the tabs at the top of the editor.

Left Panel

Contextual panel that changes based on the active mode. Shows objects list, option blocks, price blocks, form fields, or settings.

Properties Panel (Right)

Shows detailed properties for the currently selected object, option, or element. Edit transforms, materials, and configurations here.

Key Features

FeatureDescription
Undo / RedoPress Ctrl+Z / Ctrl+Y (or Cmd on Mac). Works for object transforms, option changes, and more.
Transform ControlsSelect an object and use the Move (W), Rotate (E), or Scale (R) gizmos to transform it in 3D space.
Multi-SelectHold Ctrl/Cmd and click multiple objects to select them together. Transform all at once.
Camera ViewsUse preset camera views (Front, Top, Side) from the camera menu for precise positioning.
Grid & SnappingEnable grid overlay and snap-to-grid for precise object placement (especially useful for Modular projects).
Pivot / Origin EditingEdit the pivot point (axis origin) of objects for custom rotation centres. Found in the Objects > Properties panel.
Resizable Left PanelDrag the thin vertical handle on the right edge of the left panel to resize it (200–560 px). Works in every mode — Objects, Options, Pricing, Forms, Animations — for all project types. Double-click the handle to reset to the default width. Your preferred width is remembered across reloads.
Resizable Properties PanelDrag the thin vertical handle on the left edge of the right Properties panel to widen it (240–640 px). Useful for the dense Block Properties, Pricing Block, and Form Field panels where long labels and dropdowns benefit from extra room. Double-click the handle to reset; width persists across reloads. Available on wide displays (≥ 1280 px).
Auto-SaveProjects auto-save periodically. You can also manually save with Ctrl+S.
ScreenshotCapture a screenshot of the current viewport as a thumbnail or for sharing.
Keyboard shortcuts: Learn the key shortcuts (W = Move, E = Rotate, R = Scale, Delete = Delete selected, Ctrl+Z = Undo) to speed up your workflow significantly. Focus either resize handle (left panel's right edge or Properties panel's left edge) and use the arrow keys to nudge its width (Shift + arrow for larger steps), Home / End to jump to min/max, Enter to reset to default.

Objects Mode

Objects mode lets you manage the 3D models in your scene. You can add, position, transform, and configure individual parts of your 3D model.

The Objects Panel

The left panel in Objects mode shows a hierarchical list of all 3D objects (meshes, groups) in your scene. Each row represents a mesh or group that can be selected and configured.

Nested Subgroups

The panel mirrors the full structure of your model, including nested subgroups — groups inside groups, as authored in your 3D tool (for example Roof → Back_roof_part → part_01 / part_02 / part_03). Container rows show a folder icon and can be expanded or collapsed; individual meshes show a box icon. Selecting a subgroup lets you transform every mesh inside it as one unit.

Meshes inside subgroups work everywhere a part can be referenced — Select Material / Fixed Material targets, per-variant visibility, conditional logic, animations, and AR. In each of those pickers, parts are grouped under collapsible subgroup headers with a "select all in this subgroup" checkbox, so you can target a whole subgroup in one click.

Duplicate names: targeting is by mesh name. If two meshes in different subgroups share the same name, selecting one targets both, and the picker shows an amber warning next to the name. Rename one of them in your 3D software for independent control (Blender automatically appends .001, .003, etc. on export, so this is rare).
Subgroup not showing children? If a group row has no expand arrow, the uploaded model doesn't actually contain those child meshes — usually an older, flattened export. Re-upload the model that has the nested groups and the full hierarchy appears.

Available Options

OptionDescription
SelectClick an object name to select it in both the list and 3D viewport. The object will be highlighted.
RenameDouble-click an object name to rename it. Use descriptive names like "seat_cushion" or "left_arm".
VisibilityToggle the eye icon to show or hide an object in the scene. Hidden objects are not rendered.
LockLock an object to prevent accidental selection or transformation.
TransformWith an object selected, use Move (W), Rotate (E), or Scale (R) gizmos. Enter precise values in the Properties panel.
Edit Axis / PivotChange the pivot point (origin) of an object. Affects rotation centre. Choose from presets (centre, bottom, top, etc.) or set custom coordinates.
DeleteRemove an object from the scene. Press Delete key or use the context menu.
DuplicateDuplicate a selected object with all its properties.

Properties Panel

When an object is selected, the right-side Properties panel shows:

SectionWhat You Can Do
TransformSet exact Position (X, Y, Z), Rotation (X, Y, Z in degrees), and Scale (X, Y, Z) values.
MaterialView and change the material applied to the selected mesh.
Pivot / AxisEdit the object's pivot point. Choose a preset or enter custom coordinates. Toggle the axis helper visibility. Use the scale preview slider to test transforms.
Geometry InfoView polygon count, bounding box dimensions, and vertex count.
Pivot gizmo: When an object is selected, a pivot gizmo (RGB axes with cone tips) appears at the object's origin. This gizmo is screen-space scaled, so it stays the same visual size regardless of zoom level. A purple accent ring appears when the pivot is set to a non-default position.

Options Mode

Options mode is the heart of the Configurator project type. Here you create option blocks that let end users customise the 3D product — changing materials, colours, visibility, dimensions, and more. Blocks can be reordered by dragging and grouped under custom headings.

Option Block Types

Select Material

Lets users choose from a list of materials to apply to one or more 3D parts.

  1. 1Click "Add Option Block" and choose "Select Material".
  2. 2Give the block a label (e.g., "Frame Finish", "Seat Material").
  3. 3Choose which 3D object(s) the material will be applied to.
  4. 4Add material choices by selecting from your material library.
  5. 5Optionally set a default selection.
Target overlap for appearance blocks: Select Material, Dropdown, Thumbnail Selector, and Carousel can now target the same 3D part across multiple variants.
Priority rule: when overlaps exist, the last applied variant wins (latest user action or conditional-logic reveal has precedence).
Pricing safety: pricing evaluates selected variant values once per linked block/variant key, so duplicate target mappings do not automatically duplicate price.

Colour Variants

Lets users pick a colour from a set of swatches. The colour is applied to a specific material property (usually the base colour) of one or more parts.

  1. 1Add a "Colour Variants" option block.
  2. 2Give it a label (e.g., "Body Colour").
  3. 3Select the target 3D object(s).
  4. 4Add colour swatches using the colour picker. You can add as many colours as needed.
  5. 5Each swatch can have a label and optional price modifier.

Show / Hide 3D Objects or Parts

Lets users toggle the visibility of entire 3D objects or individual mesh parts on or off. Useful for optional accessories, add-ons, or alternative configurations.

  1. 1Add a variant and switch to the "Visibility" appearance mode.
  2. 2Label it (e.g., "Add Armrests", "Include Headrest").
  3. 3Choose the target mode: "3D Objects" to show/hide entire models, or "3D Parts" for individual meshes.
  4. 4Select which 3D object(s) or part(s) to show or hide.
  5. 5Choose the default state (shown or hidden).
  6. 6Optionally add a price modifier for the visible state.

Thumbnail Selector

Displays variant choices as a visual thumbnail grid. Users browse and click a thumbnail to select that option. Ideal for large variant sets where visual browsing is more intuitive than text lists.

  1. 1Add a "Thumbnail Selector" option block.
  2. 2Give it a label (e.g., "Choose Style", "Select Pattern").
  3. 3Add variants — each variant gets a thumbnail image (uploaded or auto-generated from the material).
  4. 4Configure display settings in the block properties panel.

Supports the same overlap behavior as Select Material for appearance variants targeting identical 3D parts.

SettingOptionsDescription
Thumbnail StyleGrid / Horizontal scroll / Vertical stack / CarouselControls how thumbnail cards flow in Preview and Share view.
Thumbnail Size25×25 / 35×35 / 60×60 / 100×100 / 140×140Acts as a soft cap so cards stay close to the intended size while still fitting the sidebar.
Thumbnail ShapeSquare / Rounded / CircleShape of the image or swatch inside the card. The outer card stays rectangular.
Columns Count1 – 6Desktop column maximum. Grid mode automatically downshifts on tablets, phones, and narrow sidebars for large thumbnails.
Thumbnail GapSmall / Medium / LargeSpacing between thumbnails.
Label PositionBelow / Overlay / HiddenWhere the variant label appears relative to the thumbnail.
Show TitleOn / OffShow or hide the block title above the thumbnail grid.
Compact ModeOn / OffReduces padding for a denser layout.

Number Input

A numeric input block that lets users enter a quantity or a dimension value. When configured as a dimension (with axis scaling), it dynamically scales the 3D model along the chosen axis.

  1. 1Add a "Number Input" option block.
  2. 2Give it a label (e.g., "Width (cm)", "Quantity").
  3. 3Choose the value type: "Quantity" for a simple number, or "Dimension" for a value that drives model scaling.
  4. 4For Dimension type: select the scaling axis (X, Y, or Z) and optionally restrict which parts of the model are affected.
  5. 5Set the unit suffix (e.g., cm, mm, in) and min/max constraints.
SettingDescription
Value TypeQuantity (simple number) or Dimension (scales the model along an axis).
Scaling AxisX, Y, or Z — which axis the dimension value scales (Dimension mode only).
UnitsDisplay suffix — cm, mm, in, ft, m, etc.
Position PartsRestrict scaling to specific mesh parts instead of the whole object.
Min / MaxMinimum and maximum allowed values.
StepIncrement step for the input spinner buttons.

Toggle Switch

A simple on/off binary toggle. Limited to exactly two variants (e.g., On/Off, Yes/No, With/Without). Works well for optional add-ons.

  1. 1Add a "Toggle Switch" option block.
  2. 2Label it (e.g., "Include Roof Rack", "Add Engraving").
  3. 3Define the two states: each can trigger different materials, visibility changes, or price modifiers.
  4. 4Set which state is the default.

Section Header

A non-interactive heading that visually groups related option blocks. Can be styled as a simple divider or as a tab-style section break.

SettingDescription
LabelThe heading text displayed (e.g., "Exterior", "Interior", "Accessories").
TypeDivider (a horizontal line with text) or Tab (a clickable tab header for tabbed layouts).

Carousel

Displays variant choices in a horizontally scrollable carousel with navigation arrows. Ideal when you have many variants and want a compact, swipeable presentation.

Carousel appearance variants may also overlap on the same target parts; last applied variant wins.

SettingOptionsDescription
Arrow StyleInside / Outside / HiddenPosition or hide the navigation arrows.
AnimationSlide / Fade / NoneTransition animation between carousel items.
LoopOn / OffWhether the carousel wraps around from last to first item.
Show CounterOn / OffDisplay a "3 / 12" style counter showing current position.
Show LabelOn / OffDisplay the variant label below each carousel item.
Auto PlayOn / OffAutomatically advance through items.
Auto Play Interval1 – 10 secondsTime between auto-play transitions.

Scenery

Lets users switch between pre-defined scene backgrounds or environments. Each scenery variant loads a different set of 3D context models and camera settings to place the product in a different visual context.

  1. 1Add a "Scenery" option block.
  2. 2Label it (e.g., "Environment", "Room Setting").
  3. 3For each variant, select one or more context 3D models (the "scenery") from your assets.
  4. 4Configure camera settings per variant: position, target, FOV, zoom limits, rotation limits, and ground alignment.
  5. 5Set the default scenery variant.
Camera SettingDescription
Camera PositionThe starting camera position (X, Y, Z) for this scenery.
Camera TargetThe point the camera looks at (X, Y, Z).
FOVField of view angle.
Min / Max DistanceZoom limits — how close and far the user can zoom.
Min / Max Polar AngleVertical rotation limits.
Min / Max Azimuth AngleHorizontal rotation limits.
Enable PanningAllow the user to pan the camera.
Enable RotationAllow the user to orbit the camera.
Ground YThe Y position of the ground plane for shadow alignment.

Hotspot

Places interactive markers on the 3D model that users can click or hover over to see information popups. Hotspots are useful for product tours, feature highlights, and annotations.

  1. 1Add a "Hotspot" option block.
  2. 2Position the hotspot by clicking on the 3D model surface, or enter exact 3D coordinates.
  3. 3Configure the hotspot appearance and behaviour.
SettingDescription
Position (X, Y, Z)The 3D coordinates where the hotspot marker appears on the model.
IconChoose from built-in icons (info, plus, star, pin, etc.) or upload a custom icon.
TriggerClick or Hover — how the popup is activated.
Popup TitleThe heading text in the popup.
Popup ContentRich text body of the popup. Supports links and basic formatting.
Popup ImageAn optional image displayed in the popup.
AnimationPulse, bounce, or none — the idle animation of the marker.
ColourThe marker icon colour and popup accent colour.
SizeScale of the hotspot marker.
Always VisibleKeep the marker visible even when the model part faces away from camera.
Attach to PartAttach the hotspot to a specific mesh part so it moves with animations.

Other Block Types

Block TypeDescriptionUse Case
Dropdown SelectA dropdown menu with predefined choices. Each choice can trigger different actions.Size selection, style variants, component choices.
Image UploadLets users upload their own image to apply as a texture or decal.Custom branding, personalisation.
Text InputLets users enter custom text that appears on the 3D model. Toggle Consumer Controls → Font Family to let shoppers pick the typeface, then curate the allowed list in "Consumer-available fonts" (10 system + 40 Google fonts to choose from). Use the "Allowed Characters" segmented control to restrict input to Numbers, Letters, or Alphanumeric — Numbers also triggers the mobile numeric keypad automatically.Engraving, name personalisation, branded jersey numbers, postal codes.
Pattern DesignerApply and customise repeating patterns on surfaces.Fabric patterns, tile layouts.
Design CanvasFreeform placement of graphics on 3D surfaces.Logo placement, decal positioning.

Modular blocks now have a dedicated guide

Open Modular Projects for variant setup, snap origins, UI Design settings, Grid vs List examples, and material targeting for Preview and Share.

Reordering: Drag option blocks in the left panel to reorder them. The order here determines the order in the end-user configurator UI. Use Section Headers to visually group related blocks.

Modular Projects

Build drag-and-drop modular configurators with snap-aware placement, dedicated parts-picker UI Design settings, and consistent behavior across the Preview modal and Share view.

When to Use Modular Projects

Repeatable modules

Use Modular projects for systems assembled from repeatable 3D units such as kitchens, sectionals, storage, and lighting.

Scene composition

Users place and arrange modules directly in the 3D scene rather than only switching materials or visibility on a fixed model.

Admin-authored behavior

Each variant can define snap faces, offsets, origins, and the UI Design used by the module picker.

Preview and Share parity

The same module picker settings apply in both the Preview modal and the public Share view link.

Modular Block Setup

The Modular block powers drag-and-drop module assembly in Modular project types. End users compose products by placing, snapping, rotating, and mirroring independent 3D modules in a shared workspace. Ideal for kitchen builders, furniture systems, modular shelving, and similar products.

  1. 1Add a "Modular" option block (only available in Modular project type).
  2. 2Click "Add Variant" to create module variants. Each variant needs a label, value, and a selected 3D model.
  3. 3For each variant, toggle the Active Snap Sides — the bounding box faces (Top, Bottom, Left, Right, Front, Back) where the module can connect to others.
  4. 4Open the "UI Design" section to control how parts appear in Preview modal and Share view: choose Grid or List layout, thumbnail size, and how part names are displayed.
  5. 5For long part names, use List layout for always-readable rows, or Grid with 2 columns plus 2-3 label lines for a compact but readable palette.
  6. 6Set the Snap Origin — the corner alignment used when modules snap together (Lower Left, Lower Center, or Lower Right). Default is Lower Left.
  7. 7Optionally override the Snap Origin per side using the "Snap Origin Per Side" section — useful when different sides need different alignment (e.g., Left → Lower Left, Front → Lower Center).
  8. 8Fine-tune snap positions using the "Snap Offset (Advanced)" section to set per-side offset values.
  9. 9For asymmetric modules (e.g. an extension roof whose center is offset), use the "Snap Alignment Offset" section to shift incoming modules along the face plane on specific sides. This is a target-side setting — configure it on the module that others snap TO.
  10. 10If a variant must always connect from one authored side, set "Force Snap Side" on that variant.
  11. 11Configure Side Snap Settings: consumer add method (Drag & Drop or Click to Attach), rotation, mirroring, deletion, and visual feedback options.
SettingDescription
Snap OriginDefault corner alignment for all sides — Lower Left, Lower Center, or Lower Right.
Snap Origin Per SideOverride alignment for individual sides. Sides without an override inherit the global Snap Origin. A badge shows how many overrides are active.
Snap Offset (Advanced)Per-side numeric offset (−3 to +3) to fine-tune face alignment along each axis.
Snap Alignment OffsetPer-side lateral offset (−3 to +3) applied to modules that snap TO this variant. Shifts visitors along the face plane to compensate for asymmetric geometry.
Force Snap SideAvailable on every modular variant. Forces the module to always snap using a specific source side — any of Top, Bottom, Left, Right, Front, or Back, as long as that side is enabled in Active Snap Sides.
Parts Palette LayoutChoose Grid or List for the module picker shown in Preview modal and Share view. List keeps long part names readable; Grid is denser and more visual.
Thumbnail SizeSet the module thumbnail card size: Small, Medium, Large, or XL. Larger sizes improve image recognition but reduce visible density.
Grid ColumnsWhen using Grid layout, choose 2, 3, or 4 columns. Fewer columns give more room for long names.
Part Name DisplayShow names below thumbnails, overlay them on thumbnails, or hide them entirely when thumbnails are self-explanatory.
Label LinesControl how many lines each part name can occupy before truncating. Use 2-3 lines for readable names in grid layouts.
Instance Count BadgeShow or hide the counter badge that indicates how many copies of a module are currently placed.
Consumer Add MethodHow end users place modules: "Drag & Drop" (free placement) or "Click to Attach" (select a target side, then click a thumbnail; dragging still works).
Enable RotationAllow end users to rotate placed modules.
Enable MirrorAllow end users to mirror placed modules.
Enable DeleteAllow end users to delete placed modules.
Floating ToolbarShow an action toolbar on the selected module (rotate, mirror, delete).
Snap DistanceHow close modules need to be before they snap together.
Grid Snap SizePosition quantisation grid size (0 = free movement).
Cross-Block SnapAllow modules from different Modular blocks to snap together.
Enforce GroundingEnsure modules always sit on the ground plane.
Show Alignment GuidesDisplay alignment lines when module edges align during drag.
Show DimensionsDisplay distance measurements between modules.
Per-side Snap Origin: When you need different alignment per face (e.g., Left side aligns lower-left, Front side aligns lower-center), expand the "Snap Origin Per Side" panel under the snap sides grid. Each active side gets its own dropdown. Sides set to "Default" inherit the global Snap Origin value.
Readable part names: For module labels such as "Left Extension", "Sliding Door", or "Connector Panel", prefer List layout when text clarity matters most. If you want a more visual picker, use Grid with 2 columns and 2-3 label lines. Reserve Overlay labels for image-led products where thumbnails remain easy to recognize.

Grid layout

Best when thumbnails matter most and names are short to medium length.

Left Extension
Right Corner
Sliding Door
Connector Panel

List layout

Best when names must remain easy to read in Preview modal and Share view.

Left Extension
Right Corner
Sliding Door
Connector Panel

Camera Behaviour in Preview and Share

By default, the camera automatically reframes to fit all placed modules in view every time a module is added or connected — this is the Auto-Reframe on Module Connect setting found in Project Settings → Camera. It fires for all placement methods: clicking to add the first module, snapping a module to another via click, and both drag-first and drag-snap placements.

SettingDefaultDescription
Auto-Reframe on Module ConnectOnAutomatically adjusts the camera to keep all placed modules in view each time a module is added or snapped in Preview or Share. Applies to all placement methods.
Disable Auto-Reframe on Module Connect when end users are expected to work on a large scene and want to keep their chosen camera position while assembling modules, or when your initial camera angle is intentionally framed around a key part of the assembly.

Performance: Drag Ghost Preview

The Show Modular Drag Ghost setting (Project Settings → Loading, Modular projects only) controls whether a translucent ghost clone is rendered while the user drags a module. It is off by default.

SettingDefaultDescription
Show Modular Drag GhostOffRender a translucent Phong-shaded ghost with wireframe overlay while dragging modules. Turn on for richer visual feedback; keep off on scenes with many placed modules for better performance. Snap indicators, cursor shape, and drop accuracy are unaffected by this setting.
Enable the drag ghost when your product has only a handful of module variants and end users benefit from seeing exactly where the module will land. For complex assemblies with 20+ placed modules, keeping the ghost off avoids per-frame clone rendering and improves drag responsiveness.

Material or Color Options for Placed Modules

In Modular projects, material and color variants can apply to placed modules globally. Use a separate Thumbnail Selector, Select Material, Dropdown, Toggle, Checkbox, or Carousel block for choices such as material, paint color, fabric color, or texture. The Modular block controls which modules are placed; the material or color option block controls how all matching placed modules look.

  1. 1Create the Modular block first and configure the module variants that users can place.
  2. 2Create a separate material or color option block, such as "Module color options" with variants like Natural, White, Grey, or Brown.
  3. 3Open each material or color variant, choose Material or Color, then set Target Scope to "All placed modules" or "Selected module types".
  4. 4Optionally select mesh parts by name to limit the option to wood, fabric, metal, or another repeated part group. Leave the parts empty to affect the full module mesh.
  5. 5Preview the project, place modules, and switch material or color options. The selected option is applied to existing placed modules and to modules added afterward.
Modular-only scope: Module-wide material and color targeting is only shown in Modular projects. Standard Configurator and Viewer projects keep the normal target object and target parts workflow.

Conditional Logic

Conditional logic lets you create rules that automatically show, hide, enable, or disable option blocks based on the user's current selections. This creates a guided, intelligent configuration experience.

How It Works

A conditional logic rule consists of three parts:

IF

Condition

When a specific option has a specific value selected...

THEN

Action

...perform an action on another option block.

ELSE

Fallback (Optional)

...otherwise, do something else.

Creating a Rule

  1. 1In the project editor, switch to Options mode.
  2. 2Click the "Conditional Logic" button (or lightning bolt icon) in the toolbar.
  3. 3Click "Add Rule".
  4. 4Set the IF condition: choose the source option block, the comparison operator (equals, not equals, contains, etc.), and the trigger value.
  5. 5Set the THEN action: choose the target option block and what should happen (show, hide, enable, disable, set value).
  6. 6Optionally, set an ELSE action for when the condition is not met.
  7. 7Save the rule. It takes effect immediately in the configurator.

Available Actions

ActionEffect
ShowMakes the target option block visible.
HideHides the target option block from the user.
EnableMakes the target option block interactive (clickable).
DisableGreys out the target option block so it cannot be changed.
Set ValueAutomatically sets the target option to a specific value.

Target Scopes

When creating a rule, you choose a target scope that determines what the rule affects. There are four scopes:

ScopeWhat It TargetsUse Case
Entire BlockThe whole option block UI panelHide an entire section (e.g. hide "Armrest Colour" when armrests are off).
Specific VariantsIndividual variant options within a blockHide indoor-only fabric options when "Outdoor" is selected.
MaterialsMaterial assignments on 3D objectsSwap the material applied to a part based on another selection (e.g. apply "Outdoor Paint" material when "Outdoor" is chosen). When a block becomes visible via a conditional rule, the default material is auto-applied to the viewport.
3D ObjectsWhole 3D objects in the viewport (UI stays visible)Hide the headrest mesh when "Minimal" style is chosen, while keeping the option block visible.
3D PartsIndividual mesh parts (sub-meshes) in the viewportHide stitching detail or logo embossing on a plain finish without affecting the parent object.
3D Objects vs 3D Parts: Use 3D Objects to target whole objects by their targetObjectName (e.g. "headrest_mesh") or via targetObjectIds in visibilityConfig. Use 3D Parts to target individual mesh parts by their targetPartName / targetPartNames (e.g. "logo_emboss", "stitching_detail"). Both 3D scopes affect only the viewport — the UI option block remains visible.

Example: 3D Part Visibility

A sofa configurator where the decorative stitching and button cap details are hidden when the user selects a "Plain" finish, but the finish selector block remains visible.

IF "Finish Style" equals "Plain"

THEN Hide 3D Parts: "stitching_detail", "button_caps", "logo_emboss"

The option block UI stays fully interactive — only the mesh parts are hidden in the 3D viewport.

Examples

Example 1: Material-Dependent Colour Options

A sofa configurator has a "Material Type" dropdown (Leather, Fabric). Show different colour options depending on the selection.

IF "Material Type" equals "Leather"

THEN Show "Leather Colours"

ELSE Hide "Leather Colours"

IF "Material Type" equals "Fabric"

THEN Show "Fabric Colours"

ELSE Hide "Fabric Colours"

Automatic 3D material switching: When a block becomes visible because a conditional rule is triggered, the 3D viewport automatically applies the default (or previously-selected) material from that block to the model. For example, if you have separate "Leather Colours" and "Fabric Colours" blocks that show/hide based on "Material Type", switching from Leather to Fabric will automatically apply the first colour from "Fabric Colours" to the 3D object — the end user does not need to manually click a colour for the viewport to update.

Example 2: Size-Dependent Add-ons

A table configurator where "Extension Leaf" is only available for tables with length > 180cm.

IF "Table Length" greater than 180

THEN Show "Extension Leaf Option"

ELSE Hide "Extension Leaf Option"

Example 3: Cascading Selections

A bicycle configurator where choosing "Road Bike" frame type automatically sets tyre width to "23mm" and hides the "Suspension" option.

IF "Frame Type" equals "Road Bike"

THEN Set Value "Tyre Width" = "23mm"

IF "Frame Type" equals "Road Bike"

THEN Hide "Suspension Type"

ELSE Show "Suspension Type"

Advanced: AND / OR Multi-Conditions

For more complex scenarios, you can combine multiple conditions using AND (all must be true) and OR (any can be true) operators. This lets you build sophisticated configuration logic.

OperatorMeaningUse Case
ANDAll conditions must be true for the action to trigger.Show "Premium Engraving" only when BOTH "Material = Gold" AND "Size = Large".
ORAny one condition being true triggers the action.Show "Warranty" option when "Material = Steel" OR "Material = Aluminium".
NOTInverts a condition.Show "Paint Colour" only when material is NOT "Natural Wood".

Example 4: AND — Multiple Conditions Required

A laptop configurator where "4K Display Upgrade" is only shown when the user selects a high-end processor AND at least 16GB RAM.

IF "Processor" equals "Intel i9" AND "RAM" greater than or equals "16GB"

THEN Show "4K Display Upgrade"

ELSE Hide "4K Display Upgrade"

Example 5: OR — Any Condition Triggers

A kitchen configurator where the "Handle Style" option should appear when the user chooses any cabinet type that has handles (as opposed to push-to-open).

IF "Cabinet Type" equals "Shaker" OR "Cabinet Type" equals "Traditional" OR "Cabinet Type" equals "Country"

THEN Show "Handle Style"

ELSE Hide "Handle Style"

Example 6: Nested AND + OR — Complex Logic

A furniture configurator where a "Premium Fabric Protection" add-on is only available when the material is fabric (not leather/wood) AND the size is either Medium or Large.

IF (

"Material Type" equals "Fabric"

AND

( "Size" equals "Medium" OR "Size" equals "Large" )

)

THEN Show "Premium Fabric Protection" + Set Value "Protection Price" = "$49"

Modular Self-Snap Rules (Per-Instance)

In Modular projects, a Modular option block can reference itself in the WHEN clause. This lets you author rules that hide or show parts of a placed module only when another instance of the same module snaps onto it. The hide/show effect applies only to the host (the existing module being snapped onto). The newly placed module that triggers the rule is unaffected.

Example 6: Hide a side panel when another module connects on that side

A pergola configurator with an "Extension Roof" modular block. When two extension-roof modules are connected, the shared wall between them should disappear from the host module so the roofs read as one continuous piece.

THEN Hide 3D Parts on "Extension Roof" → skeleton_extra_side

WHEN "Extension Roof" (this block · self-snap) has selected, snapped on side Left

Result: only the host's skeleton_extra_side meshes hide. Other placed extension-roof instances that have nothing snapped on their Left side keep all parts visible.

How it evaluates per-instance: the rule runs once per placed module of the target block. For each host instance, only sibling modules whose snappedTo.moduleId equals that host (and that match the chosen side) are considered. Hide/show effects are written to a per-instance map and applied to that host's clone alone — never to the global model.
Show rules work the same way: use a self-snap WHEN clause with action "Show" to reveal extra parts on the host only when another module connects to it (e.g. show a connector cap, decorative joint, or wiring channel that should only appear at junctions).

Creating Multi-Condition Rules

  1. 1Open the Conditional Logic panel and click "Add Rule".
  2. 2Set your first IF condition as normal.
  3. 3Click the "+ Add Condition" button below the first condition.
  4. 4Choose "AND" or "OR" to connect the new condition to the first.
  5. 5Set the second condition's source option block, operator, and value.
  6. 6Repeat to add more conditions as needed. You can mix AND and OR operators.
  7. 7Set the THEN and optional ELSE actions.
  8. 8Save the rule and test it in the Share preview.
Evaluation order: AND conditions are evaluated before OR conditions (standard boolean precedence). If you need different grouping, create separate rules — one per OR branch — each with its own AND conditions.
Testing tip: After creating rules, test them in the Share view preview. Switch between options to verify that conditional blocks appear and disappear as expected. For multi-condition rules, test all possible combinations to ensure they behave correctly.

Pricing Mode

Pricing mode lets you set up real-time price calculation for your product configurator. Add price blocks, link them to option blocks, and build formulas — the total price updates instantly as users change options.

Enable pricing first: Go to Project Settings > Display tab and enable "Show Price". Set the currency in Project Settings > Pricing tab. Without this, the pricing UI will not appear to end users.

Price Block Types

There are five types of price blocks. Each represents a different pricing concept. Unique Price appears only for Enterprise Modular projects.

1. Base Price

A single fixed starting price for the product. There can only be one Base Price block per project. This is the foundation that other blocks add to or multiply.

  1. 1Switch to Pricing mode in the editor.
  2. 2Click "Add Price Block" and choose "Base Price".
  3. 3Enter the base price value (e.g., 500).
  4. 4The base price appears as the minimum price before any options are selected.

2. Price Group

Links to one or more option blocks and assigns a price to each variant. When the user selects a variant, its price is added to the total. Also supports Modular option blocks — each placed module instance is priced individually — and Number Input option blocks — each numeral variant's price is multiplied by the runtime numeric value the end user enters.

  1. 1Click "Add Price Block" and choose "Price Group".
  2. 2Select the option block to link to (e.g., "Frame Finish", "Seat Material", a Modular block, or a Number Input block).
  3. 3For each variant (or module type, or numeral variant), enter a price value.
  4. 4Variants or module types without a price default to 0 (no additional cost).
  5. 5For Modular blocks, the price label shows "/ unit" — it is charged per placed module instance.
  6. 6For Number Input blocks, the price label shows "/ unit" — it is multiplied by the numeric value the end user enters for that variant: [number] × price.
Example (Standard): An option block "Wood Type" has variants Oak ($0), Walnut (+$120), and Teak (+$250). Create a Price Group linked to "Wood Type" and set the variant prices accordingly.
Example (Modular): A Modular block "System Components" has variants Shelf (€80/unit), Cabinet (€150/unit), and Drawer (€120/unit). Create a Price Group linked to it. The total increases as the user places modules: placing 2 Shelves + 1 Cabinet = €80 × 2 + €150 = €310.
Example (Number Input): A Number Input block "Sizes" has numeral variants Taglia S (€5), Taglia M (€8), Taglia L (€12), Taglia XL (€13), and Taglia XXL (€17). Create a Price Group linked to it. At runtime the end user enters a quantity per size; the contribution is Σ(quantity × per-unit price) — e.g., 2 S + 3 L = 2 × €5 + 3 × €12 = €46.

3. Price Table

A 2D matrix that cross-references two option blocks to determine a price. Useful when the price depends on the combination of two selections (e.g., size × material). Either axis can be a dropdown, select-material, checkbox, toggle, carousel, modular, or Number Input block.

  1. 1Click "Add Price Block" and choose "Price Table".
  2. 2Select the first option block for rows (e.g., "Size") and the second for columns (e.g., "Material").
  3. 3Fill in the price grid — each cell represents the price for that specific row × column combination.
  4. 4When the user selects a size and a material, the corresponding cell value is used.
  5. 5When an axis is a Number Input, the cell price is multiplied by the runtime numeric value for that variant; if both axes are Number Inputs, it is multiplied by both.
Example: A table configurator with sizes (S, M, L) and materials (Pine, Oak, Walnut). The Price Table has 9 cells (3×3), each with a specific price for that size-material combination.
Example (Number Input axis): Rows = Number Input "Size" with variants S, M, L (quantities entered at runtime). Columns = Dropdown "Material" with Cotton and Polyester. Fill each (Size, Material) cell with a unit price; the contribution is Σ(qty[size] × cellPrice(size, selectedMaterial)).

4. Unique Price

An Enterprise-only block for Modular projects. It prices one chosen module variant by the quantity placed by the consumer and one correspondent option selection, so configured quantity breaks can be unique while higher quantities extend with that column option's Default row value.

  1. 1Open an Enterprise Modular project and switch to Pricing mode.
  2. 2Click "Pricing" and choose "Unique Price".
  3. 3Select the modular block and exactly one module variant, such as "Connect Full Wall".
  4. 4Add quantity rows such as 1, 2, and 3 for the non-linear breakpoints you want to price directly.
  5. 5Select another option block for the columns, such as "Treatment Options".
  6. 6Fill the grid with exact total prices for each quantity and option variant.
  7. 7Fill the Default row with the per-extra fallback price for each option variant column.
Example: 1 Connect Full Wall with Natural untreated can be $249, while 2 Connect Full Walls can be $699. If the highest row is 3 at $949 and the Natural untreated Default row value is $399, quantity 4 resolves to $1,348. A different treatment column can use a different Default value.

5. Variable

A custom numeric variable that can either be a standalone slider/input or linked to an option block. Variables are referenced in formulas for dynamic calculations. When linked to a Modular option block, each placed module instance contributes its per-unit price — useful for module-count pricing inside formulas. When linked to a Number Input block, each variant's price is multiplied by the numeric value the end user enters.

  1. 1Click "Add Price Block" and choose "Variable".
  2. 2Name the variable (e.g., "Quantity", "Custom Width", "Discount %", "Modules Cost").
  3. 3Choose "Custom" for a standalone slider or "For Options" to link to an option block.
  4. 4For "For Options" mode: select the option block (can be a Modular or Number Input block) and set a price per variant.
  5. 5For "Custom" mode: set min, max, step, and default values for the slider.
  6. 6Use this variable in the price formula (see below).
Modular example: Link a Variable to a Modular block "System Components" and set a price per module type. Then use it in a formula like [Base Price] + [Modules Cost]. As modules are placed or removed, the total updates in real time.
Number Input example: Link a Variable to a Number Input block "Sizes" with variants Taglia S (€5), Taglia M (€8), Taglia L (€12), Taglia XL (€13), Taglia XXL (€17). The block contributes Σ(quantity × per-unit price) live as the end user updates the size quantities in the Preview modal and the Share view.

6. SKUs on Priced Variants (Enterprise Modular)

On Modular projects with an Enterprise plan, every priced variant or cell in Price Group, Variable (For Options), Price Table, and Unique Price blocks can carry an SKU. SKUs are persisted alongside prices and travel with the configuration through the live breakdown, quote/form submissions, and Shopify draft orders — typically used to map configurator output to ERP / inventory codes.

  1. 1Open an Enterprise Modular project and switch to Pricing mode.
  2. 2Open a Price Group or Variable (For Options) block — a small SKU input appears under each variant's price field. Type the SKU (max 64 chars) and it persists automatically.
  3. 3Open a Price Table or Unique Price editor modal — click the "Show SKUs" button in the toolbar. Each cell now stacks a SKU input below its price. The toggle re-opens automatically next time if any SKU has been authored.
  4. 4Empty SKU fields are not persisted (no empty strings in the saved project).
  5. 5Verify in the Share preview: open the price breakdown details — the matching SKU appears in muted monospace next to each line item.
Where SKUs flow: the pricingBreakdown array sent to the Shopify draft-order endpoint includes a sku field on each line. The SDK exposes the same fields on the pricing block payload (variantSkus, tableCellSkus, uniquePriceCellSkus, uniquePriceDefaultCellSkus, variableOptionSkus) so headless integrations can reconcile against ERP/inventory.
Why Enterprise + Modular only: SKUs are most useful when configurator output maps to discrete inventory items (modules), and Enterprise is the plan that ships against ERP / inventory systems. Starter and Pro plans hide the SKU UI to keep the pricing editor uncluttered.

Price Formula

The price formula defines how all price blocks combine into a final total. Simplio3D uses a visual token-based formula editor — you build formulas by clicking to insert block references, operators, numbers, and parentheses.

Formula Tokens

Token TypeDescriptionExample
Block ReferenceInserts the current value of a price block. Click to browse and select.[Base Price], [Wood Type], [Size × Material]
NumberA literal numeric constant.100, 0.15, 2.5
OperatorArithmetic operators.+ (add), − (subtract), × (multiply), ÷ (divide)
ParenthesesGroup expressions to control evaluation order.( [Base] + [Material] ) × [Quantity]

Formula Examples

// Simple additive pricing

[Base Price] + [Frame Finish] + [Seat Material] + [Add-ons]

// Quantity-based pricing

( [Base Price] + [Material Upgrade] ) × [Quantity]

// Size-material matrix with discount

[Size × Material Table] × ( 1 − [Discount %] ÷ 100 )

Setting Up Pricing: Step by Step

  1. 1Go to Project Settings > Pricing tab. Set the currency symbol, prefix/suffix, and tax settings.
  2. 2Go to Project Settings > Display tab. Enable "Show Price".
  3. 3Switch to Pricing mode in the editor.
  4. 4Add a Base Price block and set the starting price.
  5. 5Add Price Group blocks for each option block that affects the price — enter variant prices.
  6. 6Add Price Tables for any two-dimensional pricing (size × material combos).
  7. 7For Enterprise Modular projects, add Unique Price blocks when one module type needs non-linear quantity pricing with per-column Default row fallback prices.
  8. 8Add Variables for dynamic inputs like quantity or custom dimensions.
  9. 9Open the Formula editor. Build the formula by clicking to insert block references and operators.
  10. 10Test pricing in the Share preview. Change options and verify the total updates correctly.

Pricing Settings (Project Settings > Pricing Tab)

SettingDescription
Currency SymbolThe currency symbol displayed (e.g., $, €, £, kr, ¥).
Currency PositionPrefix ($100) or Suffix (100€).
Decimal PlacesNumber of decimal places shown (0, 1, or 2).
Thousand SeparatorComma, dot, space, or none.
Tax RateOptional tax percentage applied to the total.
Tax LabelLabel displayed next to the tax amount (e.g., "VAT", "Tax", "GST").
Show Tax BreakdownShow the tax amount separately below the total.
Debugging prices: If the total seems wrong, check: (1) each Price Group, Unique Price, or Variable is linked to the correct option block, (2) variant prices are set for all variants and module types, (3) Unique Price has the intended quantity break rows and Default row values, (4) the formula references the correct block names, and (5) parentheses are balanced. For Modular projects, place modules in the Preview modal to verify the total updates correctly.

Forms Mode

Forms mode lets you add a contact or quote request form to your configurator. Users fill out the form with their details, and the submission includes their full configuration, calculated price, and a 3D screenshot.

Enable forms first: Go to Project Settings > Display tab and enable "Show Form" to activate the form button in the configurator.

Form Field Types

There are 11 field types available. Drag to reorder fields in the form editor.

Field TypeDescriptionKey Settings
NameA name input. Can be a single full-name field or split into first + last name.Required, placeholder, split mode.
EmailEmail address with built-in format validation.Required, placeholder, confirmation email toggle.
Text InputSingle-line free text for company name, order reference, etc.Required, placeholder, min/max length.
TelephonePhone number input with international format support.Required, placeholder, country code prefix.
DropdownSelect from predefined options (e.g., "How did you hear about us?", "Budget range").Required, option list, placeholder.
Country / State / CityCascading location selector — country first, then state, then city.Required, show/hide each level.
Acceptance (Checkbox)A single checkbox for terms, privacy policy, or marketing consent.Required (must be checked), label with link support.
Submit ButtonThe form submission button. Customise the label and style.Button label, loading text, success text.
Add to CartAn "Add to Cart" button for e-commerce integrations. Sends the configuration to the cart.Button label, integration target (WooCommerce, Shopify, etc.).
Header / TitleA non-interactive heading for grouping form sections.Heading text, size (H2, H3, H4).
ConfirmationA confirmation / success message displayed after form submission.Success heading, success message, redirect URL (optional).

Setting Up a Form: Step by Step

  1. 1Go to Project Settings > Display tab and enable "Show Form". Set the form button label (e.g., "Request Quote", "Get Pricing", "Contact Us").
  2. 2Switch to Forms mode in the editor.
  3. 3Click "Add Field" and choose a field type from the list.
  4. 4For each field, configure: label, placeholder, required/optional, and any type-specific settings.
  5. 5Drag fields to reorder them in the form.
  6. 6Add a "Header / Title" field to group related sections (e.g., "Contact Details", "Shipping Address").
  7. 7Add an "Acceptance" checkbox with a link to your terms/privacy page.
  8. 8Configure the "Confirmation" field — this is the success message users see after submission.
  9. 9Add either a "Submit" button or an "Add to Cart" button (for e-commerce integrations).

Custom CSS Presets

Each form field supports a Custom CSS preset. This lets you override the default field styling without editing global CSS. Use it for branding adjustments like border radius, font size, or padding.

Form Preview & Validation

Use the Form Preview to test your form without leaving the editor. The preview runs full validation diagnostics — it highlights required fields, checks email format, and verifies that all submission requirements are met. Fix any validation warnings before publishing.

What Users See

When "Show Form" is enabled, a button (e.g., "Request Quote") appears in the configurator. Clicking it opens the form. After submission, the form data, the current configuration state, a 3D screenshot, and the calculated price (if pricing is enabled) are all captured and sent as a Request.

Submissions: All form submissions appear in Dashboard > Requests. You can also receive them via email if SMTP / email settings are configured in Project Settings > Email tab. Each submission includes the full configuration state, so you know exactly what the customer configured.

Project Settings

Project Settings is organised into 9 tabs that control every aspect of how your project looks, behaves, and integrates with external services. Access it via the gear icon in the editor toolbar.

1. Display Tab

Controls which UI elements are visible in the configurator and how the layout is structured.

SettingDescription
Show SidebarShow or hide the options sidebar in the configurator.
Show PriceEnable the pricing display. When on, the Pricing mode becomes active and prices appear to end users.
Show FormEnable the quote/contact form button. When on, the Forms mode becomes active.
Show DimensionsDisplay dimension labels on the 3D model.
Show Floating ToolsShow the floating toolbar (AR, screenshot, fullscreen, zoom buttons) in the viewport.
Show WatermarkDisplay or hide the Simplio3D watermark. Available on paid plans.
LayoutChoose the sidebar position: Left, Right, or Bottom panel layout.
Preview & Share LanguagePin a UI language for the Preview modal and the public Share view. Choose "Auto" to inherit the visitor's language, or pick any of the 15 supported locales. Translates option-block chrome (Dropdown, Thumbnails Selector, Select Material, Checkbox, Toggle Switch, Number Input, Carousel, Scenery, File Upload, Text Input, Pattern Designer, Design Canvas) and the Floating Tools toolbar. Variant names and other content you author stay as written.

2. Branding Tab

Customise the visual identity of the configurator to match your brand.

SettingDescription
Primary ColourYour brand accent colour, used for buttons, active states, and highlights.
Secondary ColourOptional secondary colour for subtle accents.
Background ColourBackground colour of the sidebar and UI panels.
Font FamilyChoose a font for all configurator UI text. Supports Google Fonts.
Font SizeBase font size for the configurator UI.
Border RadiusCorner rounding for buttons, cards, and UI elements (e.g., 0 for sharp, 8 for rounded, 999 for pill).
Button StyleStyle preset for buttons: Filled, Outline, Ghost, or Minimal.
Action Button ColoursSet separate default, hover, and text colours for Submit and Add to Cart buttons in Preview and Share.
LogoUpload your company logo. Displayed in the configurator header.
Custom CSSInject custom CSS for advanced styling overrides on the embedded configurator.

3. Pricing Tab

Configure currency, tax, and price display format.

SettingDescription
Currency SymbolThe currency symbol (e.g., $, €, £, kr, ¥).
Currency PositionPrefix ($100) or Suffix (100 €).
Decimal Places0, 1, or 2 decimal places.
Thousand SeparatorComma, dot, space, or none.
Tax Rate (%)Tax percentage to apply on top of the calculated total.
Tax LabelLabel shown next to the tax amount (e.g., "VAT", "GST", "Tax").
Price Prefix TextText shown before the price (e.g., "From", "Starting at").
Price Suffix TextText shown after the price (e.g., "excl. VAT", "/month").

4. Lighting Tab

Control the scene lighting and environment.

SettingDescription
Environment PresetChoose from built-in HDR environments (Studio, Warehouse, Sunset, etc.) or upload a custom HDR.
HDR IntensityBrightness of the HDR environment reflections (0 – 5). Affects how strongly metallic surfaces reflect.
Light IntensityBrightness of the main directional light.
Ambient IntensityBrightness of the ambient fill light (lights up shadows).
ShadowEnable or disable shadow casting. Configure shadow softness and opacity.
Shadow PositionAdjust shadow ground plane offset.

5. Camera Tab

Configure the 3D camera behaviour and constraints.

SettingDescription
Field of View (FOV)Camera FOV angle in degrees (10 – 120).
Min / Max Zoom DistanceHow close and far the user can zoom.
Enable PanningAllow users to pan (drag) the camera sideways.
Enable RotationAllow users to orbit the camera around the model.
Auto-RotateAutomatically spin the model when idle. Set speed and direction.
Min / Max Polar AngleRestrict vertical orbit range (e.g., prevent viewing from below).
Min / Max Azimuth AngleRestrict horizontal orbit range.
Initial Camera PositionThe default camera position when the project loads.
Auto-Reframe on Module Connect (Modular only)When on, the camera automatically adjusts to keep all placed modules in view each time a module is added or connected in Preview and Share. Turn off to let end users manage their own camera position.

6. Loading Tab

Customise the loading screen that appears while the 3D model downloads.

SettingDescription
Animation StyleChoose the loading animation: spinner, progress bar, skeleton, or custom.
Background ColourBackground colour of the loading screen.
Accent ColourColour of the loading spinner or progress bar.
Show ProgressDisplay a percentage or byte-count progress indicator.
Custom LogoDisplay your logo during loading instead of the default spinner.

7. Advanced Tab

Advanced features and integrations.

SettingDescription
Enable ARTurn on Augmented Reality support (see the AR tutorial for details).
USDZ FileUpload a .usdz file for native iOS AR Quick Look.
Auto-Launch ARAutomatically open AR when users visit the share link on mobile with ?ar=1.
AR AnalyticsTrack AR-related events (dialog opened, QR scanned, AR launched).
Google Analytics IDYour GA4 measurement ID for tracking configurator usage.
Custom ScriptsInject custom JavaScript that runs in the shared viewer (e.g., tracking pixels, chat widgets).
WebhooksPOST request URLs that fire when a form is submitted or a configuration is saved. Useful for CRM integration.

8. PDF Tab

Configure the PDF document generated from form submissions and quote requests.

SettingDescription
Company NameYour company name displayed on the PDF header.
Company AddressAddress shown on the PDF.
Company LogoLogo displayed in the PDF header.
Include ConfigurationInclude the full option breakdown in the PDF.
Include PricingInclude price breakdown in the PDF.
Include ScreenshotInclude a 3D screenshot of the configuration.
Terms & ConditionsCustom terms text appended to the footer of the PDF.

9. Email Tab

Configure email notification delivery for form submissions.

SettingDescription
SMTP DriverChoose the email delivery method: Default (Simplio3D servers), Custom SMTP, or SendGrid.
Notification Email(s)Email address(es) that receive notifications when a form is submitted. Comma-separated for multiple.
Email Subject TemplateCustomise the email subject line. Supports variables like {project_name}, {customer_name}.
Email TemplateCustomise the email body HTML template. Supports variables for form fields and configuration data.
Send Test EmailSend a test email to verify your SMTP configuration is working.

Sharing & Embedding

Share your 3D project with clients, embed it on your website, or distribute it via a direct link. This section covers all sharing options.

Enabling the Share Link

  1. 1Open your project in the editor.
  2. 2Go to Project Settings (or click the Share icon in the top toolbar).
  3. 3Find the "Share" section and toggle "Enable Share Link" to on.
  4. 4A unique share URL will be generated (e.g., https://app.simplio3d.com/share/[projectId]/[token]).
  5. 5Copy the link and send it to anyone. They can view and interact with the configurator without needing an account.

Embedding with iframe

To embed the configurator on your website, use the provided iframe code.

  1. 1After enabling the share link, click the "Embed" tab in the sharing panel.
  2. 2Copy the iframe embed code provided.
  3. 3Paste the code into your website's HTML where you want the configurator to appear.
  4. 4Adjust the width and height attributes to fit your page layout.
  5. 5Optionally configure "Allowed Embed Domains" in settings to restrict which websites can host the iframe.

<!-- Example embed code -->

<iframe

src="https://app.simplio3d.com/share/YOUR_PROJECT_ID/YOUR_TOKEN"

width="100%"

height="600"

frameborder="0"

allow="autoplay; fullscreen; xr-spatial-tracking"

allowfullscreen

></iframe>

Other Sharing Options

OptionDescription
Direct LinkA standalone URL that opens the configurator in a full page. Best for sharing via email, chat, or social media.
QR CodeGenerate a QR code that links to the share URL. Useful for print materials, trade shows, or product packaging.
Embed CodeCopy-paste iframe HTML for embedding on any website.
Responsive EmbedThe embed automatically adapts to the container size. Use percentage-based width for responsive layouts.
Password ProtectionOptionally require a password to access the shared project and its public share actions.

Sharing Settings

The sharing dialog has three tabs:

TabWhat It Contains
LinkThe direct share URL and QR code. Copy or regenerate the share token.
EmbedThe iframe embed code with width/height options. Copy-paste into any website.
SettingsAllowed Embed Domains for iframe hosts, password protection, and token regeneration for revoking old links.
Responsive embedding: Wrap the iframe in a container with position: relative; padding-bottom: 56.25%; and set the iframe to position: absolute; width: 100%; height: 100%; for a perfectly responsive 16:9 aspect ratio.

Save Configuration (Enterprise)

Let visitors save their in-progress configuration via email. A Save (bookmark) icon appears in the Floating Tools of the share view and the embedded iframe. Clicking it opens a modal asking for an email address; the visitor then receives a permalink that restores their exact selections — materials, dimensions, modular placements, the lot.

  1. 1Open the project in the editor and switch to Project Settings → Advanced tab.
  2. 2Find the "Save Configuration" card (visible only on the Enterprise plan, for Configurator and Modular project types).
  3. 3Toggle "Enable Save Configuration" on. Disabled by default.
  4. 4Make sure the project's Email settings are configured (SMTP / SendGrid / Gmail / SES / Mailgun) — the permalink email goes through the same delivery pipeline as form submissions.
  5. 5Publish or re-share the project. The Save icon now appears in the Floating Tools toolbar in the Share view (and inside iframe embeds).
PropertyValue
Plan requiredEnterprise only
Project types supportedConfigurator, Modular (not Viewer)
Retention90 days. After that the permalink returns "this saved configuration has expired". Expired rows are auto-purged when you open Dashboard → Saved Configurations.
Email driverProject Email settings (SMTP / SendGrid / Gmail / SES / Mailgun) or the platform-level SendGrid override.
CapturedEmail (required), name (optional), GDPR consent (required). An invisible honeypot deters bots.
Rate limit5 saves per 10 minutes per IP and per email.
Storage cap5,000 live saves per Enterprise account. Server auto-purges expired rows first; if no slot frees, the oldest live record is evicted (LRU).
Owner viewDashboard → Saved Configurations (Enterprise-only sidebar entry). Shows email, project, date, days remaining, resend count; you can resend the email, copy/open the permalink, or delete.
ResendEach saved configuration can be re-emailed up to 3 times from the dashboard.
Webhook eventconfiguration.saved fires after the email attempt. Subscribe in Project Settings → Advanced → Webhooks. Payload includes emailDelivered so CRMs can react to bounces.
Inline buttonAdd a "Save Configuration" form-field type to put the Save button inline with your form (Submit / Add to Cart row) instead of (or in addition to) the Floating Tools icon. Useful when Floating Tools is hidden.
Permalink format: /share/PROJECT_ID/TOKEN?c=SAVED_ID. When the share viewer loads with the ?c= query, it fetches the saved snapshot and applies it on top of the project defaults.
For CRM integrations: subscribe to the configuration.saved webhook to pipe leads into your CRM the moment a visitor saves. The payload includes the visitor's email, name, the permalink, a thumbnail URL, and the configuration summary. emailDelivered: false lets you re-send via your own infrastructure if the project SMTP bounces.

WooCommerce Integration

Connect your Simplio3D configurator to WooCommerce and let customers configure products in 3D, then send them to checkout or add them to their cart. Two integration modes are available: Redirect to Checkout and Add to Basket.

Integration Modes

Redirect to Checkout

After configuring the product, the user is redirected directly to the WooCommerce checkout page with the configured product and price. No plugin required — uses a direct URL redirect with configuration data encoded in the URL parameters.

Add to Basket

After configuring, the product is added to the WooCommerce shopping cart (without redirecting). The user can continue shopping and add more products. Requires the Simplio3D WooCommerce plugin installed on your WordPress site.

Prerequisites

  • A WordPress website with WooCommerce installed and activated.
  • A Simplio3D account with at least one Configurator project with pricing enabled.
  • The project must have Share Link enabled.
  • For "Add to Basket" mode: WordPress admin access to install the Simplio3D WooCommerce plugin.

Linking a WooCommerce Product

  1. 1In the Simplio3D editor, open your project.
  2. 2Go to the WooCommerce integration panel (or Project Settings > Advanced > WooCommerce).
  3. 3Choose the integration mode: "Redirect to Checkout" or "Add to Basket".
  4. 4Click "Link Product" to search for or browse your WooCommerce products.
  5. 5Select the WooCommerce product to link. The product name, SKU, and price are displayed for confirmation.
  6. 6Save the integration. The configurator now includes a checkout / add-to-cart action.

Setup: Redirect to Checkout

  1. 1Choose "Redirect to Checkout" mode in the integration panel.
  2. 2Link your WooCommerce product (see above).
  3. 3The configurator will show a "Buy Now" or "Proceed to Checkout" button (label is customisable).
  4. 4When clicked, the user is redirected to your WooCommerce checkout URL with the product ID and configuration data.
  5. 5No plugin installation needed — this mode works with any standard WooCommerce setup.

Setup: Add to Basket

  1. 1Download the Simplio3D WooCommerce plugin from Dashboard > Integrations > WooCommerce.
  2. 2In your WordPress admin, go to Plugins > Add New > Upload Plugin. Install and activate the .zip file.
  3. 3In the Simplio3D editor, choose "Add to Basket" mode.
  4. 4Link your WooCommerce product.
  5. 5The configurator will show an "Add to Cart" button.
  6. 6When clicked, the configured product is added to the WooCommerce cart via the plugin API — the user stays on the page and can continue configuring or browsing.
  7. 7The cart item includes: product name, all configuration details, a 3D screenshot thumbnail, and the calculated price.

How It Works for Customers

  1. 1The customer opens the configurator (embedded on the product page or via a share link).
  2. 2They configure the product — choosing materials, colours, options, dimensions, etc.
  3. 3The price updates in real time as they change options.
  4. 4They click the checkout/cart button.
  5. 5For Redirect mode: they are sent to the WooCommerce checkout with the product pre-added.
  6. 6For Basket mode: the product is silently added to their cart. A confirmation toast appears.
  7. 7The WooCommerce order contains all configuration details, the calculated price, and a screenshot.
Price sync: The price calculated by Simplio3D is sent to WooCommerce as the product price. Make sure your Simplio3D pricing is configured correctly. The WooCommerce product base price is overridden by the Simplio3D calculated total.

Shopify Integration

Connect your Simplio3D configurator to Shopify via the Admin API. Configured products are added as Draft Orders in your Shopify admin.

Prerequisites

  • A Shopify store (any plan).
  • A Simplio3D account with at least one published Configurator project.
  • Access to the Shopify Dev Dashboard to create a custom app.
  • The project must have Share Link enabled.

Creating a Shopify App (Dev Dashboard)

  1. 1Go to dev.shopify.com and sign in with your Shopify account.
  2. 2Click "Create an app" and give it a name (e.g. "Simplio3D Connector"). Choose "Create app manually".
  3. 3Go to the "Versions" tab and click "Create version".
  4. 4Under Access scopes, search for and add the write_draft_orders scope, then save the version.
  5. 5Go to the "Overview" tab and click "Install app" to install it on your store.
  6. 6Go to "Settings" > "App credentials" and copy the Client ID and Client Secret.

Connecting in Simplio3D

  1. 1In the Simplio3D dashboard, go to Dashboard > Integrations > Shopify.
  2. 2Enter your Shop name (the myshopify.com subdomain, e.g. "my-store").
  3. 3Paste the Client ID and Client Secret from the Shopify Dev Dashboard.
  4. 4Click "Test Connection" to verify the credentials.
  5. 5Save the integration. You can now link projects to Shopify products.

Linking Projects to Products

  1. 1Open a project in the Simplio3D dashboard.
  2. 2Go to the Shopify linking dialog and select the product to connect.
  3. 3You can also use batch linking to connect multiple projects at once (up to 50).

Checkout Modes

Pick one of three checkout modes in Integrations > Shopify. Each project share viewer routes Add to Cart clicks through the active mode.

ModeUse whenNotes
Cart linkYou have one Shopify product per Simplio3D project and just want a basic cart redirect.Per-project link required (`Shopify linking dialog`). No price override, no breakdown — the customer pays the catalog variant price.
Draft orderYou need to push the configurator total (including formula/tax) as the order total and surface the configuration summary on the order.Creates a pending Draft Order via Admin API with `priceOverride` and `customAttributes`. Customer gets an invoice URL.
SKU-matched cart (Enterprise)You author SKUs on priced variants and want a real Shopify cart with one line per priced selection.No per-project link, no extra credentials — uses the Admin API you already configured.

SKU-Matched Cart (Enterprise)

The third mode matches every priced variant in your projects to a Shopify variant by SKU at checkout time, then redirects the customer to a multi-line Shopify cart permalink (/cart/{variant1}:{qty},{variant2}:{qty}). It's the natural pair for the SKU authoring feature on Price Group, Variable, Price Table, and Unique Price blocks.

What you need

Just the Admin API credentials you already configured in Step 2 — Client ID + Client Secret. No separate Storefront API token, no pre-sync. SKUs are resolved live whenever a customer clicks Add to Cart.

The Admin API token is fetched server-side via the client_credentials grant; Simplio3D never asks you to paste an Admin token directly. The same credentials power the connection test, the product list, the Draft Order mode, and the SKU-matched cart.

Setup steps

  1. 1Make sure you have an Enterprise plan and have authored SKUs on the priced variants you want sold (Pricing tab → SKU field next to each variant price).
  2. 2Open Dashboard → Integrations → Shopify. Connect with your Client ID + Client Secret (Step 2 of the wizard) and run the connection test.
  3. 3Pick "SKU-matched cart" as the checkout mode and save.
  4. 4Open any of your projects → Pricing tab. You'll see a small ✓ / ✗ / ⚠ badge next to every SKU input — that's the live check against your Shopify store. Fix any ✗ (not found) or ⚠ (duplicate) flags before sharing the project.

In-editor SKU validation

While you type a SKU into a pricing block, Simplio3D queries your Shopify Admin API (debounced 600 ms) and renders a tiny badge next to the input:

BadgeMeaningAction
✓ green checkExactly one Shopify variant has this SKU. Hover for the product + variant title.No action — ready for checkout.
✗ red XNo Shopify variant has this SKU.Either create the variant in Shopify, or update the SKU on the priced variant.
⚠ amber triangleMore than one Shopify variant shares this SKU.Clean up Shopify so each SKU is unique. The cart will skip this row until resolved.
(nothing)Shopify isn't connected, you're not on Enterprise, or the SKU field is empty.No badge is rendered — editing is unaffected.

How checkout works

  • The share viewer reads the live pricing breakdown — each row carries its SKU when authored.
  • On Add to Cart, the viewer POSTs { items: [{ sku, quantity, label?, parentName?, amount? }], configurationSummary?, note? } to POST /share/:projectId/:token/shopify-sku-cart.
  • The server validates the share token, confirms the project owner is on Enterprise, resolves each SKU to a numeric Shopify variant ID via the Admin API (one batched GraphQL call), and builds a multi-line cart permalink.
  • The customer is redirected to that permalink. Unmatched SKUs are skipped and reported in the response so the merchant can see what didn't make it into the cart.
Trust model: Variant IDs are always looked up server-side against your Shopify store at click-time — clients only send SKU + quantity. A malicious caller can't inject arbitrary Shopify products into the cart.
Fractional quantities: Shopify cart permalink quantities must be positive integers. Fractional breakdown quantities (e.g. number-input × 2.5) are rounded to the nearest integer. The configuration summary is attached to the cart via top-level cart attributes so the merchant can still reconcile.

Draft Order Integration

In the shared viewer, the Add to Cart button first checks Shopify mode. If Push price & configuration summary is enabled, clicking Add to Cart creates a Draft Order and redirects the customer to the invoice checkout URL.

  • Configured option summary in draft-order custom attributes and note text.
  • Configured price override when pricing is configured for the project.
  • Fallback to normal Shopify cart URL when Push price & configuration summary is disabled.
  • Invoice URL generation via Draft Order API response (with fallback attempts if invoiceUrl is not returned immediately).
Admin API: Simplio3D uses the Shopify Admin API with client credentials grant. Access tokens are obtained automatically and refreshed every 24 hours. The write_draft_orders scope is required for Draft Order mode; read_products + read_product_listings are needed for the SKU-matched cart mode (both look up variants by SKU).

API & SDK Quick Start

Use the Simplio3D API and JavaScript SDK to build fully custom 3D configurator experiences. This guide helps you get started quickly.

Step 1: Generate an API Key

  1. 1Go to Dashboard > Integrations.
  2. 2Find the "API Keys" section.
  3. 3Click "Generate New API Key".
  4. 4Give the key a descriptive name (e.g., "Production Website", "Staging").
  5. 5Copy the generated key immediately — it won't be shown again.
  6. 6Store the key securely (environment variables, not in client-side code).
Security: Never expose your API key in client-side JavaScript. Always make API calls from your backend server and proxy responses to the frontend.

Step 2: Make Your First API Call

// List all your projects

const response = await fetch(

'https://your-instance.supabase.co/functions/v1/make-server-0532dd87/projects',

{

headers: {

'Authorization': 'Bearer YOUR_ACCESS_TOKEN',

'Content-Type': 'application/json'

}

}

);

const data = await response.json();

console.log(data.projects);

Step 3: Use the JavaScript SDK

The SDK provides a higher-level interface for embedding and controlling the 3D viewer programmatically.

// Install the SDK

npm install @simplio3d/sdk

// Initialise the viewer

import { Simplio3D } from '@simplio3d/sdk';

const viewer = new Simplio3D({

container: '#viewer-container',

projectId: 'YOUR_PROJECT_ID',

token: 'YOUR_SHARE_TOKEN',

});

await viewer.init();

What You Can Do

Embed 3D Viewers

Embed interactive 3D viewers with full camera control, lighting, and animation support.

Control Options

Programmatically set option values, listen for changes, and react to user selections.

Calculate Prices

Trigger price calculations and receive the result, including breakdowns per option.

Submit Forms

Submit quote requests programmatically with custom form data.

Full Documentation

For complete API endpoint reference and SDK method documentation, visit:

Augmented Reality (AR)

Let your customers see 3D models in their real environment using AR. Simplio3D supports two AR modes — Default (surface placement) and Wearable (virtual try-on) — on both iOS (AR Quick Look) and Android (Google Scene Viewer).

How it works: On desktop, users see a QR code modal to scan with their phone. On mobile, AR launches directly via the phone's native AR viewer. The QR code links to your shared viewer with ?ar=1, which auto-launches AR on the phone.

AR Modes

Default Mode (Surface Placement)

The standard AR experience. Users point their phone camera at a flat surface (floor, table, desk) and the 3D model is placed in their real environment. They can then walk around it, zoom in, and see it at real-world scale. Best for furniture, appliances, decor, packaging, and any freestanding product.

Wearable Mode (Virtual Try-On)

A body-tracking AR experience where the 3D model is attached to the user's body. The model follows the user's face, wrist, hand, or body as they move. Best for jewellery, watches, glasses, hats, masks, and accessories.

Wearable Mode Categories

CategoryTracking TargetExample Products
FaceTracks the user's face using front camera.Glasses, sunglasses, masks, face shields, headbands.
Wrist / HandTracks the user's wrist or hand.Watches, bracelets, rings, gloves, fitness bands.
BodyTracks the user's upper body / torso.Necklaces, scarves, ties, pendants, body armour.

Enabling AR

  1. 1Open your project and click the Settings (gear) icon.
  2. 2Go to the "Advanced" tab.
  3. 3Toggle "Enable AR (Augmented Reality)" ON.
  4. 4Choose the AR mode: Default (surface placement) or Wearable (try-on).
  5. 5For Wearable mode: select the tracking category (Face, Wrist/Hand, or Body).
  6. 6Optionally upload a .usdz file for native iOS AR Quick Look support.
  7. 7Toggle "Auto-launch on mobile" to automatically open AR when users scan the QR code.
  8. 8Toggle "AR Analytics" to track AR engagement metrics.
  9. 9Save your project — AR is now available in the shared viewer.

USDZ Files for iOS

iOS AR Quick Look works best with Apple's USDZ format. Without a USDZ file, iOS may attempt to use the GLB file, but results can be unreliable.

How to convert GLB to USDZ:
  • Apple Reality Converter (free, macOS only) — best quality
  • Blender — File > Export > Universal Scene Description (.usdz)
  • Online tools — Search "GLB to USDZ converter"

AR on Desktop (QR Code)

When a desktop user clicks the AR button in the floating tools toolbar:

  1. 1A polished QR code modal appears with an animated scanning line.
  2. 2The QR code encodes the share URL with ?ar=1 appended.
  3. 3Users scan with their phone camera (most phones support this natively).
  4. 4The link opens the shared viewer on their phone, which auto-launches AR.
  5. 5Users can also copy or open the link directly from the dialog.

AR Analytics

When AR Analytics is enabled, Simplio3D tracks the following events:

Dialog Opened

Desktop user opened the QR code modal

QR Code Copied

User copied the AR link to clipboard

iOS AR Launch

AR Quick Look opened on iPhone/iPad

Android AR Launch

Scene Viewer opened on Android

Auto-launch

AR triggered via ?ar=1 on mobile

Link Opened

User opened the AR link in a new tab

View analytics via the API: GET /projects/:id/ar-analytics

Requirements: AR requires your project to be shared (with a share link). The GLB model must be hosted at a publicly accessible HTTPS URL for Android Scene Viewer. Blob URLs (from the editor preview) will not work for Android AR.

Requests Overview

The Requests section in the dashboard is your central inbox for all form submissions, quote requests, and customer enquiries. It provides full lifecycle tracking, bulk actions, CSV export, email logs, and detailed views of every submission.

Request Lifecycle

Each request moves through a status pipeline. Use statuses to track progress from initial receipt to completion.

StatusMeaningNext Steps
NewJust received — not yet opened or read.Open the request to review details.
ReadOpened and reviewed by a team member.Start working on the quote or response.
In ProgressBeing actively worked on (quote being prepared, order being processed).Complete the work and respond.
CompletedFully handled — quote sent, order fulfilled, or enquiry answered.Optionally archive.
ArchivedMoved out of the active queue for record-keeping.Can be un-archived if needed.

Dashboard Overview

The Requests dashboard provides:

  • Stats cards at the top showing counts per status (New, Read, In Progress, Completed).
  • Tabs for filtering by status (All, New, In Progress, Completed, Archived).
  • Search by customer name, email, or project name.
  • Filters by project, date range, and status.
  • Bulk actions — select multiple requests and change status, archive, or delete in bulk.
  • CSV export — download all filtered requests as a CSV file for spreadsheets or CRM import.

Request Detail View

Click any request to open its detail view. The detail view contains:

SectionWhat It Shows
Contact InfoCustomer name, email, phone, company, and all form field responses.
ConfigurationEvery option the user selected — materials, colours, sizes, toggles — with the exact variant IDs and labels.
PricingThe total price at time of submission, with per-line breakdown showing each price block contribution.
ScreenshotsAuto-captured 3D screenshots of the configured product from different angles.
AttachmentsAny files the customer uploaded via file-upload form fields.
NotesInternal notes added by your team. Only visible to admin users, not customers.
Email LogsHistory of all emails sent related to this request (notifications, confirmations, follow-ups).

PDF Generation

Generate a professional PDF document from any request. The PDF includes your company branding (configured in Project Settings > PDF tab), the configuration breakdown, pricing, and screenshots. Use this for sales quotes, order confirmations, or production sheets.

Email Notifications

Receive email notifications whenever a new request is submitted:

  1. 1Go to the project editor > Project Settings > Email tab.
  2. 2Choose the SMTP driver: Default (Simplio3D servers), Custom SMTP, or SendGrid.
  3. 3Enter the notification email address(es) — comma-separated for multiple recipients.
  4. 4Customise the email subject and body templates using variables like {project_name}, {customer_name}, {total_price}.
  5. 5Click "Send Test Email" to verify delivery.

Email Logs Tab

Each request has an Email Logs tab that shows every email sent for that request: notification emails to your team, confirmation emails to the customer, and any follow-up emails. Each log entry shows the timestamp, recipient, subject, and delivery status.

Webhooks: For automated workflows, configure webhooks in Project Settings > Advanced tab. When a form is submitted, Simplio3D sends a POST request with the full submission data to your webhook URL. Use this to integrate with CRMs (HubSpot, Salesforce), Slack, Zapier, or custom backends.

Trial & Billing

Every new and existing Simplio3D account starts with a 30-day Pro trial. Here's how the trial works, what happens when it ends, and how to activate a paid plan.

The 30-day Pro trial

When you sign up — or the first time you log in after the trial rollout — your account is automatically enrolled in a 30-day Pro trial. During the trial you get:

  • 140 projects, 1,000 materials, 100 models
  • Full access to Configurator and Modular project types
  • SDK / API access using your API token
  • Working Share View links on all your projects
  • Every integration: WooCommerce, Shopify, AR, AI Assistant
Already a paying customer? If your account already has an active Stripe subscription, you stay on your current plan — the trial is only granted to accounts that have never paid.

When the trial ends — the 7-day grace period

Day 31-37 is a read-only grace period, designed so your customer-facing surfaces don't break the moment your trial expires:

  • Dashboard: you can still browse Projects, Materials, Assets, Requests — but saves, uploads, and edits return a 402 error.
  • Share View links: still live. Your customers can keep configuring and submitting forms.
  • SDK / API reads: still work, so headless storefronts keep functioning.
  • SDK / API writes: return 402.

After day 37 the account becomes hard-locked:

  • Dashboard pages: all locked except Billing, Profile, and Support.
  • SDK / API: every call returns HTTP 402 — even reads.
  • Share View links: replaced by a "Configurator unavailable" page.
  • Project editor: redirects to /dashboard/billing.

Your data is preserved — projects, materials, saved configurations, integrations, API tokens, and webhook deliveries all stay intact. The moment payment succeeds, every locked surface re-enables exactly as it was. SDK API tokens are auto-rotated after 90 days of inactivity; you re-issue a new one from Profile → API after activating.

Activating a paid plan

  1. 1Click the "Billing" entry in the dashboard sidebar (or open Profile → Subscription tab).
  2. 2Pick a plan: Pro monthly, Pro yearly, Starter monthly, or Starter yearly.
  3. 3Click "Activate plan". You will be redirected to Stripe Checkout.
  4. 4Complete payment with a credit card (Stripe handles 3D Secure and tax automatically).
  5. 5You will be redirected back to /dashboard/profile?billing=success. Simplio3D activates the account in the background — usually within a few seconds.
Paying mid-trial? Stripe applies your remaining trial days as the subscription trial period, so you are not charged until the trial would have ended naturally. Your trial days are never wasted.

Trial countdown banner

The dashboard shows a persistent banner with the remaining trial days. In the final 7 days the banner turns red and urgent. After payment is past due (failed retry on a paid plan) the banner also goes red. Click "Activate plan" (or "Update billing") to fix it.

Managing your subscription

After activation, the Billing page gives you:

  • Change plan: upgrade from Starter → Pro (instant). Downgrades validate your usage against the new plan's limits and refuse if you would exceed them.
  • Cancel: cancels at the end of the current billing period; your account stays active until that date.
  • Resume: undoes a pending cancellation before it takes effect.
  • Customer Portal: Stripe's own self-service portal for invoices, payment methods, and tax IDs.

Status reference

StatusAccess?Meaning
trialingFullInside the 30-day Pro trial.
activeFullPaid subscription is current.
soft_lockedRead-onlyDays 31-37 grace period. Dashboard browseable, share view live, writes blocked.
expiredLockedDay 38+ — fully blocked, share view shows "unavailable".
past_dueLockedLatest invoice failed; update payment method.
canceledLockedSubscription canceled past grace window.
Need a custom enterprise quote? Contact sales — Enterprise accounts unlock unlimited projects/materials/assets, Unique Price (Modular), SKU authoring, Shopify SKU-cart checkout, Save Configuration, and team seats.