Empower your luxury fashion store with an AI Virtual Fitting Room that delivers an authentic drape, lifts Add-to-Cart conversions by +20% to +35%, and completely protects your brand from biometric compliance liability under UK GDPR Article 9.
Virtro allows online shoppers to try on clothes directly on your product pages. It requires no 3D modeling, no CSV uploads, and no complex tagging. Just paste one tag into your store template, and our multimodal AI vision automatically handles the rest.
Virtro consists of a decoupled Web Component (<virtro-fitting-room>), a postMessage iframe bridge to embed.virtro.tech, and an Express/Node 24 microservice running Google Gemma 4 multimodal vision bouncers with dynamic GPU model routing (Fal FLUX.2 & Pruna).
No catalog imports needed. Gemma 4 analyzes clothing photos on first shopper click.
Customer biometrics run in isolated iframes; guest uploads purge automatically in 120m.
Transparent telemetry tracking try-on to cart conversion and £17.50 return savings.
Integrating Virtro into your boutique storefront takes two simple steps. No backend database setup or catalog sync is required upfront.
Add this lightweight module script inside your store theme's <head> or right before </body>:
<script type="module" src="https://cdn.virtro.tech/v1/virtro.js"></script>Position this tag right beneath or beside your boutique's primary "Add to Bag" button. The only required attribute is garment-image-url:
<virtro-fitting-room
garment-image-url="https://yourboutique.com/images/silk-midi-skirt.jpg"
title="Pleated Silk Midi Skirt"
price="£185.00"
product-url="https://yourboutique.com/products/pleated-silk-skirt"
accent-color="#10b981"
></virtro-fitting-room>Unlike legacy virtual try-on software that forces merchants to manually upload CSV spreadsheets, map 50 category fields, or configure 3D mesh assets, Virtro is Zero-Touch and AI-Autonomous.
No. Virtro’s multimodal vision engine (Google Gemma 4) inspects your product photo directly and classifies the garment autonomously.
garment-image-url (or image-url).skirt, tailored trousers, dress, or blouse.| Onboarding Method | Best For | Effort | Upfront Import Needed? |
|---|---|---|---|
| 1. Zero-Touch JIT (Recommended) | Most boutiques (Shopify, WooCommerce, Custom) | 5 Minutes | None (Caches on First Click) |
| 2. Batch CSV Pre-Warm | Catalogs with 500+ SKUs wanting pre-launch QA | 15 Minutes | Yes (Pre-flight Scanned) |
| 3. Real-Time Webhooks | Automated enterprise inventory sync | 1 Hour | Automated on Publish |
In your Shopify theme editor, open sections/main-product.liquid (or your custom product actions block) and paste the fitting room custom element:
<!-- Virtro Virtual Fitting Room Integration -->
<virtro-fitting-room
garment-image-url="{{ product.featured_image | image_url: width: 1200 }}"
title="{{ product.title | escape }}"
price="{{ product.price | money }}"
product-url="{{ shop.url }}{{ product.url }}"
accent-color="#171717"
></virtro-fitting-room>In your WordPress child theme, add this to woocommerce/single-product/add-to-cart/simple.php or hook it into woocommerce_after_add_to_cart_button:
<?php
// Hook into WooCommerce PDP
echo sprintf(
'<virtro-fitting-room garment-image-url="%s" title="%s" price="%s" product-url="%s" accent-color="#171717"></virtro-fitting-room>',
esc_url( wp_get_attachment_url( $product->get_image_id() ) ),
esc_attr( $product->get_name() ),
esc_attr( wc_price( $product->get_price() ) ),
esc_url( get_permalink() )
);
?>For boutiques scanning 500+ items upfront before marketing launch. With your merchant key, rate limits elevate to 250 requests/min so you can inspect an entire catalog in under 2 minutes:
import fs from 'fs';
import { parse } from 'csv-parse/sync';
const VIRTRO_API_URL = "https://api.virtro.tech/garment/inspect";
const MERCHANT_API_KEY = process.env.VIRTRO_API_KEY; // "vtr_live_..."
async function prewarmCatalog(csvFilePath) {
const fileContent = fs.readFileSync(csvFilePath, 'utf-8');
const records = parse(fileContent, { columns: true, skip_empty_lines: true });
console.log(`Starting pre-flight inspection for ${records.length} garments...`);
for (const item of records) {
const res = await fetch(VIRTRO_API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": MERCHANT_API_KEY
},
body: JSON.stringify({
image_url: item.image_url,
title: item.title
})
});
const data = await res.json();
console.log(`[PASS] ${item.title}: ${data.garment?.category} (${data.latency_ms}ms)`);
}
}
prewarmCatalog('./catalog.csv');Packaged as @virtro/embed-element. It renders an understated, luxury secondary action button with a sparkling diamond icon and opens the sandboxed cross-origin fitting room modal.
| Attribute | Type | Required | Description |
|---|---|---|---|
| garment-image-url | string (URL) | Required | High-resolution garment photograph (flat-lay or on-model). |
| title | string | Optional | Garment name displayed in modal header and closet summary. |
| price | string | Optional | Price string (e.g. "£185.00" or "$240") shown on try-on card. |
| product-url | string (URL) | Optional | Direct PDP permalink for shopper history re-engagement. |
| accent-color | hex color | Optional | Boutique primary accent color (defaults to neutral black #171717). |
For custom headless storefronts built with Next.js App Router, Hydrogen, or Remix:
npm install @virtro/react"use client";
import { VirtroFittingRoom } from "@virtro/react";
export function ProductFittingRoom({ product }: { product: any }) {
return (
<VirtroFittingRoom
imageUrl={product.thumbnail}
title={product.title}
price={product.price}
productUrl={`https://yourboutique.com/products/${product.handle}`}
accentColor="#171717"
/>
);
}Virtro proves its exact commercial lift. When you query your Retailer Insights API, you receive verified metrics measuring customer engagement, conversion lift, and reverse-logistics cost savings.
Supply your boutique merchant key in the X-Virtro-Key header to fetch 7-day, 30-day, or 90-day aggregated performance:
curl -X GET "https://api.virtro.tech/analytics/insights?period=30d" \
-H "X-Virtro-Key: vtr_live_your_boutique_key"{
"status": "success",
"retailer": "your-boutique",
"period": "30d",
"summary": {
"total_tryons": 1420,
"unique_shoppers": 985,
"conversion_lift_percent": 32.1,
"vto_attributed_orders": 248,
"vto_attributed_revenue_gbp": 21080.00,
"est_returns_avoided": 54,
"est_return_cost_savings_gbp": 945.00
}
}Calculate your store's projected revenue increase and return cost savings with Virtro.
Virtro protects GPU infrastructure and boutique budgets with multi-tier rate limiting and automated IP banning.
| Endpoint & Action | Standard Quota | Merchant Partner Quota | Abuse Protection Behavior |
|---|---|---|---|
| POST /garment/inspect | 30 req / min | 250 req / min (via x-api-key) | Allows rapid catalog ingestion while stopping bots |
| POST /process-vto (Burst) | 8 try-ons / min | 8 try-ons / min | Stops UI button mashing during GPU generation |
| POST /process-vto (Sustained) | 30 / hour (Guest) | 100 / hour (Account) | Incentivizes account creation while shielding costs |
| GET /vault/upload-url | 15 tickets / min | 15 tickets / min | Prevents automated image storage flooding |
If an IP address exceeds rate limits 5 times within 15 minutes, it is automatically written to virtro_engine.blocked_ips and blocked for 24 hours. Boutique administrators can immediately restore genuine shoppers in 1 click via POST /admin/unblock-ip.
Customer body photographs are classified as Special Category Biometric Data under UK GDPR Article 9. Virtro eliminates retailer liability through strict architectural isolation.
Photos exist strictly inside the cross-origin iframe (embed.virtro.tech). Store JavaScript cannot touch or inspect customer photos.
Unauthenticated guest uploads are strictly ephemeral and are permanently purged after 120 minutes by our automated janitor.
When a customer creates a Virtro Account, photos are stored in an encrypted biometric vault for seamless reuse across all Virtro boutiques.
Clear, transparent human rules governing customer uploads:
See how Virtro automatically identifies garment categories, fabrics, and fit routing without manual merchant tagging.
For luxury fashion conglomerates and high-security enterprise retailers requiring zero public cloud AI exposure.
Virtro supports deploying the vision inspection engine natively using Google Gemma 4 (26B) on dedicated single-tenant A100 or dual L4 nodes inside your own corporate cloud perimeter (GCP VPC, AWS PrivateLink, or Azure Enclave).
https://api.virtro.tech/process-vtoExecutes the neural virtual try-on pipeline combining the subject photo and the garment reference.
{
"model_image_url": "https://storage.virtro.tech/biometric-closet/guest/user_abc123.jpg",
"garment_image_url": "https://yourboutique.com/images/silk-skirt.jpg",
"garment_category": "lower_body",
"garment_description": "black pleated silk midi skirt"
}https://api.virtro.tech/garment/inspectPre-flight multimodal vision bouncer. Returns garment category, fabric description, and suitability.
{
"image_url": "https://yourboutique.com/images/wool-blazer.jpg",
"title": "Tailored Double-Breasted Wool Blazer"
}https://api.virtro.tech/vault/upload-urlGenerates a presigned direct binary upload ticket to private Supabase storage.
{
"status": "success",
"upload_url": "https://supabase.virtro.tech/storage/v1/upload/resumable/...",
"file_path": "guest/session_xyz987.jpg",
"expires_in_seconds": 900
}https://api.virtro.tech/admin/unblock-ipAllows store administrators to remove an IP address from the automated abuse lockout list.
{
"ip_address": "82.165.197.1"
}During our private beta phase, API keys (vtr_live_...) are provisioned directly by Virtro Tech engineering.