# Extensions

> Magic Box, wishlist, last viewed, cart upsells, store locator, metaobjects, reviews and printing.

Status: Ready (Smootify 2.0)  
URL: https://www.smootify.io/docs/reference/elements/extensions  
Updated: 2026-10-13

| Element | What it does | Requires |
|---|---|---|
| [`[box-category]`](https://www.smootify.io/docs/reference/elements/box-category) (template) | Attribute form of smootify-box-category. | Every plan |
| [`[policy]`](https://www.smootify.io/docs/reference/elements/policy) | Writes a shop policy body, in the page language, into the element. | Every plan |
| [`[wishlist="count"]`](https://www.smootify.io/docs/reference/elements/wishlist-count) | Shows how many items the wishlist holds (products and variants); on a wishlist page opened from a shared link, how many the shared list holds. | Wishlist extension |
| [`box-item`](https://www.smootify.io/docs/reference/elements/box-item) | One line of the box, cloned from the first box-item for each picked item. | Magic Box extension |
| [`empty-state`](https://www.smootify.io/docs/reference/elements/empty-state) (template) | Shown while the box, or the metaobject list, is empty (CSS). | Every plan |
| [`items-list`](https://www.smootify.io/docs/reference/elements/items-list) (template) | Shown while the box holds items (CSS on the box cart’s is-empty). | Every plan |
| [`judge-me-reviews`](https://www.smootify.io/docs/reference/elements/judge-me-reviews) | Judge.me reviews widget for the product. | Every plan |
| [`judge-me-stars`](https://www.smootify.io/docs/reference/elements/judge-me-stars) | Judge.me stars badge for the product. | Every plan |
| [`klaviyo-back-in-stock`](https://www.smootify.io/docs/reference/elements/klaviyo-back-in-stock) | Klaviyo back-in-stock form, in a dialog or popover, for the current variant. | Every plan |
| [`map`](https://www.smootify.io/docs/reference/elements/map) (template) | Container the Mapbox map is drawn into. | Every plan |
| [`map-marker`](https://www.smootify.io/docs/reference/elements/map-marker) (template) | Marker template, one per location with coordinates. | Every plan |
| [`print-button`](https://www.smootify.io/docs/reference/elements/print-button) | Prints the printable-element its target names. | Every plan |
| [`printable-element`](https://www.smootify.io/docs/reference/elements/printable-element) | A region that a print-button prints alone. | Every plan |
| [`smootify-box-category`](https://www.smootify.io/docs/reference/elements/smootify-box-category) (template) | A box category: its add-to-cart forms fill that category, the box moves to the next one. 2.0: is-complete while the box holds a piece of it, also on the .w-slide or the .w-tab-link that shows it (when every category there has one). | Every plan |
| [`smootify-magic-box`](https://www.smootify.io/docs/reference/elements/smootify-magic-box) | Build-a-box: the add-to-cart forms inside it add to the box instead of the cart. 2.0: its pieces stay through a reload or another page until the box goes to the cart (a week at most); the card (smootify-product) of a picked product takes is-in-box and data-in-box (how many of it); the total takes the box’s discount only once the box can be bought. | Magic Box extension |
| [`smootify-magic-box-cart`](https://www.smootify.io/docs/reference/elements/smootify-magic-box-cart) | Box panel: picked items, counters, totals and the form that adds the whole box to the cart. | Magic Box extension |
| [`smootify-metaobject`](https://www.smootify.io/docs/reference/elements/smootify-metaobject) | One metaobject, written into its [metaobject] descendants. With data-handle-param the handle comes from that parameter of the page url (data-handle-param=“l” on /list?l=giulia-birthday: a link to one entry, such as one a metaobject-creator form created), before data-id and data-handle, which stay the fallback; the handle only goes to the query, never into the page. Without the parameter (and no fallback) or with an unknown handle the element is removed like any not found: a message next to it can show with :has() (.list:not(:has(smootify-metaobject)) .not-found). | Every plan |
| [`smootify-metaobjects`](https://www.smootify.io/docs/reference/elements/smootify-metaobjects) | Paged list of the metaobjects of a type, or of a product metafield. 2.0: data-type=“metafield.`<ns>`.`<key>`” with data-parent-id=“customer” lists the entries of the logged-in customer’s metafield, such as metafield.smootify.gift_list, the entries a metaobject-creator[customer-field] made for them (newest first; logged out, or none yet: is-empty; an entry deleted in the admin is skipped). | Every plan |
| [`smootify-product[data-id="cart-complementary"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-cart-complementary) | Card template repeated with the complementary products of the latest cart line. | Cart Upsell extension |
| [`smootify-product[data-id="cart-related"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-cart-related) | Card template repeated with the related products of the latest cart line. | Cart Upsell extension |
| [`smootify-product[data-id="cart-upsell"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-cart-upsell) | Alias of the cart-upsells card template (complementary and related). | Cart Upsell extension |
| [`smootify-product[data-id="cart-upsells"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-cart-upsells) | Card template repeated with the complementary and related products of the latest cart line. | Cart Upsell extension |
| [`smootify-product[data-id="last-viewed"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-last-viewed) | Card template repeated once per recently viewed product (the first one in the page). | Last Viewed extension |
| [`smootify-product[data-id="wishlist"]`](https://www.smootify.io/docs/reference/elements/smootify-product-data-id-wishlist) | Card template repeated once per saved product (the first one in the page); without a smootify-variant[data-product-id=“wishlist”] also once per saved variant, as its product’s card on that variant. A page opened from a wishlist-share link (?w=) shows that list instead of the visitor’s, with body.is-shared-wishlist. | Wishlist extension |
| [`smootify-variant[data-product-id="wishlist"]`](https://www.smootify.io/docs/reference/elements/smootify-variant-data-product-id-wishlist) | Variant card template (its .w-dyn-item, else itself) repeated once per saved variant (the first one in the page), with the smootify-variant markup; without a smootify-product[data-id=“wishlist”] also once per saved product, as the card of its first available variant. | Wishlist extension |
| [`store-locator`](https://www.smootify.io/docs/reference/elements/store-locator) | Shopify pickup locations on a Mapbox map, with a list filtered by a query field. | Store Locator extension |
| [`store-popup`](https://www.smootify.io/docs/reference/elements/store-popup) (template) | Popup template bound to a location, opened on a marker click. | Every plan |
| [`wishlist-share`](https://www.smootify.io/docs/reference/elements/wishlist-share) | Shares a link to the wishlist page (data-page, else this page) that shows the visitor’s saved products and variants to whoever opens it, no account needed (?w=: numbers for products, v + number for variants, at most 100, only ids read): the device’s share sheet where there is one, else the link is copied (data-copy: always copied). On the shared page the toggles keep working on the visitor’s own list. | Wishlist extension |
| [`wishlist-toggle`](https://www.smootify.io/docs/reference/elements/wishlist-toggle) | Adds or removes the product, or its current variant (data-use-variants), from the wishlist; inside a card of the wishlist page it works on the entry the card shows, product or variant. | Wishlist extension |
