App embeds and app blocks: how Stackable widgets load
Shopify gives apps two ways to add to your theme: app blocks you place on a page, and an app embed you switch on globally. Here is what each does, which Stackable widgets use which, and when you actually need the embed.
Stackable never edits your theme’s code. Its storefront widgets load through Shopify’s theme app extension framework, which gives an app two building blocks: app blocks and an app embed. Knowing the difference tells you where to switch each widget on, why some widgets need the embed and others don’t, and how your analytics get collected.
What is an app embed?
An app embed is a single on/off switch in your theme editor, under Theme settings → App embeds. When you turn it on, Shopify injects it into every page of your storefront, near the closing body tag. It has no fixed position of its own — it is a page-wide helper, not something you place. Shopify designed app embeds for exactly this kind of job: floating or overlaid elements (like a bar in the cart drawer or a floating button) and background helpers such as analytics and tracking. App embeds are switched off by default when an app is installed, so you turn Stackable’s on once, when you want its cart features.
What is an app block?
An app block is a piece you place. In the theme editor you add it to a specific section — for example under the price on your product page — drag it to the position you want, and style it with its own settings. An app block lives exactly where you put it, and you can add, move, restyle, or remove it any time without touching code.
App block vs app embed at a glance
| App block | App embed | |
|---|---|---|
| How you add it | Drag it into a section and choose its spot | Flip one toggle in the App embeds panel |
| Where it appears | The exact place you position it | Page-wide, with no fixed spot of its own |
| Best for | On-page elements: tables, badges, prices | Cart-drawer elements, floating buttons, analytics |
| Styling | Per-block settings in the theme editor | Global settings shared by its features |
| Default state | None until you add it | Off until you switch it on |
Which Stackable widgets are which
Stackable ships seven widgets you place as app blocks on your product or cart pages, plus one app embed that powers the cart-side features. Here is the full map.
| Widget | Type | Where you enable it |
|---|---|---|
| Volume tier table | App block | A section on your product page |
| Sale badge | App block | A section on your product page |
| Sale price | App block | A section on your product page |
| Countdown timer | App block | A section on your product page |
| Buy X get Y (product callout) | App block | A section on your product page |
| Bundle builder | App block | A section on your product page |
| Saving on cart | App block | A section on your cart page |
| Cart progress bar | App embed | The App embeds toggle |
| Sticky savings bar | App embed | The App embeds toggle |
| Free-gift auto-add | App embed | The App embeds toggle |
| Buy X get Y cart nudge | App embed | The App embeds toggle |
The four cart-side features share the single Stackable app embed, each with its own on/off setting inside it. So one toggle brings the embed to life, and you choose which of its features to run.
Why some widgets need the embed
The split isn’t arbitrary. On-page widgets have an obvious home — the product page — so they are blocks you place. Cart features don’t: every theme builds its cart drawer differently, so there is no reliable slot to drop a block into. The app embed solves this by loading page-wide and finding the cart itself, wherever your theme keeps it. That is why the cart progress bar, sticky savings bar, free-gift auto-add, and the Buy-X-Get-Y cart nudge all live in the embed rather than as blocks you position.
On-page widgets work on their own
Every product-page and cart-page block is self-contained: it carries its own styles and logic and reads your live campaigns directly. It renders correctly whether or not the app embed is switched on. So if you only use, say, the tier table and the sale badge, you never need to touch the embed at all.
App embeds, analytics, and tracking
Shopify recommends app embeds as the home for analytics and tracking, and Stackable’s per-widget analytics follow that pattern. But so your numbers stay complete even if you never switch the embed on, every on-page widget also loads the tiny, privacy-safe analytics helper itself. The result: your impressions, interactions, and “which product shoppers picked” are recorded wherever a widget appears — embed on or off.
Privacy first
Widget analytics are anonymous — no personal data, no cross-site tracking — and only run when the shopper’s privacy and consent settings allow it. You see counts and top products; shoppers are never identified.
Do you need the app embed?
- Turn it on if you use any cart-side feature: the cart progress bar, the sticky savings bar, free-gift auto-add, or the Buy-X-Get-Y cart nudge.
- You can leave it off if you only use on-page product or cart blocks — they work on their own, and your analytics are still recorded.
- When in doubt, turn it on: it is off by default, shows nothing unless one of its features is enabled, and never edits your theme.
Built the safe way
Both app blocks and app embeds are part of Shopify’s theme app extension framework, which never edits your theme’s code. That means clean installs, clean uninstalls with no leftover snippets, and updates that ship to every store at once. Add a widget, move it, or remove it, and your theme is always exactly as you left it.
Enabling takes one click
The Widgets page inside the Stackable app links you straight to the right place for each widget — the App embeds panel for cart features, the product template for on-page blocks — and shows a live “enabled on your theme” status so you always know what is on.