doc-site
Reference

Third-party apps

Installed apps, what each owns, and which theme files belong to it.

Third-party apps

Apps reach the storefront three ways. Which one applies decides how much control the theme has.

The theme cannot stop scripts injected through content_for_header, so it uses Yett to hold them back.

Theme snippets shipped by an app run only where a Liquid file renders them.

Browser SDKs, such as Sesami's, run only when theme code calls them.

Apps in active use

AppOwnsTheme filesIntegration
KlaviyoEmail and SMS capture, back in stock, MediSpa booking formsnippets/klaviyo-back-in-stock.liquid, snippets/klaviyo-popup-trigger.liquid, snippets/pdp-offers-cta.liquidSDK plus form IDs in theme settings and source
SesamiAppointment availability and reservationssnippets/sesami-custom-button.liquid, snippets/sesami-custom-atc.liquid, snippets/sesami-cutom-solution.liquidwindow.SesamiSDK
Discount Ninja (Limoni Apps)Promotions, discount codes, promotional bars and badgessnippets/limoniapps-discountninja-*.liquid, 10 filesInjected scripts plus snippets
BoostSearch and collection filteringsnippets/boost-pfs.liquid, snippets/boost-pfs-style.liquid, snippets/boost-pfs-filter-skeleton.liquidInjected scripts plus snippets
Google Tag ManagerAnalyticssnippets/gtm.liquid, snippets/ga4-ecommerce-scripts.liquid, snippets/ga4-events-variables.liquidContainer ID in theme settings
SwymWishlistsnippets/swymSnippet.liquid, snippets/swym-product-view.liquid, snippets/custom-swym-wishlist-button.liquid and siblingswindow._swat, window.SwymCallbacks
GorgiasCustomer chatsnippets/load-gorgias-chat.liquidInjected script
SmileLoyaltysnippets/smile-initializer.liquidInjected script
Plug in SEO PlusTitle, description and structured data templatesTheme settings only, the four SEO groupsTheme settings
RebuyRecommendationssnippets/rebuy-extensions.liquidInjected script
StampedReviewsReferenced through window.StampedFnInjected script
ZapierBooking intent routingWebhook URL in theme settingsOutbound webhook

Apps with a smaller footprint

AppFilesNotes
Appstle3Subscriptions. Held back by Yett outside the subscriptions app proxy
Recurpay4Subscriptions. snippets/recurpay.liquid, snippets/recurpay-cart.liquid
Weglot5Translation. snippets/weglot_hreftags.liquid, snippets/weglot_switcher.liquid
Videoly8Product video. On every MediSpa blocklist
Tolstoy3Shoppable video. On every MediSpa blocklist
Hulk Apps11Wishlist button remnants
Booster3Currency conversion. snippets/booster-currency.liquid
Upsellio3Upsells. snippets/upsellio.liquid, snippets/upsellio_embed.liquid
Upnova5Upsells. Blocked by Yett in the main layout as upez and upnova

Upnova appears under two names. Its scripts match upez and its snippets say Upnova. Both patterns are in window.YETT_BLACKLIST in layout/theme.liquid, and src/entrypoints/upnova-sticky-fix.ts works around its sticky positioning.

Script blocking

Every layout loads Yett synchronously before content_for_header and sets window.YETT_BLACKLIST.

layout/theme.liquid blocks Appstle outside the subscriptions app proxy, plus upez and upnova.

The MediSpa layouts block a much longer list: Smile, Gorgias, Boost, Swym, Stamped, Rebuy, Videoly, Tolstoy, upez and upnova. Klaviyo, Google Tag Manager and Meta stay unblocked, because these pages carry paid traffic and their only call to action is a booking form.

snippets/yett-unblock.liquid releases everything Yett holds on the first touch, keypress or click. Blocked apps therefore load on interaction rather than never.

A script that appears missing on a MediSpa page is usually blocked rather than broken. Check the layout's blocklist first.

Cart writers

Discount Ninja, Upsellio, Upnova and Rebuy write to the Shopify Ajax Cart directly, which is why the mini-cart patches window.fetch.

None of them notify the theme when they write. The interceptor observes them and emits the same events the mini-cart's own writes produce. See Mini-cart.

Vendor files

Any file carrying a vendor prefix is vendor-owned. Editing one works until the app updates its theme integration and overwrites the change, at which point the fix disappears with no warning.

Several vendor snippets are in .prettierignore, because the app regenerates them and reformatting produces noise in every diff:

snippets/icart-drawer.liquid
snippets/limoniapps-discountninja-context-settings.liquid
snippets/shade-selector-modal.liquid
snippets/special-offers.liquid
snippets/upsellio.liquid

When vendor behaviour has to change, change it in the app's own admin. When that is impossible, wrap the vendor file rather than editing it, and record why.

Apps whose files remain but are not in use

The theme carries files from apps that appear to have been removed. sca.* snippets are the largest group, with references across 128 files. See Legacy and unused code.

Do not remove a vendor file on the basis of a name you do not recognise. Search for it across layout/, templates/, sections/ and snippets/ first, and check whether the app is still listed in Shopify Admin under Apps.

Verifying what is installed

The authoritative list is Shopify Admin, under Apps. This repository only shows what the theme integrates with, which lags behind installs and removals.

An app can be installed and contribute nothing to the theme, and an app can be uninstalled while its snippets remain.

On this page