{"id":300514,"date":"2026-04-23T07:53:08","date_gmt":"2026-04-23T07:53:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/vtryon-ai-virtual-try-on-for-woocommerce\/"},"modified":"2026-05-15T12:38:43","modified_gmt":"2026-05-15T12:38:43","slug":"vtryon","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/vtryon\/","author":23480383,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Vtryon","header_author":"Legresca","header_description":"Connect your WooCommerce store with Vtryon to provide a seamless virtual try-on experience.","assets_banners_color":"b6c3d7","last_updated":"2026-05-15 12:38:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/vtryon.legresca.ai","header_author_uri":"https:\/\/legresca.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":145,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"vtryon","date":"2026-04-23 07:53:39"},"1.0.1":{"tag":"1.0.1","author":"vtryon","date":"2026-04-23 12:32:06"},"1.0.2":{"tag":"1.0.2","author":"vtryon","date":"2026-05-15 12:38:43"}},"upgrade_notice":{"1.0.2":"<p>Uses API tokens (not email\/password), and adds the garment image picker plus <strong>Sync All<\/strong> confirmation. Enter your API token under WooCommerce \u2192 Vtryon after updating.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3513506,"resolution":"128x128","location":"assets","locale":"","width":1024,"height":1024}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3513506,"resolution":"772x250","location":"assets","locale":"","width":2930,"height":1431}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3513506,"resolution":"1","location":"assets","locale":"","width":2117,"height":1023},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3513506,"resolution":"2","location":"assets","locale":"","width":1856,"height":872},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3513506,"resolution":"3","location":"assets","locale":"","width":1856,"height":868},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3513506,"resolution":"4","location":"assets","locale":"","width":1856,"height":1120}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,888,7097,148223,286],"plugin_category":[45],"plugin_contributors":[260912],"plugin_business_model":[],"class_list":["post-300514","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-e-commerce","plugin_tags-fashion","plugin_tags-virtual-try-on","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-vtryon","plugin_committers-vtryon"],"banners":{"banner":"https:\/\/ps.w.org\/vtryon\/assets\/banner-772x250.png?rev=3513506","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vtryon\/assets\/icon-128x128.png?rev=3513506","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/vtryon\/assets\/screenshot-1.png?rev=3513506","caption":""},{"src":"https:\/\/ps.w.org\/vtryon\/assets\/screenshot-2.png?rev=3513506","caption":""},{"src":"https:\/\/ps.w.org\/vtryon\/assets\/screenshot-3.png?rev=3513506","caption":""},{"src":"https:\/\/ps.w.org\/vtryon\/assets\/screenshot-4.png?rev=3513506","caption":""}],"raw_content":"<!--section=description-->\n<p>Vtryon connects your store to the Vtryon service so customers can upload a portrait photo and preview how a product looks on them.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>API token authentication: store your Vtryon API token server-side only (sent as x-api-key on each request).<\/li>\n<li>Smart garment syncing: <strong>Sync<\/strong> (product screen or Products list) opens a picker that lists the product\u2019s gallery images so you can choose which image to send to Vtryon, or <strong>upload from device<\/strong> if the garment photo is not in the list. <strong>Sync All<\/strong> (Products list or category <strong>Garment sync<\/strong>) batch-syncs only products missing a Garment ID and always uses each product\u2019s <strong>main (featured) image<\/strong>\u2014you\u2019ll see a confirmation explaining that before the run starts.<\/li>\n<li>Download control: optionally hide the <strong>Download result<\/strong> button on the storefront while keeping the result image and \u201cTry another photo\u201d (WooCommerce \u2192 Vtryon \u2192 Settings).<\/li>\n<li>Image validation: multi-step flow checks customer photos against AI quality rules before try-on runs.<\/li>\n<li>Granular control: storewide on\/off for the whole site; optional logged-in-only mode; enable or disable try-on per product category and per product.<\/li>\n<li>Product page placement: choose where the try-on block appears on single product pages (WooCommerce hooks\/priorities), with shortcode support for custom layouts.<\/li>\n<li>Polished admin and storefront UI with accessible notices (bundled SweetAlert2 on relevant screens).<\/li>\n<li>Efficient polling for validation and task status to limit unnecessary requests.<\/li>\n<li>Developer hooks and filters to adjust payloads, limits, and behavior.<\/li>\n<\/ul>\n\n<p><strong>Coming soon<\/strong><\/p>\n\n<p>Planned for future releases:<\/p>\n\n<ul>\n<li>Ready-to-use catalog SKU image generation<\/li>\n<li>Pose generation for the same SKU<\/li>\n<li>Expanded AI fashion workflows inside WooCommerce<\/li>\n<\/ul>\n\n<p>For catalog-ready SKU images or extra poses today, use the Vtryon website or app: https:\/\/vtryon.legresca.ai\/app<\/p>\n\n<p><strong>Frontend flow<\/strong><\/p>\n\n<p>When a product has a Garment ID and try-on is allowed (storewide setting, product\/category toggles, and any logged-in-only rule), the try-on block appears on the product page at the placement chosen under WooCommerce \u2192 Vtryon \u2192 Settings, unless you output it only via the shortcode. The customer uploads a portrait (JPG\/PNG), the image is validated, a try-on task runs, and the result is shown; downloading the file is available when <strong>Download result button<\/strong> is enabled in settings.<\/p>\n\n<p><strong>Developer hooks<\/strong><\/p>\n\n<p><em>Filters<\/em><\/p>\n\n<ul>\n<li><code>vtryon_upload_person_payload<\/code> \u2014 person image upload payload.<\/li>\n<li><code>vtryon_create_task_payload<\/code> \u2014 task creation JSON.<\/li>\n<li><code>vtryon_max_upload_size<\/code> \u2014 max upload size (default 5 MB).<\/li>\n<li><code>vtryon_default_garment_type<\/code> \u2014 garment type (default <code>stitched<\/code>).<\/li>\n<li><code>vtryon_api_base_url<\/code> \u2014 override API base URL (advanced).<\/li>\n<li><code>vtryon_display_preset_definitions<\/code> \u2014 register or change product page placement presets (<code>hook<\/code>, <code>priority<\/code>, <code>label<\/code> per preset).<\/li>\n<li><code>vtryon_display_position<\/code> \u2014 override the resolved hook, priority, and preset slug for the single-product try-on block.<\/li>\n<li><code>vtryon_bulk_sync_max_products<\/code> \u2014 max products per <strong>Sync All<\/strong> run (default 2000).<\/li>\n<\/ul>\n\n<p><em>Actions<\/em><\/p>\n\n<ul>\n<li><code>vtryon_before_upload_person<\/code> \u2014 before sending a person image.<\/li>\n<li><code>vtryon_after_create_task<\/code> \u2014 after a task is created.<\/li>\n<li><code>vtryon_before_download<\/code> \/ <code>vtryon_after_download<\/code> \u2014 around result download tracking.<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>WooCommerce (active)<\/li>\n<li>PHP 7.4+<\/li>\n<li>A valid Vtryon account (sign up at https:\/\/vtryon.legresca.ai\/app )<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>Vtryon<\/strong> service (operated by Legresca) to provide AI virtual try-on functionality.<\/p>\n\n<p><strong>What the service is used for<\/strong><\/p>\n\n<ul>\n<li>Merchant authentication \u2014 the store owner's Vtryon API token is sent with each API request (x-api-key header).<\/li>\n<li>Garment sync \u2014 product featured images are uploaded to Vtryon so the AI can dress customers in them.<\/li>\n<li>Person image upload \u2014 when a customer initiates a try-on, their uploaded portrait is sent to Vtryon for processing.<\/li>\n<li>Person image validation \u2014 Vtryon checks the uploaded photo against quality rules (lighting, face detection, pose) before running the try-on.<\/li>\n<li>Try-on task creation \u2014 Vtryon combines the person image and the garment to generate the try-on result.<\/li>\n<li>Status polling \u2014 the plugin queries Vtryon to check when the result is ready.<\/li>\n<li>Result retrieval \u2014 the generated try-on image URL is retrieved from Vtryon and stored privately on the WordPress side; the image is then served to the customer through a WordPress-side proxy, so the raw Vtryon URL is never exposed to the browser.<\/li>\n<\/ul>\n\n<p><strong>What data is sent and when<\/strong><\/p>\n\n<ul>\n<li><strong>API token<\/strong> is sent to the Vtryon API with each server-side request (x-api-key header). The token is stored only in the WordPress database and is never sent to the browser.<\/li>\n<li><strong>Product images<\/strong> are sent when the merchant syncs a product with Vtryon (the image chosen in the sync dialog or uploaded from the merchant\u2019s device) or when <strong>Sync All<\/strong> runs (each product\u2019s main \/ featured image only).<\/li>\n<li><strong>Customer portrait photos<\/strong> are sent to Vtryon only when a site visitor explicitly initiates a virtual try-on and agrees to the consent notice on the product page. Photos are not stored locally by the plugin.<\/li>\n<li><strong>Session \/ task identifiers<\/strong> are exchanged between WordPress and the Vtryon API during status polling and result retrieval. These identifiers are kept server-side only and are never passed to the visitor's browser.<\/li>\n<\/ul>\n\n<p><strong>Service provider<\/strong><\/p>\n\n<p>Vtryon<\/p>\n\n<p><strong>Privacy Policy:<\/strong> https:\/\/vtryon.legresca.ai\/privacy-policy<\/p>\n\n<p><strong>Terms of Service:<\/strong> https:\/\/vtryon.legresca.ai\/terms<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Install and activate <strong>WooCommerce<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Vtryon<\/strong>. If you do not have an account, sign up at https:\/\/vtryon.legresca.ai\/app (Create Account).<\/li>\n<li>Generate an <strong>API token<\/strong> in your Vtryon dashboard (see https:\/\/vtryon.legresca.ai\/guide\/api-integration), paste it under <strong>API token<\/strong>, and save. The plugin tests the connection and shows a status notice.<\/li>\n<li>Under <strong>Storewide try-on<\/strong>, keep <strong>Enable virtual try-on for the entire site<\/strong> checked unless you want try-on hidden everywhere (category\/product settings apply only when this is on).<\/li>\n<li>Under <strong>Product page placement<\/strong>, choose where the try-on block appears on single product pages (default: after add to cart).<\/li>\n<li>(Optional) Enable <strong>Visibility<\/strong> to show the try-on button only to logged-in users.<\/li>\n<li>Under <strong>Download result button<\/strong>, choose whether to show the download control after a try-on completes.<\/li>\n<li>For each product: add product images (gallery), enable Vtryon on the product, and click <strong>Sync with Vtryon<\/strong> (product edit screen) or <strong>Sync<\/strong> in the <strong>Garment ID<\/strong> column. A dialog lists gallery images to choose from, or you can upload a different file from your computer. <strong>Sync All<\/strong> on the Products list (or <strong>Garment sync<\/strong> on a category) asks for confirmation first: it syncs every product still missing a Garment ID using <strong>only the main (featured) image<\/strong> for each product; products that already have a Garment ID are skipped.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20woocommerce%3F\"><h3>Does this require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The plugin checks for WooCommerce and shows an admin notice if it is missing.<\/p><\/dd>\n<dt id=\"are%20api%20credentials%20exposed%20to%20visitors%3F\"><h3>Are API credentials exposed to visitors?<\/h3><\/dt>\n<dd><p>No. Only the WordPress REST URL and a REST nonce are passed to the browser; the API token and garment APIs run on the server.<\/p><\/dd>\n<dt id=\"what%20image%20formats%20are%20supported%3F\"><h3>What image formats are supported?<\/h3><\/dt>\n<dd><p>Featured images and customer uploads use <strong>JPG<\/strong> and <strong>PNG<\/strong> (validated with WordPress file checks).<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20load%20third-party%20scripts%20on%20my%20store%3F\"><h3>Does the plugin load third-party scripts on my store?<\/h3><\/dt>\n<dd><p>The plugin bundles SweetAlert2 for admin sync feedback and storefront messages. No remote script loads are required for core operation.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20off%20try-on%20for%20the%20whole%20store%20or%20move%20the%20try-on%20block%3F\"><h3>Can I turn off try-on for the whole store or move the try-on block?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>WooCommerce \u2192 Vtryon \u2192 Settings<\/strong>: uncheck <strong>Enable virtual try-on for the entire site<\/strong> to disable try-on site-wide, and use <strong>Product page placement<\/strong> to change where the block appears. For a custom position you can also use the <code>[vtryon]<\/code> shortcode (and remove the automatic hook in code if you need only the shortcode).<\/p><\/dd>\n<dt id=\"how%20do%20i%20choose%20which%20image%20is%20synced%20to%20vtryon%20for%20a%20product%3F\"><h3>How do I choose which image is synced to Vtryon for a product?<\/h3><\/dt>\n<dd><p>Use <strong>Sync with Vtryon<\/strong> on the product edit screen or <strong>Sync<\/strong> in the <strong>Garment ID<\/strong> column on the Products list. A dialog lists the product\u2019s gallery images; pick one or choose <strong>upload from device<\/strong> for a file that is not in the gallery. <strong>Sync All<\/strong> does not show this dialog\u2014it syncs each qualifying product using its <strong>main (featured) image<\/strong> only, after you confirm.<\/p><\/dd>\n<dt id=\"where%20is%20the%20full%20markdown%20documentation%3F\"><h3>Where is the full Markdown documentation?<\/h3><\/dt>\n<dd><p>The same documentation ships as <code>README.md<\/code> in the plugin folder. It is also shown under <strong>WooCommerce \u2192 Vtryon \u2192 Help guide<\/strong> below the quick start section.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>API token authentication (x-api-key) replaces email\/password login.<\/li>\n<li>Garment sync: choose a product gallery image or upload from your device (product edit\/add screen and Products list <strong>Sync<\/strong>). <strong>Sync All<\/strong> confirms that batch sync uses each product\u2019s main (featured) image only.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved Photo Guidelines &amp; Consent model UX.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release on WordPress.org guidelines baseline.<\/li>\n<\/ul>","raw_excerpt":"AI try-on for WooCommerce: sync products with Vtryon, validate photos, show results\u2014all handled server-side.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/300514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=300514"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vtryon"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=300514"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=300514"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=300514"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=300514"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=300514"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=300514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}