

The try-on result — the customer's own photo, wearing the product, generated by AI. A Before / After toggle sits above it, add-to-cart and save below.
AnyTry is an AI-powered virtual try-on system that lets your customers see how they’ll look wearing your products before they buy. The plugin integrates directly with WooCommerce product pages, adding a “Try On” button that uses cutting-edge generative AI.
This plugin connects to the AnyTry API (https://api.anytry.ai) to generate virtual try-on images using generative AI. Using the plugin requires an AnyTry account (a free trial is available from the plugin settings screen).
What the plugin uses the AnyTry API for:
api.anytry.ai or an *.anytry.ai subdomain.The Try-On feature works whether or not analytics is enabled. Enable analytics at WooCommerce AnyTry AI “Send analytics & conversion events”.
What is sent to the AnyTry API:
When the data is sent:
Cookies (server-set, persistent):
anytry_session cookie (90 days) — stores the random session ID and the list of product IDs the visitor has tried on, used to attribute orders to try-on sessions for the conversion dashboard. Set only when analytics consent is enabled.anytry_tried cookie (90 days) — stores a fallback list of tried product IDs for cases where anytry_session is unavailable (third-party cookie blockers, REST checkout flows). Set only when analytics consent is enabled.anytry_legal_accepted_v2 cookie (1 year) — remembers that the customer has accepted the Try-On legal/age-consent overlay so they are not asked again on every page. Set ONLY after the customer clicks “Accept” on the legal overlay. Not used for any analytics or attribution.Persistent browser storage (localStorage):
anytry_lang — the language chosen in the widget, used to restore that choice on later visits.anytry_legal_accepted_v2 — mirror of the consent cookie above, same purpose, same trigger. No analytics or attribution use.anytry_tried — client-side mirror of the anytry_tried cookie value, used when third-party cookies are blocked. Written only when analytics consent is enabled.anytry_tried_products — same purpose as anytry_tried but stored in a structured per-product map; used by the admin Conversions tab to attribute orders to try-on sessions. Written only when analytics consent is enabled.anytry_canonical_session_id — a random sess_* identifier kept across reloads so the API can JOIN a try-on generation event to a later purchase event for conversion attribution. Persisted only when analytics consent is enabled. When consent is off, an ephemeral id is held in memory for the current page only and never written to localStorage.anytry_active_jobs — short-lived registry of in-flight try-on jobs (job IDs + status), used so the floating “still working…” widget can resume after a page reload. Cleared when the job finishes or after 24 hours. Not used for any analytics or attribution.Ephemeral per-tab storage (sessionStorage):
These stores are scoped to the current browser tab. They support the Try-On interface and, when analytics consent is enabled, retry failed analytics events. A photo stored here powers the local before/after toggle; when the widget restores an earlier try-on (for example after a page reload), that stored photo can also be sent with a Size Advisor request the customer initiates. Quiz answers may likewise be reused in such a request. The plugin’s other uploaded-photo cache is described under IndexedDB below.
anytry_before_<jobId> — the photo the customer uploaded, kept so the “before / after” toggle works after a result is generated.anytry_result_<jobId> and anytry_result_image — the generated result image data URL, used so the same result re-renders instantly when the customer reopens the modal in the same tab._anytry_result_cache_order — job identifiers in cache order, used to evict older result images when the per-tab image cache reaches its limit.anytry_feedback_state — whether the customer already rated 👍 / 👎 the current result.anytry_quiz_user_height, anytry_quiz_user_weight, anytry_quiz_usual_size, anytry_quiz_skipped — Size Advisor quiz answers, kept so the customer doesn’t have to re-enter them while comparing multiple try-ons.anytry_size_recommendation, anytry_size_<photoHash> and anytry_size_<photoHash>_p<productId> — cached Size Advisor responses, which may include estimated body measurements and recommended sizes, used to restore the recommendation for the photo and product.anytry_tab_id — a random identifier used to keep track of which browser tab owns an active try-on job after a reload.anytry_pending_submit — a pending request’s random idempotency key and timestamp. After a reload, a record less than two minutes old can be sent to WordPress to cancel a submission whose response was lost; the record is then discarded.anytry_sw_blocks_sse — internal counter the plugin uses to detect a Service Worker that’s blocking real-time updates, so it can transparently fall back to the same-origin SSE proxy on the next try-on.anytry_pending_events_v1 — up to 20 failed critical analytics events, including their product, job and session identifiers. With current analytics consent, the plugin retries them at the AnyTry API on a later page view in the same tab. A refusal received by the widget or disabled analytics clears this queue and prevents new retries on that page.Persistent browser storage (IndexedDB):
These databases cache images in the visitor’s browser. Cached uploaded photos can be reused and sent to AnyTry when the customer requests another Size Advisor analysis. Generated results are cached for local display. Clearing the site’s browser data removes these caches.
anytry_cache object store photos — the most recent uploaded photo, so reopening the modal restores the previous photo selection without a re-pick.anytry_results object store images — the data URL of generated result images keyed by job ID, so revisiting a recently-generated try-on renders instantly.Analytics consent:
The plugin does NOT send analytics or conversion-attribution events by default. Enable them at WooCommerce AnyTry AI “Send analytics & conversion events”. The Try-On image generation itself works whether or not this is enabled — only the conversion-attribution dashboard in the AnyTry Portal depends on this opt-in.
When analytics is enabled and a tracking token is available, the widget checks the current merchant setting and the site’s anytry_allow_session_cookie consent filter through WordPress once per page view, before sending or retrying browser analytics. It reuses that result for the rest of the page. CMP integrations must implement that filter; the plugin does not automatically detect every consent manager. An explicit refusal or disabled analytics clears the browser’s attribution cookies, attribution storage and pending-event queue. A failed or unrecognized consent check clears the pending-event queue and stops browser analytics for that page, while preserving existing attribution and session identity. Try-On and Size Advisor remain available. This does not recall requests already transmitted or erase historical order records.
Optional Google Fonts (default OFF):
By default the plugin uses system-sans typography and makes NO third-party font request — the AnyTry API is the only external service it contacts. An internal anytry_load_google_font option (OFF by default, with no user-facing control) would, if enabled, request the Outfit web font from Google Fonts (https://fonts.googleapis.com) on the storefront and the AnyTry admin Settings page; it stays off in a standard install.
Uploaded photos are automatically deleted from the AnyTry servers within 5 minutes of processing and are not used to train AI models.
This service is provided by AnyTry. By using the plugin, customers agree to the AnyTry Terms of Service and Privacy Policy:
Key Features:
How It Works:
SaaS Model: This plugin connects to the AnyTry API for AI processing. An API key is required (free trial available). See Terms of Service and Privacy Policy.
The plugin ships its full unminified sources — src/js/anytry.js, src/css/anytry.css and src/css/anytry-admin.css — alongside the minified runtime in assets/. The two small admin scripts keep their unminified sources in assets/ next to the minified files. Minification is done with esbuild on Node.js 18+ via the minify_wp.js build script.
Third-party code: assets/js/heic2any.min.js is a prebuilt bundle of heic2any 0.0.4 (MIT) that embeds gifshot (MIT) and libheif (LGPL-3.0-or-later). Full attribution, licence texts and the corresponding-source offer are in THIRD-PARTY-NOTICES.txt in the plugin folder. It converts iPhone HEIC photos to JPEG in the browser, loads only when the customer picks an HEIC file, and can be turned off with the “iPhone HEIC support” toggle in WooCommerce AnyTry AI.