Installing on your store
One lightweight script powers every Janus popup. Here's how it gets onto your storefront, what it reads, and what it costs your page speed.
The app embed (recommended)
Installing the Janus app from the Shopify App Store adds a theme app embed. Turn it on once:
- In Shopify admin, go to Online Store → Themes → Customize.
- Open App embeds (the puzzle-piece icon in the left sidebar).
- Toggle Janus on and hit Save.
That's the whole install. The embed renders a single async script tag before </body> on every page. No theme code edits, and uninstalling the app removes it completely.
What actually loads
- One script, ~57 KB gzipped, async + deferred. It never blocks rendering: your page paints first, the popup arms afterward.
- Zero requests when nothing can show. If no campaign is live for the visitor, the widget goes quiet.
- No dependencies. The widget brings everything it needs; it doesn't load jQuery, fonts or frameworks into your page (brand web fonts you chose for the popup are the one exception).
- Style isolation. By default popups render in their own style scope so your theme's CSS can't break them and vice versa. You can switch between Shadow DOM and Light DOM rendering in Settings → Tracking (Light DOM lets Meta advanced matching and browser autofill read the email field).
What the embed shares with the widget
The embed passes exactly two facts about a logged-in customer: their Shopify order count and customer id. No name, no email, no PII. Order count powers targeting rules like "number of orders is exactly 0" (new customers only). Logged-out visitors count as 0 orders.
Preview mode
Two URL parameters help you check work safely on your live storefront:
| Parameter | Effect |
|---|---|
?ps_preview=CAMPAIGN_ID | Loads that campaign for you only; works even while the campaign is a draft or the embed is switched off for real visitors. This is what ↗ Preview → Open on your store uses. |
?embed=CAMPAIGN_ID | Mounts the campaign inline (no overlay, no trigger) into an embed container on the page; see embedded form mode. |
Inline (embedded form) mode
Any campaign can render inside a page instead of as an overlay popup: on a landing page, in a footer, wherever you drop its container:
<div id="ps_campaign_CAMPAIGN_ID"></div>
Get the exact snippet from the builder under How it appears → Inside the page. Embedded instances skip teasers and triggers; they're just there. More in the SDK guide.
Verifying the install
- Set a campaign live (or grab a
?ps_previewlink). - Open your storefront in a private/incognito window.
- Wait for the trigger (default: 5 seconds on page).
If nothing shows, walk the checklist in FAQ → My popup isn't showing; it's almost always a trigger, targeting rule or frequency cap doing exactly what it was told.