Resolution order
When a launcher is clicked, Hemsy picks the launch mode by checking, in order:- Instant: instant is requested (
data-hemsy-mode="instant"on the element itself, or on the script tag as a page-wide default) and the element hasdata-hemsy-model. - Share: the element has
data-hemsy-share. - Product: the element has
data-hemsy-auto-product-context="true". - Bundle: the element has
data-hemsy-closet. - Sandbox: none of the above; opens the full experience blank.
data-hemsy-flow starts a guided flow when the launch has an empty look (Sandbox, or a flow-only launcher). Bundle (data-hemsy-closet) and Share launches skip the guided flow: closet bypass jumps straight to try-on after a photo is chosen, and share opens the shared-look viewer.
data-hemsy-action (checkout vs cart) is independent of launch mode. It only changes what the final CTA does. See Checkout vs Cart.
Launcher attributes
Sandbox
The default. No launcher attributes needed. The shopper starts blank and builds a look from your full catalog.Product context (PDP)
Launch with the product the shopper is currently viewing. Hemsy reads the selected variant from the page (the add-to-cart form or a?variant= URL parameter) and pre-loads it.
Bundle
Pre-load one or more specific products, curated looks, bundles, or campaign selections, with an explicit payload ondata-hemsy-closet.
The attribute is named
data-hemsy-closet for historical reasons. A “closet”
payload is how Bundle mode describes its products. The same payload format
powers ?closet= deep links._bundleId, _uniqueId, and friends), encoding helpers, and a validation checklist, see Deep Links. Always wrap data-hemsy-closet values in quotes.
Share
Open a previously shared look by its short ID. Useful for marketing campaigns, emails, or featuring shopper-created looks on your storefront.Flow
Launch a guided, step-by-step flow with an empty look:data-hemsy-flow with Bundle or Share launchers: those paths skip the guided flow.
Instant
Instant mode skips model selection and immediately generates a try-on image with a specific model and product payload. The shopper clicks, sees the generation loading state, and lands on the result. Instant requires both pieces on the launcher element:data-hemsy-mode="instant"to request the instant path. (Putting it on the script tag instead makes instant the default for every launcher with a model.)data-hemsy-modelfor the model to generate with. Adddata-hemsy-closetfor the products to place on that model. If the model is missing, the instant path is skipped.
Getting model IDs
Model IDs are UUIDs assigned to each image in your store’s model library:- Go to your store’s Models page in the Hemsy dashboard.
- Hover over any model image.
- Click the copy icon in the bottom-left corner.
Instant is per-launcher
Instant only affects the launcher that requests it. Share buttons,?share= links, and programmatic opens on the same page all work normally alongside instant launchers, with no separate script tags needed.
Instant combines normally with data-hemsy-action="cart" if your storefront owns cart state. See Checkout vs Cart.
URL auto-open
The embed script watches the page URL for?share= and ?closet= parameters and opens the modal automatically on page load:
history.pushState to catch client-side navigations.
?closet= always opens a normal Bundle launch rather than instant
generation, since no model ID travels in the URL.