Full 3D model pipeline — GLB/USDZ for visual preview, STL/OBJ/3MF for print-on-demand. Bidirectional sync across Shopify, Xano, Cloudflare R2, and Webflow CMS.
| Feature | Non-Profit | Pro | Plus | 3D |
|---|---|---|---|---|
| Products | Up to 500 | Unlimited | Unlimited | Unlimited |
| Markets | Up to 5 | All markets | All markets | All markets |
| Webflow CMS sync | — | Bi-directional | Bi-directional | Bi-directional |
| 3D model pipeline (GLB/USDZ/STL/OBJ/3MF) | — | — | — | Full pipeline |
| Sync processing | Inline | Inline | Background async | Background async |
| Infrastructure | Shared | Shared | Dedicated & isolated | Dedicated & isolated |
| EU Omnibus compliance | Included | Included | Included | Included |
| Support | Priority + dedicated | Priority + dedicated |
PIM Sync embeds these viewers directly into your Webflow CMS RichText fields. Try them below — paste any model URL to preview.
Add this one script to your Webflow site's Custom Code → Head Code. The STL viewer iframe is self-contained — no extra scripts needed.
Google's <model-viewer> web component. Interactive 3D preview with auto-rotate, orbit controls, and AR on mobile.
<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.5.0/model-viewer.min.js"></script>
Self-hosted Three.js viewer (r147) loaded via iframe. Auto-rotate, orbit controls, grey material, auto-fit bounding box. No extra scripts needed.
pim-sync.pages.dev/stl-viewer.html?url=YOUR_FILE_URL
PIM Sync auto-creates these fields when scaffolding your Webflow collection.
Shopify's MODEL_3D API enforces strict limits and only accepts GLB/USDZ. PIM Sync's R2-backed pipeline lifts those restrictions for headless and Webflow delivery — while keeping CORS locked down.
| Shopify Native (MODEL_3D) | PIM Sync via R2 CDN | |
|---|---|---|
| Accepted formats | GLB, USDZ only | GLB, USDZ, STL, OBJ, 3MF |
| Max file size | 500 MB per model | 5 GB per object (R2 single PUT); 5 TB via multipart |
| Max product media | 250 media items total (images + video + 3D combined) | Unlimited — each file is an R2 object |
| Max variants × images | 2,000 variants; 1 media per variant | Unlimited — Webflow CMS fields are per-product |
| 3D viewer delivery | Shopify-hosted <model-viewer> (PDP only, Shopify theme) | Any origin — Webflow, headless, custom storefront |
| Print file hosting | Not supported — STL/OBJ/3MF rejected by API | Full hosting on R2 with download URL |
Cloudflare R2 — CORS rules scoped per bucket. Only allowed origins can fetch 3D files directly; all others are blocked. This prevents hotlinking and unauthorized embedding.
Shopify CDN — Serves MODEL_3D assets from cdn.shopify.com with permissive CORS (Access-Control-Allow-Origin: *). Anyone who has the URL can embed the file.
PIM Sync STL Viewer — Self-hosted iframe at pim-sync.pages.dev. The iframe fetches the R2 URL server-side, so the end-user's browser never makes a cross-origin request to R2. This isolates the 3D rendering sandbox from your main site DOM.
Shopify PDP — GLB/USDZ only. Rendered in Shopify's native <model-viewer> on product detail pages. AR supported on mobile. Files served from Shopify CDN (public URL, no auth).
Webflow CMS — All 5 formats (GLB/USDZ/STL/OBJ/3MF). RichText fields embed viewers; PlainText fields expose download URLs. CORS controlled by R2 bucket policy.
Headless / Custom — R2 URLs are accessible to any origin you whitelist. Use the 3D Model URL or 3D Print File URL fields from Xano's API to build custom viewers.
Security benefit — R2 bucket CORS + Cloudflare WAF means you control who can embed or download your 3D assets. Unlike Shopify's public CDN URLs, R2 URLs can be restricted to your domains only.
The 3D plan completes the full round-trip: upload a model anywhere, and it syncs everywhere.
Shopify Admin (upload GLB/USDZ)
│ Pull 3D from Shopify
▼
Xano Table 166 (metadata: src, src_r2, alt, position)
│ Upload to R2
▼
Cloudflare R2 (assets/3d/{handle}/{file}.glb)
│
├──▶ Push Images to Shopify ──▶ Shopify PDP (<model-viewer> native + AR)
│
└──▶ Webflow Sync ──▶ Webflow CMS
├─ 3D Model Viewer (RichText: <model-viewer>)
├─ 3D Print File Viewer (RichText: Three.js iframe)
└─ URL + Alt Text fields