Title: Dresium – AI Virtual Try-On &amp; Fitting Room for WooCommerce
Author: dresium
Published: <strong>16 April 2026</strong>
Last modified: 9 Oktober 2026

---

Cari plugin

![](https://ps.w.org/dresium/assets/banner-772x250.png?rev=3702036)

![](https://ps.w.org/dresium/assets/icon-256x256.png?rev=3508341)

# Dresium – AI Virtual Try-On & Fitting Room for WooCommerce

 Oleh [dresium](https://profiles.wordpress.org/dresium/)

[Unduh](https://downloads.wordpress.org/plugin/dresium.3.4.12.zip)

 * [Detail](https://id.wordpress.org/plugins/dresium/#description)
 * [Ulasan](https://id.wordpress.org/plugins/dresium/#reviews)
 *  [Instalasi](https://id.wordpress.org/plugins/dresium/#installation)
 * [Pengembangan](https://id.wordpress.org/plugins/dresium/#developers)

 [Bantuan](https://wordpress.org/support/plugin/dresium/)

## Deskripsi

**Dresium is an AI virtual try-on and virtual fitting room for WooCommerce fashion
stores.** Shoppers upload one photo and instantly see themselves wearing your clothes,
dresses and outfits, right on the product page. No app, no account, no setup for
your customers.

**Try the full plugin for free.** Install, click one button and you get **1,000 
welcome credits** instantly — enough to test every feature on your real store without
entering a credit card. Credits are consumed only when a real shopper generates 
a virtual try-on; nothing is charged for failed generations or for your own testing
clicks that don’t produce an image.

Let your customers try before they buy: more confidence at checkout, higher conversion
rates and fewer returns caused by “it didn’t look like that on me”.

#### Why fashion stores use Dresium

 * **Boost conversions** — shoppers see the product on their own body, not just 
   on a model
 * **Cut returns** — fewer surprises on fit and look means fewer returned orders
 * **Free for your customers** — the Try-On button works for guest visitors and 
   logged-in users alike, no signup required
 * **Measure real impact** — built-in analytics show try-ons, purchases, conversion
   rate and revenue attributed to the virtual try-on
 * **Pay only for results** — you (the merchant) pay per successful try-on generation;
   failed generations are refunded automatically

#### How the AI virtual try-on works

 1. The shopper clicks “Try it on” on a product page
 2. They upload a photo, take one with the camera or pick a sample model
 3. Dresium’s AI generates a realistic image of the shopper wearing that product in
    seconds
 4. They can zoom, save the result to their gallery or share it on WhatsApp, then add
    to cart

#### Key features

 * **Zero-setup virtual fitting room** — the Try-On button is injected automatically
   into WooCommerce product pages
 * **Three integration methods** — automatic hook (default), Gutenberg block `Dresium
   Try-On CTA`, or shortcode `[dresium_tryon]`
 * **Analytics dashboard** — real-time views, try-ons, purchases, conversion rate
   and attributed revenue with 7/30/90-day filters
 * **Order attribution** — automatic tracking of purchases and refunds within a 
   7-day attribution window from the try-on
 * **Full appearance customization** — button size, color palette presets, custom
   colors, typography, border radius, CTA text override
 * **Category gating** — show the virtual try-on only on the categories you choose(
   dresses, shirts, jackets, etc.)
 * **Whitelabel branding and AI video try-on** — unlocked when your credit balance
   reaches the whitelabel threshold (€100 by default)
 * **Auto-topup** — keeps the service always available with no interruptions
 * **GDPR-ready** — Privacy Policy, Data Processing Agreement (GDPR Article 28) 
   and Terms of Service signature flow inside the WooCommerce settings
 * **Multi-language storefront** — Italian, English, French, German and Spanish 
   out of the box
 * **Works with your builder and theme** — Elementor, Divi, WPBakery, Oxygen, Bricks
   and themes such as Storefront, Astra, Kadence, Woodmart and Flatsome
 * **HPOS compatible** — full support for WooCommerce High-Performance Order Storage

#### Pricing

Dresium is free to install. You pay only for the AI generations your customers actually
produce (pay-per-use), with credits deposited from the Billing tab. The Billing 
screen always shows the up-to-date pricing before you top up. See the FAQ for details
on pricing and currency.

#### Getting started

 1. Install and activate the plugin (WooCommerce must also be active)
 2. Complete the B2B onboarding form in WooCommerce > Settings > Dresium (registers
    your store on Dresium and provisions an HMAC-secured API key)
 3. Sign the legal documents (Privacy, DPA, Terms) from the Legal tab — required before
    the Try-On button becomes visible to your customers
 4. Configure appearance, categories and advanced settings
 5. Deposit credits from the Billing tab (optional auto-topup)
 6. The virtual try-on button automatically appears on product pages within the enabled
    categories

#### Requirements

 * WordPress 6.6 or higher
 * WooCommerce 9.9 or higher
 * PHP 7.4 or higher
 * SSL/HTTPS required (Dresium API is HTTPS-only)

#### Third-Party Services

This plugin relies on the following external services:

**Dresium API (Virtual Try-On Service)**

 * **Service Provider:** Dresium / EasyAdv S.r.l.
 * **Purpose:** AI-powered virtual try-on image generation
 * **When data is sent:** Each time a customer clicks “Try it on” and uploads a 
   photo
 * **Data transmitted:** Customer photo (for AI processing), product images (for
   overlay generation), your store domain and merchant ID (for HMAC authentication)
 * **Data handling:** Photos are processed in real-time and not permanently stored
   unless the customer explicitly saves them to their personal gallery. Photos are
   never shared with third parties or used for AI training. Dresium acts as data
   processor and uses the AI services listed below as sub-processors.
 * **Data Processing Agreement:** Merchants must accept a DPA before the Try-On 
   button is exposed to customers, establishing Dresium as data processor under 
   GDPR Article 28. The signature flow is inside the plugin (Legal tab).
 * [Terms of Service](https://dresium.com/en/terms-and-conditions/)
 * [Privacy Policy](https://dresium.com/en/privacy-policy/)
 * [Data Processing Agreement](https://dresium.com/en/dpa/)

**Gemini AI by Google (AI Sub-Processor)**

 * **Service Provider:** Google LLC
 * **Purpose:** AI image generation for virtual try-on processing
 * **When data is sent:** When Dresium API processes a virtual try-on request, it
   may route image generation to Gemini AI
 * **Data transmitted:** Customer photos and product images are transmitted via 
   Dresium servers to Google for AI processing
 * **Data handling:** Data is processed by Google solely for image generation. Dresium
   maintains data processor responsibilities.
 * [Gemini API Terms of Service](https://ai.google.dev/gemini-api/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

**Grok AI by xAI (AI Sub-Processor)**

 * **Service Provider:** xAI Corp.
 * **Purpose:** AI image and video generation for virtual try-on processing
 * **When data is sent:** When Dresium API processes a virtual try-on request, it
   may route image or video generation to Grok AI
 * **Data transmitted:** Customer photos and product images are transmitted via 
   Dresium servers to xAI for AI processing
 * **Data handling:** Data is processed by xAI solely for image and video generation.
   Dresium maintains data processor responsibilities.
 * [Terms of Service](https://x.ai/legal/terms-of-service)
 * [Privacy Policy](https://x.ai/legal/privacy-policy)

**Claude AI by Anthropic (AI Sub-Processor)**

 * **Service Provider:** Anthropic PBC
 * **Purpose:** AI-powered customer support agent
 * **When data is sent:** When a user interacts with the Dresium support chatbot
 * **Data transmitted:** Chat messages and conversation context are transmitted 
   to Anthropic for response generation
 * **Data handling:** Data is processed by Anthropic solely for customer support
   purposes. No customer photos are sent to this service.
 * [Terms of Service](https://www.anthropic.com/legal/consumer-terms)
 * [Privacy Policy](https://www.anthropic.com/legal/privacy)

**WhatsApp Sharing (Social Sharing Feature)**

 * **Service Provider:** WhatsApp LLC (Meta Platforms, Inc.)
 * **Purpose:** Allow users to share their virtual try-on results via WhatsApp
 * **When data is sent:** Only when a user explicitly clicks the “Share on WhatsApp”
   button
 * **Data transmitted:** A sharing URL is opened via the WhatsApp API (api.whatsapp.
   com) – no image data is sent directly, only a link to the shared page
 * [WhatsApp Terms of Service](https://www.whatsapp.com/legal/terms-of-service)
 * [WhatsApp Privacy Policy](https://www.whatsapp.com/legal/privacy-policy)

## Tangkapan Layar

[⌊Dresium admin home — overview of your AI virtual try-on with key metrics and quick
actions.⌉⌊Dresium admin home — overview of your AI virtual try-on with key metrics
and quick actions.⌉[

Dresium admin home — overview of your AI virtual try-on with key metrics and quick
actions.

[⌊Analytics — try-ons, purchases, conversion rate and revenue attributed to the 
virtual try-on, with 7/30/90-day filters.⌉⌊Analytics — try-ons, purchases, conversion
rate and revenue attributed to the virtual try-on, with 7/30/90-day filters.⌉[

Analytics — try-ons, purchases, conversion rate and revenue attributed to the virtual
try-on, with 7/30/90-day filters.

[⌊Main settings — general configuration of the Dresium virtual try-on plugin.⌉⌊Main
settings — general configuration of the Dresium virtual try-on plugin.⌉[

Main settings — general configuration of the Dresium virtual try-on plugin.

[⌊Product Page — the “Try This On” button is visible to guest users (unregistered
users) on the product page.⌉⌊Product Page — the “Try This On” button is visible 
to guest users (unregistered users) on the product page.⌉[

Product Page — the “Try This On” button is visible to guest users (unregistered 
users) on the product page.

[⌊Step 1 — in this step, you can upload your photo.⌉⌊Step 1 — in this step, you 
can upload your photo.⌉[

Step 1 — in this step, you can upload your photo.

[⌊Step 2 — in this step, you can proceed with the try-on by confirming the photo
you provided to the e-commerce site.⌉⌊Step 2 — in this step, you can proceed with
the try-on by confirming the photo you provided to the e-commerce site.⌉[

Step 2 — in this step, you can proceed with the try-on by confirming the photo you
provided to the e-commerce site.

[⌊Step 3 — in this step, you can view and share the try-on results.⌉⌊Step 3 — in
this step, you can view and share the try-on results.⌉[

Step 3 — in this step, you can view and share the try-on results.

## Blok

Plugin ini menyediakan 1 blok.

 *   Dresium Try-On CTA Displays the Dresium AI Try-On call-to-action button on 
   a product page.

## Instalasi

 1. Go to Plugins > Add New in your WordPress admin
 2. Search for “Dresium”
 3. Click “Install Now” and then “Activate”
 4. Ensure WooCommerce is installed and active
 5. Go to WooCommerce > Settings > Dresium and complete the onboarding form
 6. Sign the legal documents in the Legal tab
 7. Deposit initial credits from the Billing tab (or enable auto-topup)

## Tanya Jawab

### How does virtual try-on work in WooCommerce?

Dresium adds a “Try it on” button to your product pages. The shopper uploads a photo
and the AI generates an image of them wearing the product. Everything happens on
your store, with no redirect to external sites.

### Is it a virtual fitting room for clothes?

Yes. Dresium works as an AI virtual fitting room for clothing: t-shirts, shirts,
jackets, dresses, pants, hoodies and more. Enable the Try-On button only on your
fashion categories from the Categories tab.

### Do my customers need to register on Dresium?

No. Dresium 3.x is a B2B service: you (the merchant) buy credits, your customers
use the virtual try-on for free with no signup required. Guest access is enabled
by default.

### How much does a try-on cost?

The plugin is free to install. Each successful image generation consumes credits
from your Dresium balance, and failed generations are refunded automatically. Pricing
is dynamic: the credit price, credits per generation and minimum recharge are configured
server-side by Dresium and fetched by the plugin every hour. The Billing tab always
shows the current cost per generation that will apply to your next top-up. Existing
credits are always spent at the rate contracted at purchase — future pricing changes
never invalidate deposits already made.

### Which currency are credits billed in?

Credits are billed in EUR (€) via secure Stripe checkout. Merchants outside the 
Eurozone see the checkout amount in EUR; the actual charge on your card is in your
local currency at your bank’s daily exchange rate (banks typically add a 0–3% FX
fee depending on the card issuer; fintech cards such as Revolut, Wise or N26 usually
have 0% FX fee).

### Does virtual try-on really reduce returns?

Shoppers see the product on themselves before buying, which removes many “it looked
different” returns. The Analytics dashboard tracks purchases and refunds attributed
to try-ons, so you can measure the effect on your own store.

### Does it work with any theme?

Dresium is designed to work with most WooCommerce themes. It has been tested with
Storefront, Astra, Kadence, Woodmart and Flatsome. The button can be positioned 
via three integration methods: automatic hook, Gutenberg block, or the `[dresium_tryon]`
shortcode.

### How do I add the Try-On button on a theme with a page builder (Divi, Elementor, WPBakery)?

Themes built with page builders often replace the WooCommerce product page layout
with their own, which prevents the automatic hook from firing. In this case, add
the button manually where you want it inside the builder:

 * Divi: add a “Text” or “Code” module and paste the shortcode `[dresium_tryon]`
 * Elementor: add the “Shortcode” widget and paste `[dresium_tryon]`
 * WPBakery: add a generic shortcode element with `[dresium_tryon]`
 * Gutenberg / Block editor: search for the “Dresium Try-On CTA” block

The shortcode reads the current product from the WooCommerce loop, so no parameters
are required. When you use the shortcode or the Gutenberg block, we recommend also
disabling the auto-injection in “WooCommerce > Settings > Dresium > Advanced > Auto-
injection” to avoid duplicate buttons on themes that partially respect the WooCommerce
hooks.

### Can I use Dresium on platforms other than WooCommerce?

Yes, Dresium is available as an official Shopify app: https://apps.shopify.com/dresium.
For other e-commerce platforms (BigCommerce, Magento, custom systems) a universal
JavaScript SDK is on the roadmap. Contact support@dresium.com if you want to be 
notified when it is released.

### Is it compatible with HPOS?

Yes, Dresium is fully compatible with WooCommerce High-Performance Order Storage(
HPOS).

### How are customer photos handled?

Photos are transmitted over HTTPS to Dresium servers for AI processing. They are
not permanently stored unless the customer explicitly saves them. Photos are never
shared with third parties or used for AI training. See the Data Processing Agreement
for full details.

### Is it GDPR compliant?

Yes. Before the Try-On button is exposed to customers, you must sign a Data Processing
Agreement inside the Legal tab (GDPR Article 28). If the DPA is not signed, the 
button stays invisible on the storefront and no data is transmitted. Customers can
request deletion of their photos at any time.

### How does the attribution work?

When a customer generates a try-on and purchases the same product within 7 days,
the sale is attributed to Dresium in the Analytics dashboard. Refunds within the
same window are subtracted from attributed revenue. Guest purchases (no customer_id)
are not attributed.

## Ulasan

Belum ada ulasan untuk plugin ini.

## Kontributor & Pengembang

“Dresium – AI Virtual Try-On & Fitting Room for WooCommerce” adalah perangkat lunak
open source. Berikut ini mereka yang sudah berkontribusi pada plugin ini.

Kontributor

 *   [ dresium ](https://profiles.wordpress.org/dresium/)
 *   [ Riccardo Guerrera ](https://profiles.wordpress.org/rgwebdev/)

[Terjemahkan “Dresium – AI Virtual Try-On & Fitting Room for WooCommerce” dalam bahasa Anda.](https://translate.wordpress.org/projects/wp-plugins/dresium)

### Tertarik mengembangkan?

[Lihat kode](https://plugins.trac.wordpress.org/browser/dresium/), periksa [repositori SVN ](https://plugins.svn.wordpress.org/dresium/),
atau mendaftar ke [log pengembangan](https://plugins.trac.wordpress.org/log/dresium/)
melalui [RSS](https://plugins.trac.wordpress.org/log/dresium/?limit=100&mode=stop_on_copy&format=rss).

## Log Perubahan

#### 3.4.12

 * **Changed: FAQ updated — Shopify app is now live, no longer “coming soon”** —
   the FAQ answer “Can I use Dresium on platforms other than WooCommerce?” previously
   said the Shopify app was coming soon. The Dresium Shopify app is now officially
   published on the Shopify App Store (https://apps.shopify.com/dresium), and the
   FAQ has been updated accordingly.

#### 3.4.11

 * **Fixed: residual camera icon and “No photos uploaded” text during the first 
   photo upload** — follow-up to 3.4.10. The two “Upload your first photo” / “Or
   take a selfie” buttons were hidden during the upload procedure, but the camera
   icon and the “No photos uploaded” text in the same container were still visible
   on top of the grid loading the newly uploaded photo. Now the entire empty-state
   block (icon + text + buttons) is hidden together while the upload is in progress.

#### 3.4.10

 * **Fixed: no more flash of the empty-state buttons when confirming the crop of
   the first photo** — follow-up to the fix in 3.4.9. The “Upload your first photo”
   and “Or take a selfie” buttons are now hidden as soon as the user clicks either
   one of them, stay hidden through the crop step, and are restored only if the 
   user cancels the procedure (closing the file picker without choosing a file, 
   closing the crop modal with the X / backdrop / Cancel, denying webcam access,
   or canceling the webcam dialog). This eliminates the brief visual flicker between
   crop-confirm and the newly uploaded photo tile appearing in the grid.
 * Internal: CropModal.open now accepts a third argument `onCancel` that fires when
   the user closes the crop modal without confirming. Previously there was no way
   to tell apart “crop confirmed” from “crop cancelled” at the call site.

#### 3.4.9

 * **Fixed: hover feedback restored on the empty-state photo upload buttons** — 
   the “Upload your first photo” and “Or take a selfie” buttons in the empty Photos
   tab had an override that forced their background to stay white on hover, making
   them look non-interactive. They now use the standard secondary-button hover (`#
   f9fafb`) consistent with the rest of the Try-On UI.
 * **Fixed: flash of empty-state buttons after cropping and confirming the first
   photo** — after confirming the crop of the first uploaded photo, there was a 
   brief visual flicker where the “Upload your first photo” and “Or take a selfie”
   buttons appeared alongside the newly uploaded photo tile. The empty-state container
   is now hidden immediately when the photo grid starts loading, so the user never
   sees the old empty UI during the reload.

#### 3.4.8

 * **Improved: clearer feedback when a photo is already the default** — in the Setting
   modal, after a customer uploads their first photo (which is auto-selected as 
   the default), the “Select this photo” button becomes disabled with no explanation,
   leaving the user wondering what to do. The button label now switches to “Photo
   selected” (localized in IT/EN/FR/DE/ES) whenever it is disabled, making the state
   obvious. When another photo is clicked, the label switches back to the original“
   Select this photo” and the button becomes clickable again.

#### 3.4.7

 * **Fixed: Try-On modals now actually get localized when Shadow DOM isolation is
   enabled** — this was the root cause of all residual Italian strings reported 
   on non-Italian storefronts. When Shadow DOM CSS isolation is enabled (available
   since 3.0.14, now the default on new installs since 3.4.1), the Try-On dialog
   markup is moved from the light DOM into the `<dresium-tryon-app>` custom element’s
   Shadow DOM. The `hydrateI18n()` function used `document.querySelectorAll('[data-
   i18n]')` which does NOT traverse Shadow DOM, so every `data-i18n` element inside
   the dialog markup (161 elements per the test instance — size modal title, setting
   sidebar labels, step headers, all buttons, etc.) kept the fallback Italian text
   from the PHP template regardless of the browser locale. `hydrateI18n()` now explicitly
   recurses into every `shadowRoot` under the scope. All i18n-eligible elements 
   are now properly translated at page load.

#### 3.4.6

 * **Fixed: Try-On storefront UI now ALWAYS follows the browser language, not the
   store language** — previous versions prioritized the WordPress site locale (set
   by the merchant) over the shopper’s browser locale on WooCommerce, so a shopper
   with an English browser visiting an Italian store would see Italian strings in
   the Try-On widget (e.g. “Qual è la tua taglia?” instead of “What’s your size?”).
   The locale picker is now `navigator.language → navigator.languages[] → data-locale
   → html[lang]` on both WooCommerce and Shopify, matching the original design intent
   and the behavior shoppers expect. The site locale remains as a secondary fallback
   only if the shopper’s browser language is not one of the five supported languages(
   IT/EN/FR/DE/ES).
 * Internal: both `pickI18nDict()` (UI strings) and `pickLang()` (curiosities language)
   now share the same browser-first priority order.

#### 3.4.5

 * **Fixed: “Sign in to continue” overlay now localized** — the overlay shown to
   guest shoppers who open the Try-On settings/gallery (title, description and “
   Sign in” button) was hardcoded in Italian regardless of the browser locale. Now
   fully localized in IT/EN/FR/DE/ES.
 * **Fixed: fullscreen gallery arrow buttons now read correctly in screen readers**—
   the “Previous” / “Next” ARIA labels on the zoom modal navigation were set to 
   Italian at creation time and only replaced on page load (not when the buttons
   were newly created). Now set to the user’s browser language from the start.
 * **Fixed: “My Dresium look” share title and “Copy the link” prompt now localized**—
   the title passed to the native Web Share API and the fallback copy-link prompt
   were in Italian. Now in the user’s language.
 * **Fixed: “Checking…” transient tooltip on the Animate button** — brief tooltip
   during eligibility check was in Italian. Now localized.
 * **Fixed: “Generated outfit” alt text on gallery tiles** — now follows the browser
   language instead of being hardcoded in English, improving screen-reader experience
   for non-English shoppers.

#### 3.4.4

 * **Fixed: more residual Italian strings localized** — follow-up to 3.4.3. Fixed
   the video badges in the gallery (“Generate video”, “Generating…”, “Play video”,“
   Stop video”) that remained in Italian regardless of the browser locale, the “
   Saved” confirmation on Setting dropdowns, and the “Preset occasion” / “Close”
   ARIA labels in several modals that lacked a client-side translation attribute.
   All strings are now covered in IT/EN/FR/DE/ES.

#### 3.4.3

 * **Fixed: storefront UI no longer shows a mix of languages** — several hard-coded
   Italian strings in the gallery and share flows (button titles “Delete / View /
   Share / Open fullscreen”, “Error: …”, “Network error”, Instagram share instructions)
   were previously shown in Italian regardless of the browser language. These strings
   are now fully localized in all 5 supported languages (IT/EN/FR/DE/ES).
 * **Fixed: race condition in client-side locale detection** — if the i18n bundle
   wasn’t yet loaded when the first translation lookup happened, the detector cached
   an empty dictionary and every subsequent string fell back to the hard-coded fallback(
   always Italian) for the rest of the session. The cache now only stores a non-
   empty dictionary.
 * **Fixed: automatic English fallback when a key is missing** — if a translation
   key is missing from the user’s locale (e.g. French), the lookup now falls back
   to English before falling back to the hard-coded Italian fallback in the source.
   Previously French/German/Spanish shoppers would see occasional Italian strings
   scattered through the UI.
 * **Added: missing “common.\*” translation keys** — delete, view, share, fullscreen,
   error, unknown, networkError, networkErrorReload, share.instagramTitle, share.
   instagramInstructions — in all 5 languages.

#### 3.4.2

 * **Fixed: Try-On button now appears out of the box after activation** — on fresh
   installs with the default category configuration, clicking “Activate the Try-
   On button” now immediately shows the button on all product pages, without requiring
   manual category selection. Previously the storefront kept the button hidden until
   at least one category was explicitly saved.
 * **Fixed: your Style preferences are now reflected everywhere automatically** —
   the preferences you set in Settings > Style (scene, action, time of day, weather,
   expression, framing) are now pre-populated in the Try-On wizard’s “Personalize
   scene” step without requiring a Save click first. Changes auto-save on every 
   dropdown change (debounced), synced to both your local browser and your server
   account.
 * **Fixed: “Claim 1,000 free credits” flow no longer loops after a server-side 
   reset** — an edge case where clicking the claim button could ping-pong between“
   already claimed” and “please claim” has been resolved. The claim rate limit was
   also relaxed from 1/5min to 5/5min per IP to accommodate normal retries.
 * **Changed: legal setup is now a soft, dismissible reminder** — the Legal tab 
   banner no longer says “try-on generation is blocked”; it now explains that signing
   Privacy, DPA and Terms is optional but recommended for GDPR compliance. The reminder
   is shown as a dismissible card on the Dresium admin home (not as a WordPress 
   admin notice) and can be hidden for 30 days.
 * **Changed: Categories tab shows the current state clearly** — the Categories 
   tab now displays an info banner explaining “Try-On is shown on all categories
   by default” with all categories pre-selected. Uncheck specific categories and
   save to limit the Try-On button to a subset.
 * **Added: “Reactivation needed” banner on the Settings tabs** — if your Dresium
   account was reset or deleted server-side, the Settings tabs now show a clear 
   path back to the Dashboard with a one-click reactivation CTA, instead of raw “
   Cannot load…” error messages.
 * **Improved: Try-On activation card UI** — removed the 720px max-width constraint
   so the activation card uses the full admin width on wide screens. Fixed button
   overflow and the loss of rounded corners on focus/active states; buttons no longer
   inherit WordPress admin’s default button border.
 * **Improved: copy on the free-credits CTA** — reworded for clarity (“no financial
   commitment, no card required”) and expanded to a short narrative pitch instead
   of a terse button label.
 * **Improved: full translations in all 6 locales** — Italian, English (US / GB),
   French, German and Spanish retranslated for all v3.4.x strings (legal tab, activation
   card, reactivation banner, info banners, Settings style preferences).
 * Internal: diagnostic endpoint `opcache-reset.php` (admin-only) added for troubleshooting
   merchant HMAC state on live servers where WP-CLI is unavailable. Reverted a shadow-
   DOM CSS bundle change that caused a regression in a subset of themes; v3.4.1 
   shadow-DOM behavior is restored. A developer-only “Reset locale” button is also
   available in the admin home when `DRESIUM_DEV_MODE` is defined in `wp-config.
   php`.

#### 3.4.1

 * **Added: “Dashboard” quick link in the Plugins list** — a direct shortcut to 
   the Dresium admin landing right from the “Installed plugins” row, next to Settings
   and Deactivate.
 * **Added: one-click Try-On activation on your product pages** — a dedicated card
   on the Dresium admin page lets you turn on the Try-On button on your WooCommerce
   products with a single click. Works on both classic WooCommerce templates and
   modern block themes (Gutenberg / Full Site Editing). You can disable the automatic
   placement in one click if you prefer the shortcode or Gutenberg block.
 * **Changed: automatic Try-On button is now OFF by default on new installs** — 
   nothing appears on your storefront until you explicitly activate it. Existing
   installs keep their current behavior unchanged.
 * **Changed: readme highlights the 1,000 free credits** — the plugin page on WordPress.
   org now makes clear that the full plugin is testable for free with 1,000 welcome
   credits.

#### 3.4.0

 * **Added: 1,000 free credits to try the plugin** — the first time you open the
   Dresium admin page, a welcome box offers 1,000 free credits with a single click.
   Credits are added immediately, no payment or billing setup required. They are
   consumed only when a shopper actually generates a virtual try-on on your storefront.
 * **Added: video tutorial in the admin landing** — a 2-minute embedded walkthrough
   shows exactly what shoppers experience and how to configure the plugin.
 * **Changed: legal acceptance is now optional** — the “Privacy / DPA / Terms” banner
   is no longer blocking. Try-On works out of the box; signing the GDPR legal pack
   is a one-click reminder you can dismiss for 30 days from the Dresium admin page.
   This mirrors how our Shopify app behaves, removes friction for new installs, 
   and leaves the data-controller responsibility with the merchant.
 * **Changed: no more forced onboarding redirect** — opening WooCommerce  Settings
   Dresium no longer forces a redirect to a mandatory onboarding form. The merchant
   account is created automatically the first time you claim the 1,000 free credits.
 * **Changed: storefront no longer hidden when legal is unsigned** — the Try-On 
   button now appears on your product pages even if you haven’t signed Privacy/DPA/
   Terms yet.
 * Internal: client support for the new /woocommerce/claim-free-credits endpoint.

#### 3.3.1

 * **Fixed: event presets now consistently generate the matching scene** — tapping“
   First date”, “Fashion show”, “Job interview” or “Wedding” sometimes produced 
   an unrelated background (e.g. a fashion-show preset generated a beach scene) 
   because any saved Style defaults (scene/time/weather/action) could compete with
   the event preset at generation time. The event preset now always wins over saved
   custom scene fields; if no event preset is selected, saved defaults keep working
   exactly as before.

#### 3.3.0

 * **Added: body-shape picker before each try-on** — shoppers choose an approximate
   size (XS to XXL) with a visual silhouette before generating. This hint helps 
   the AI render body proportions more accurately. Visually a 2×3 grid of silhouette
   thumbnails; one tap and continue. The chosen size is remembered in the browser
   for subsequent try-ons but can be changed any time. **Does not change which product
   variant goes into the cart** — that’s still the variant selected on the product
   page.
 * **Removed: redundant “Build” dropdown from Custom Scene and Guest wizard** — 
   the new body-shape step replaces it. The Style settings page keeps a default 
   build selector for logged-in customers who want to set a profile-wide preference.

#### 3.2.3

 * **Fixed: SVG icons clipped when the merchant used a custom radius** — the cascade
   that applies the merchant-configured corner radius to modal elements was also
   rounding/clipping the icon SVGs inside modals (close × , back arrows, download,
   play, share, chevrons, check marks). Re-applied the targeted neutralization rule(
   border-radius 0 + overflow visible + no mask/clip) on all `<svg>` descendants
   of Dresium dialogs. The fix was in place in a previous version but was lost during
   a modal split refactor.

#### 3.2.2

 * **Added: visual feedback on the Add-to-cart button** — after a successful click
   the button animates from brand purple to green with a check-mark icon, confirming
   the item was added. No toast, no popup — zero friction UX.

#### 3.2.1

 * **Fixed: Add-to-cart from the try-on result modal didn’t actually add items**—
   WooCommerce initializes the cart/session only during standard page requests, 
   not during REST API calls, so the backend add silently failed. The endpoint now
   bootstraps WC session + customer + cart handlers before adding, and explicitly
   persists the cart cookie after the add. Both guest and logged-in sessions work.

#### 3.2.0

 * **Added: Add-to-cart button in the try-on result modal** — after a successful
   virtual try-on, shoppers can add the product to their cart in one click without
   leaving the result modal. The size and any variant currently selected on the 
   product page (or the first available variant if none selected) is used automatically—
   no size picker, no interruption. Mini-cart badge refreshes via standard WooCommerce
   fragments; works on all WC-compliant themes.

#### 3.1.0

 * **Added: low-balance email reminder** — enable optional email alerts in WooCommerce
   > Settings > Dresium > Billing. When your credit balance drops below your chosen
   threshold, Dresium sends a reminder to your contact email (at most once per day
   while the balance stays low). Email language follows your WordPress admin language,
   with English fallback. Delivered from info@dresium.com via your site’s existing
   SMTP setup.

#### 3.0.16

 * **Fixed: misleading error message when the store runs out of credits** — the 
   storefront previously showed “Oops! The service is being updated. Please try 
   again in a few minutes.” for a 402 insufficient-balance response. It now correctly
   says “The store has run out of credits. Please try again later.” in all 5 supported
   languages (IT/EN/FR/DE/ES).
 * **Fixed: generic daily rate limit fell back to Italian in all languages** — the
   i18n key for the generic 429 message was missing from the storefront bundle, 
   so non-Italian shoppers saw the Italian fallback. Added `main.rateLimit` localization
   in IT/EN/FR/DE/ES.
 * **Fixed: AI service unavailable (503) showed raw backend text** — when the AI
   pipeline is temporarily down, the storefront now shows a dedicated localized 
   message (“The service is temporarily unavailable. Please try again in a few minutes.”)
   instead of a raw Italian server message. Both guest and logged-in flows are covered.

#### 3.0.15

 * **Fixed: crop modal could accidentally close during drag** — when a crop drag
   ended outside the image area, the modal treated it as a backdrop click and closed,
   cancelling the operation. It now closes only on a real click on the modal backdrop.
 * **Added: take a selfie on the spot when logged in** — previously only guest visitors
   had this shortcut. On mobile it opens the front camera directly; on desktop it
   opens a webcam capture dialog. The existing “upload from device” path is unchanged.

#### 3.0.14

 * **Shadow DOM CSS isolation** — try-on modals are now fully isolated from your
   theme’s CSS. Enabled by default on fresh installs, disabled by default on existing
   installs (opt-in from WooCommerce > Dresium > Advanced, to avoid any visual change
   without your consent). Solves cross-theme conflicts on themes with aggressive
   CSS resets (Kadence, Astra, Divi, Bricks, and themes based on normalize.css /
   html5boilerplate). Includes a JavaScript fallback for page builders that skip
   WooCommerce hooks (Elementor Pro Product Templates, Divi Theme Builder, Bricks
   Builder).
 * **Product category picker** — the Advanced tab now shows product categories as
   a nested tree with strict parent-child logic: enabling a subcategory requires
   its parent to be enabled too. Much clearer to configure than the previous flat
   list.
 * **Fullscreen gallery: video first** — when a product image has an associated 
   video, the fullscreen gallery now opens directly on the video instead of the 
   static image.
 * Minor bug fixes.

#### 3.0.13

Critical fix: theme compatibility. Some WordPress themes (with CSS resets inherited
from normalize.css / html5boilerplate) applied `dialog { display: block }`, which
overrode the browser default `dialog:not([open]) { display: none }` and caused all
Dresium try-on modals to appear as visible blocks at the bottom of product pages
when closed. Fixed by restoring the browser default via a targeted rule on Dresium
dialogs only.

#### 3.0.12

Minor bug fixes

#### 3.0.11

Minor bug fixes

#### 3.0.10

Minor bug fixes

#### 3.0.9

Minor bug fixes

#### 3.0.8

Minor bug fixes

#### 3.0.7

Post-3.0.3 refinement release. Consolidates fixes and UX improvements from 3.0.4
3.0.7 development iterations. Backwards compatible with 3.0.3 — no data migration,
no re-onboarding required.

**Admin UX — Appearance tab**

 * Live preview on the Preview button and on the Button Size tiles (small/medium/
   large) now reflects **all** style changes in real time: palette, custom colors,
   uppercase, show-icon, CTA text, border radius and font family — previously radius
   and font were applied silently only after saving.
 * Border radius is applied live to the Preview button and the Button Size tiles
   via JavaScript listeners on the slider and the number input.
 * Font family is applied live to the Preview button and the Button Size tiles by
   loading the 12 Google Fonts of the whitelist (Inter, Poppins, Montserrat, Roboto,
   Open Sans, Lato, Raleway, Nunito, Playfair Display, Merriweather, Lora, DM Sans)
   directly in the admin page via `<link rel="stylesheet">` output in `output_section_appearance()`(
   bypassing `wp_enqueue_style` which could HTML-escape the `&` characters in the
   CSS2 URL bundle).
 * Font application uses `document.fonts.ready` to re-sync the preview once the 
   Google Fonts WOFF2 files are actually downloaded, avoiding the initial pageload
   flashing with the system font.
 * Fallback family per-font-category (serif vs sans-serif) so if a Google Fonts 
   file fails to load, the preview at least maintains the correct typography category.
 * Added a yellow disclaimer under the Typography section informing merchants that
   the font preview is approximate and that the accurate rendering can be verified
   only by saving and opening a product page in a new tab.

**Admin UX — Financials tab (B2B Pricing Configuration)**

 * Introduced a new pricing input model with 4 primary fields (image total cost 
   in €, credits per image, video total cost in €, credits per video). The credit
   price is derived automatically from the image_price / image_credits ratio.
 * All fields accept EUR values with 2-decimal precision (0.01 step). Backend stores
   in cents (integer) with `round(eur * 100)`. Retrocompatibility layer accepts 
   legacy `*_cents` POST parameters.
 * Live preview info box (blue) shows internal derived credit price, example €100
   top-up conversion in credits and video intrinsic value with warning if declared
   video cost diverges from the intrinsic value.
 * New backend getters `Dresium_Merchant_Balance::get_image_price_cents()` and `
   get_video_price_cents()` return the costs saved directly by the admin — no more
   derivation via `credit_price × credits` which caused rounding-to-integer-cents
   artifacts (`€0.30 / 20 credits → €0.015` was rounded to `€0.02` making `€0.30`
   incorrectly rendered as `€0.40` after save).
 * The endpoint `/merchants/self` and `/pricing/current` now expose `image_price_cents`
   and `video_price_cents` as the source of truth. Frontend (Shopify Remix admin,
   storefront extension, WooCommerce client plugin) consume these instead of recomputing
   from credit price. Fallback to legacy calculation for merchants pre-3.0.7 without
   the new options stored.
 * Stripe checkout now uses float precision for credit calculation: `credits = floor(
   topup_cents / (image_price_cents / image_credits))` instead of `intdiv(topup_cents,
   credit_price_cents)`. Fixes an issue where a €100 top-up produced 5000 credits
   instead of the expected 6666 (with €0.30/20 credits config).
 * Hint box in the B2B Pricing Configuration section with concrete example configuration
   and derived calculations to help merchants understand the credit model.

**Storefront — theme compatibility**

 * Fixed the fullscreen zoom modal close button (X icon) being invisible on Astra
   theme. Astra’s default button rule applies `padding: 15px 30px !important-equivalent`
   and `font-size: 16px` to any `button` element, overriding the Dresium close button’s
   fixed 40×40 sizing and squishing the SVG X.
 * Fix: theme-guard now applies explicit `width: 48px`, `height: 48px`, `padding:
   0`, `font-size: 0` and `line-height: 1` with `!important` to `#dresium-tryon-
   zoom-modal .dresium-zoom-modal__close`. The inner SVG has explicit `width/height:
   24px` and `color: #ffffff` with `!important`.

**Compatibility**

 * No breaking changes. All previously stored merchant balances, subscriptions and
   auto-topup configurations continue to work unchanged.
 * Zero-config upgrade: existing pricing configuration (10 credits per image, 40
   credits per video, €0.10 per credit, €10 minimum recharge, €100 whitelabel threshold)
   is preserved. Merchants can adopt the new 4-input pricing model at any time from
   Financials tab.

#### 3.0.3

**B2B Dynamic Pricing refactor**

 * New `Dresium_Pricing_Cache` client fetches the current B2B pricing (credit price,
   credits per image try-on, credits per animate video, minimum recharge and whitelabel
   threshold) from the Dresium server every hour via the public endpoint `GET /wp-
   json/dresium/v1/pricing/current`. Cached in a WP transient. Fallback to hardcoded
   defaults if the endpoint is unreachable.
 * Auto-topup help strings (“1 try-on = 10 credits, 1 video = 40 credits”, “€10 
   = 100 credits”, “0 = unlimited. No cap…”) converted from static text to `sprintf(
   __())` with placeholders — automatically reflect the current pricing.
 * Analytics dashboard help item “Each try-on = 10 credits” converted to dynamic
   plural via `_n(...)`.
 * Translation POT + .po/.mo regenerated across DE / EN_GB / EN_US / ES / FR / IT
   to preserve translation for the new placeholder-based strings.
 * Existing credits are always spent at the rate contracted at purchase — the checkout
   captures a full pricing snapshot in Stripe metadata (`dresium_price_per_cred`,`
   dresium_image_credits_at_purchase`, `dresium_video_credits_at_purchase`, `dresium_min_topup_at_purchase`,`
   dresium_wl_threshold_at_purchase`). Future pricing changes never invalidate deposits
   already made.
 * Auto-topup minimum recharge now respects the server-side configurable minimum
   topup (previously hardcoded €10).
 * `readme.txt` Pricing & currency section rewritten to explicitly explain that 
   the values shown are current defaults and that the Billing screen always shows
   the up-to-date pricing.

**Compatibility**

 * No breaking changes. All previously stored merchant balances, subscriptions and
   auto-topup configurations continue to work unchanged.
 * Zero-config upgrade: if the merchant has not customised any pricing option on
   the server, the defaults resolve to the exact same values shipped in 3.0.2 (10
   credits per image, 40 credits per video, €0.10 per credit, €10 minimum recharge,
   €100 whitelabel threshold).

#### 3.0.0

First stable release of the B2B model. Consolidates all fixes and refinements shipped
during the beta cycle. Backwards compatible with 3.0.0-beta.1/beta.2 — no data migration,
no re-onboarding required. Users upgrading from 2.x should read the 3.0.0-beta.1
changelog for the breaking-change details.

**Admin UI**

 * Admin panel fully translated in Italian, English, French, German and Spanish (
   fixed mixed-language rendering when WordPress locale differed from the plugin
   source language).
 * Regenerated the translation POT covering 635 strings (was 373); all five .po/.
   mo files brought to 100% coverage.
 * Home landing page: hero, KPI tiles, CTA row, animated bento grid, integration
   cards for Shopify and WooCommerce, cinematic showcase and final CTA.
 * Analytics dashboard: fixed KPI key mismatches (purchases, refunded revenue, conversion
   rate), corrected order-status attribution windows, retroactive migration for 
   orders already in the database when the plugin was upgraded.
 * Appearance tab: fixed palette presets not persisting the actual colors — selecting
   Sunset/Ocean/Forest now writes the real hex values into the DB, storefront picks
   them up on next page load.
 * Appearance preview: live update of the CTA button preview when changing palette,
   custom colors or button size, without a page reload.

**Storefront button and modals**

 * CTA button and inner modal primary buttons now consume the merchant’s chosen 
   colors dynamically via CSS custom properties, both on `:root` and on the `.dresium-
   tryon-block` container (fixes theme override on themes with block-scoped defaults
   like Kadence).
 * Fixed a class of theme conflicts where `button:hover/focus/active` in the parent
   theme (Kadence, Astra, Woodmart) overrode the Try-On button on click, briefly
   making the label unreadable.
 * Kept the gear/settings button neutral gray regardless of the merchant’s palette(
   design decision: it must remain distinct from the primary CTA).
 * All modal corner radii now follow `--dresium-tryon-radius` — step badges, close
   buttons, notice boxes, preview containers, replace-photo button, gallery navigation
   arrows, gallery scope toggle, loading progress bar and reference images all react
   to the merchant’s radius setting instead of being hardcoded.
 * Guest modal, step 1 (Upload/Camera): replaced the four sample reference photos
   with a new set that alternates female/male subjects (previously all female).
 * Guest modal, step 3 (Special occasions): four scene tiles refreshed with production-
   quality imagery for First Date, Fashion Show, Job Interview and Wedding.

**Video generation and lazy loading**

 * Whitelabel unlock is now evaluated on the current merchant balance (was cumulative
   lifetime spending) — dropping below the €100 threshold hides the whitelabel bonus
   again, per contract.
 * Video generation flag auto-enabled the moment whitelabel unlocks; auto-disabled
   when the balance drops below threshold.

**Webcam authorization**

 * User-friendly wording when the browser blocks webcam access: title changed from“
   Errore” to “Autorizza la webcam” (localized), body rewritten as an actionable
   instruction that points the user to the lock icon in the address bar. All five
   languages.

**i18n runtime**

 * Fixed a legacy string that contained a literal `<script>` tag in the FAQ content;
   it broke next-intl’s ICU parser and caused the placeholder key to leak into the
   rendered page.
 * Reworked all storefront JS translation lookup paths to guarantee the correct 
   locale is selected on the visitor’s browser, independently of the merchant’s 
   WordPress locale.

**Guest flow — WooCommerce parity with Shopify**

 * Complete port of the guest flow 5-step wizard that shipped on Shopify: photo 
   intake (upload / camera / sample)  identity confirmation  occasion selection  
   outfit customization  generation. Includes daily credit caps per customer, radius
   cascade to modal primary buttons, per-locale CTA copy.
 * Contact form fix on the Brand landing page: the `interest` field was made optional
   on the backend since the redesigned form no longer collects it. Previously the
   endpoint returned HTTP 400 `rest_missing_callback_param`.

**Deploy and versioning**

 * Consolidated versioning: internal dev builds from beta.2 through beta.76 have
   been squashed into this public 3.0.0-beta.2 release. Users upgrading from 3.0.0-
   beta.1 will jump directly to this consolidated set of fixes.
 * No breaking API changes, no HMAC key rotation, no re-onboarding.

#### 3.0.0-beta.1

**BUSINESS MODEL CHANGED TO B2B**

Full B2B refactor. This is a breaking change from 2.x. Do NOT install on top of 
an existing 2.x installation without reading the upgrade notice below.

 * **Business model:** you (the merchant) pay for the service, your customers use
   it for free. No more customer OIDC/Keycloak signup, no more per-user credit balance,
   no more Stripe checkout inside the storefront.
 * **HMAC-secured API:** the plugin authenticates to Dresium via a per-merchant 
   HMAC secret provisioned at onboarding. The secret never leaves your WordPress
   server.
 * **New admin panel:** the WooCommerce > Settings > Dresium tab has 7 sections —
   Home (KPIs), Billing (credits and auto-topup), Aspetto (appearance customization),
   Categorie (category gating), Advanced (video, guest access, LTV gate), Legal (
   Privacy/DPA/Terms), Documentation.
 * **New analytics dashboard:** `Dresium > Statistiche` is now a server-rendered
   dashboard with 7/30/90-day filter, Chart.js daily trend, top products, and CSV
   export. Fully backed by real merchant analytics from Dresium servers.
 * **Three storefront integration methods:** automatic hook on the WooCommerce product
   page (default), Gutenberg block `Dresium Try-On CTA`, and shortcode `[dresium_tryon]`.
 * **Order attribution:** purchases within 7 days from a try-on are attributed to
   Dresium. Refunds are subtracted from attributed revenue.
 * **Legal gate built-in:** the Try-On button stays hidden on the storefront until
   the merchant signs Privacy, DPA and Terms from the Legal tab.
 * **Storefront JS/CSS:** full port of the Dresium Shopify storefront extension (
   ~5000 lines of vanilla JS) — 7 modals (setting, upload, crop, loading, result,
   zoom, confirm), i18n runtime in 5 languages, Cropper.js vendored.
 * **10 legacy B2C files removed (~6600 lines):** dresium-oidc-registration.php,
   dresium-openid-connect-generic.php (vendored OIDC library), class-dresium-ajax-
   handlers.php, class-dresium-shortcodes.php, class-dresium-woocommerce.php, class-
   dresium-analytics-data.php, class-dresium-order-tracker.php, dresium-enqueue.
   php, dresium-template-functions.php, class-dresium-admin-settings.php.
 * Plugin bootstrap `dresium.php` reduced from 1785 to 340 lines (-80%). `class-
   dresium-api-client.php` reduced from 1475 to 130 lines (only HMAC B2B methods
   retained).

#### 3.0.0-alpha.1

 * Internal alpha …

## Meta

 *  Versi **3.4.12**
 *  Diperbarui **1 hari yang lalu**
 *  Instalasi Aktif **Kurang dari 10**
 *  Versi WordPress ** 6.6 atau yang terbaru **
 *  Diuji hingga **7.1.3**
 *  Versi PHP ** 7.4 atau yang terbaru **
 *  Bahasa
 * [English (US)](https://wordpress.org/plugins/dresium/)
 * Tag
 * [ai fashion](https://id.wordpress.org/plugins/tags/ai-fashion/)[Try On](https://id.wordpress.org/plugins/tags/try-on/)
   [virtual fitting room](https://id.wordpress.org/plugins/tags/virtual-fitting-room/)
   [virtual try on](https://id.wordpress.org/plugins/tags/virtual-try-on/)[woocommerce](https://id.wordpress.org/plugins/tags/woocommerce/)
 *  [Tampilan lanjut](https://id.wordpress.org/plugins/dresium/advanced/)

## Rating

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/dresium/reviews/#new-post)

[Lihat semua ulasan](https://wordpress.org/support/plugin/dresium/reviews/)

## Kontributor

 *   [ dresium ](https://profiles.wordpress.org/dresium/)
 *   [ Riccardo Guerrera ](https://profiles.wordpress.org/rgwebdev/)

## Bantuan

Ada yang ingin dikatakan? Butuh bantuan?

 [Lihat forum bantuan](https://wordpress.org/support/plugin/dresium/)

## Donasi

Apakah Anda ingin mendukung pengembangan plugin ini?

 [ Donasi untuk plugin ini ](https://dresium.com/)