How it is built
Theme app extension
Two app embeds (Wishlist Engine and Wishlist icon) and two app blocks (Add to Wishlist Button and Shopy Wishlist Page). They load the storefront scripts and styles.
App proxy
Every storefront request goes to
/apps/cbwishlist/* on the shop’s own domain. Shopify signs it and forwards it to the app.Customer account extensions
Wishlist Account and Shared Wishlist Account add wishlist pages to the new Shopify customer accounts.
Shop metafields
Widget settings, feature toggles and custom templates are stored as app-owned shop metafields, so Liquid can read them on first paint.
Ways to extend it
Manual placement
Put the button, collection hearts, wishlist page, nav menu and cart button exactly where you want them.
JavaScript API & events
Listen for wishlist changes, re-scan the page after AJAX updates, and debug placement.
Custom page templates
Rewrite the wishlist page markup with EJS templates and your own CSS.
REST API
Build wishlists into a headless storefront or a mobile app.
Shopify Flow
Start Flow workflows when a shopper adds an item to a wishlist.
AI assistants (MCP)
Let Claude and other MCP clients read your wishlist data.
Storefront request flow
The app reads the customer from the signed app-proxy request, never from IDs the browser sends. A logged-in shopper cannot read or change another customer’s wishlist by editing a request.Shop metafields
All metafields live in the app-owned namespace$app.
These metafields belong to the app. Change them from the Codebeans Wishlyst admin, not by writing to them directly. The app overwrites them whenever settings are saved.