Step 1 — Enable the app embed
The app embed loadsglood-upsell.js + glood-upsell.css on every storefront page and emits the window.glood.upsell.* namespace the theme blocks (and the mini-cart adapter) read.
- From your Shopify admin go to Online Store → Themes.
- Find your live theme, click Customize to open the Theme Editor.
- In the bottom-left of the navigation panel, click Theme Settings.
- Select App embeds.
- Find Glood.AI Recommendations in the list and toggle it ON. This is the master switch for every Glood feature (recommendations, search, bundles, upsell).
- Click the embed name to expand its settings panel. Tick the Enable upsell offers checkbox. This is the feature-specific gate that injects the upsell asset bundle (
glood-upsell.js,glood-upsell.css, thewindow.glood.upsell.*inline payload, and thegloodSwiperbundle) into every storefront page. With the main toggle ON but this checkbox OFF, no upsell panel renders even if the theme blocks are placed. - Click Save in the top right.
The app embed must be enabled for ANY Glood feature to work — recommendations, search, bundles, and upsell offers all share the same embed. If you switch themes later, you’ll need to re-enable the embed AND re-tick Enable upsell offers on the new theme.
Quick verification
After saving, open any product page on your storefront and check the browser console:'undefined', re-check both the master toggle and the Enable upsell offers checkbox, then hard-refresh the page (Cmd+Shift+R) — Shopify caches the storefront HTML.
What the embed loads
| Asset | Purpose |
|---|---|
glood-upsell.js | Renders the pick panel, free-gift progress, and mini-cart carousel. Auto-listens to theme [name="id"] / [name="quantity"] form events. |
glood-upsell.css | Base styling for the panels — themes can override via CSS or pass classNames through Glood.upsell.miniCart.hydrate(...). |
app-embed.liquid payload | Emits window.glood.upsell.cartPickOffers, window.glood.upsell.cartPickProductHydration, and window.glood.upsell.cartFreeGiftOffers — the inline data the storefront JS reads (no Storefront API round-trip required). |
gloodSwiper bundle | Powers the mini-cart carousel. Loaded synchronously alongside the upsell asset. |
Step 2 — Drop the theme blocks
The embed gives you the data and the script; the blocks are what actually render the panel on a specific surface.PDP block
- In the Theme Editor, open a Product template.
- In the section that should host the upsell (usually Product information below the price/description), click Add block → Glood Upsell for PDP.
- Save.
Cart block
- Open the Cart drawer section AND the
/cartpage section. - Add block → Glood Upsell for Cart.
- Save.
- Free-gift progress and “Auto-added” / ”✓ In cart” states.
- Pick offers triggered by the cart contents but not yet redeemed.
Optional — mini-cart adapter (theme-owned cart drawers)
If your theme’s cart drawer is theme-owned (hand-rolled, custom vendor, Dawn-customised) and doesn’t expose a Section block slot, drop a marker<div> per cart line instead:
hydrate() options, callbacks, and atomic-swap details — lives in the developer reference.
If the theme’s cart drawer is built from a Section block slot (e.g., Dawn’s default), you only need the Glood Upsell for Cart block — no marker divs. The mini-cart adapter is for themes where the Cart block can’t be dragged in.
Step 3 — Verify
- Visit a PDP for a product that’s a trigger for one of your active offers. The pick-offer panel should render below the price/description.
- Pick a gift, click Add to cart — the gift should appear in the cart with the configured price (e.g.,
+€1). - Cross a free-gift threshold (add enough to cart). The gift should auto-add at €0.
- Open the cart drawer — the trigger product should show an “Add gifts” pill that expands into a carousel; redeemed gifts should show a “Reselect” CTA.
- Confirm the app embed is ON in the Theme Editor and you Saved.
- Confirm an active offer exists in the Glood dashboard and its trigger matches the product you’re viewing.
- Open the browser DevTools console and look for
[Glood.upsell]warnings — the storefront logs actionable messages when offers are misconfigured or block placements are missing. - Hard-refresh the page (Cmd+Shift+R / Ctrl+Shift+R) — Shopify caches the storefront HTML with the embed’s script src baked in.