How detection works
Layers identifies app traffic in three places:| Surface | Detection mechanism |
|---|---|
| Storefront API requests (Search, Browse, Blocks) | The shoppingChannel field in context — set explicitly to "app", or auto-detected from request headers for Tapcart, Fuego, and Canvas. |
| Tracking events | The Tracking worker auto-detects Tapcart and Fuego via the X-Requested-With header. You can also send shopping_channel: "app" explicitly in the event payload. |
| Lab and Test Text Search | Demo profiles accept a Channel of Web or Mobile App so you can preview the app experience without a real device. |
shoppingChannel is app, Layers automatically applies app-specific catalog filtering and channel-aware merchandising — see the sections below.
Catalog sync for app channels
Most Shopify stores running a mobile app publish a different set of products to the app channel than they do to the online store. Layers handles this via per-product publication sync, which tracks every product’s publication status across every Shopify sales channel — not just Online Store, POS, Shop, and Shop Mini. Per-product publication sync is enabled automatically when Layers detects a non-baseline publication on your store (Tapcart, Fuego, Canvas, wholesale, or any custom channel). You can also force it on or off in Settings → Sales Channel → Publication Sync. Once enabled:- Web requests only return products published to the Online Store.
- App requests return products published to your configured app sales channel — including products that are app-exclusive and not published to the web.
- The Layers dashboard shows all products regardless of channel so merchandisers can manage the full catalog.
Configure your app sales channel
Tell Layers which Shopify sales channel represents your mobile app so it can scope app requests correctly:- Go to Settings → Search Behavior.
- Scroll to the App Sales Channel card.
- Pick the publication that corresponds to your app (Tapcart, Fuego, Canvas, etc.). Layers loads the list directly from Shopify.
- Save.
Channel-aware merchandising
Every Layers feature that targetscontext can branch on shopping channel:
- Search rules — inject filters, boosts, or replacements only when
context.shoppingChannel = app(or!= web). Example: hide web-only products from app users, or boost app-exclusive collections for app traffic. - Merchandising rules — schedule app-only pins, soft boosts, or hides without touching the web experience.
- Sort orders — use channel as an expression input to weight ranking signals differently per surface.
- Analytics — every behavioral metric can be segmented by
shopping_channel, so you can compare app vs. web conversion, AOV, search exit rate, and revenue per session side by side.
Preview the app experience in Lab
Before publishing app-specific tuning, validate it in Test Text Search:- Create or open a demo profile.
- In the session sidebar, switch Channel to Mobile App.
- Run queries and inspect results, the Query Understanding panel, and AI Explain — exactly as an app shopper would experience them.