Grow your store
How to sync Shopify on-site messages with Klaviyo without double-messaging shoppers
Enable sync channels not based on volume but by the moments. While the shopper is on-site, one only-ask is sufficient. Klaviyo email and SMS can then continue the task after they leave the store - if they are already captured or converted on-site in just an hour, they can skip those flows.
This guide includes a channel handoff ladder, a moment × channel × skip-if table, before/after copy, and a wiring checklist. Maintain Klaviyo and your popup. Pair Atomato with both so the welcome code won't get shouted four times before checkout.
Why same-hour stacks happen
The popup apps, feed cards, and Klaviyo welcome or browse flows that are decentralized are not often built on the same time frames. The welcome job is owned by each channel, therefore a newcomer can get a delayed popup, a feed card with the same 10% code, a welcome email while still on the PDP page, and an SMS with the same offer -- four not coverage but covering.
Principle: Always have one main ask per moment. Only pass to the next channel when the situation changes (browsing - left; captured - do not re-ask; purchased - suppress welcome).
The channel handoff ladder
Three steps - not four parallel sides:
- On-site interrupt (session open): only one capped popup or soft ask for the primary job (welcome, list capture, cart help).
- On-site reopenable second touch: the same offer in a feed card which they can open again without another cover.
- ESP / SMS (after leave): Klaviyo welcome, browse, or cart flows that fire only when the session ended without the outcome you wanted.
Atomato is sitting on rungs 1-2. NotiPop is the one interrupt when attention is required. NotiFeed keeps the offer reopenable, so you do not need a second popup - or an early email - to "remind" them. Klaviyo remains on rung 3. Don't ever remove it.
Collaborates with when to use a popup, the feed, or both for the same offer and how to set Shopify on-site campaign frequency without training shoppers to ignore you. The filter here is the channel owns which moment.
Moment × channel × skip-if
In this table, you can see the moments, channels, and whether to skip them. It is the best way as you want to turn on another welcome path. "Skip-if" is the synchronization rule — therefore, Klaviyo or a second on-site fire should remain silent.
| Moment | Primary channel | Second touch | Skip-if |
|---|---|---|---|
| New visitor, session open | One shot on-site welcome popup | Feed card with same code + threshold | Skip second popup; skip Klaviyo welcome until session ends without capture |
| Email captured on-site this session | Quiet feed confirmation (optional) | None | Skip Klaviyo "enter email" step; start post-capture only after leave or next day |
| Still browsing PDP / collection | Soft feed promo or progress — not a second fullscreen | Feed stays reopenable | Skip browse-abandon email/SMS while session is active |
| Added to cart, still on site | Cart help / free-shipping progress in feed or soft corner | Update remaining amount in feed | Skip Klaviyo cart email until they leave with items in cart — see how to recover Shopify carts on-site before email fires |
| Left site, no capture, no purchase | Klaviyo browse / welcome email | SMS later, only with consent | Skip if captured or purchased in the last hour |
| Left site, email captured, no purchase | Klaviyo post-capture or first-purchase nudge | SMS later — not the same minute as email | Skip duplicate "here's your 10% code" if on-site already delivered it |
| Purchased | Order / post-purchase Klaviyo | None for welcome | Suppress welcome popup, welcome flow, and welcome SMS |
What to do: Enumerate all the Klaviyo flows that can initiate within one hour after the first visit, and all the on-site welcome creatives. The session open state is on-site only; session ended states ESP. The paths that fire both ways for the same offer in the same hour should be cut.
Steps: wire the handoff
- Name the job once (for instance: first-order 10% welcome). One job, one code, one primary creative.
- Identify the session-open owner: one on-site interrupting element via NotiPop or your respective popup.
- Place the same offer in NotiFeed as an reopenable card (optional quiet capture — how email capture works inside the feed).
- In Klaviyo, hold off welcome / browse / cart until a leave signal — not "2 minutes after signup" while they may still be browsing.
- Add skip-if filters: already has the welcome tag or redeemed coupon; placed an order recently; captured on-site in the last hour.
- Set SMS to not arrive in the same minute as the welcome email for the same code.
- Evaluate on-site dismiss rate and welcome-flow complaints — not only "flows sent."
Practical Atomato observation: have Klaviyo and a capped popup plus feed — you usually need less early ESP sends, not more. The ESP gets cleaner leavers; the storefront stops duplicating the ask.
For an account that transfers the captured contacts to an existing email and SMS programme, which it does not take part in sending the emails, see the Triquetra case study.
Before and after: same-hour stack vs handoff ladder
Before (popup + feed + email + SMS in one hour):
0:00 — Popup: Get 10% off — enter your email!
0:02 — Feed card: WELCOME10 still waiting
0:05 — Klaviyo email: Here's your 10% code (shopper still on PDP)
0:06 — SMS: Don't forget WELCOME10!
0:12 — Exit popup: Last chance for 10%!
Problems: four channels, one offer, while they are still shopping.
On-site first; Klaviyo after leave; feed reopenable:
0:00–0:12 - One delayed popup: Welcome - 10% off your first order. Want the code?
Same session - Feed card (reopenable): WELCOME10 · free shipping at $50 · [Shop bestsellers]
If captured on-site - quiet feed confirm; no second popup; no "enter email" email
After leave, no purchase - Klaviyo welcome or browse email with the same code once
SMS - later in the flow, only with consent, only if email did not move them
Exit interrupt - only if no on-site interrupt fired yet this session
After passes the interrupt once, keeps the offer reopenable, and Klaviyo speaks to leavers without talking to PDP readers.
Mistakes checklist
- Website popup with Klaviyo welcome email both firing while the session is still open
- SMS with the same code within the same minute as the welcome email
- Feed card plus fullscreen plus email all repeating "enter your email"
- Browse-abandon flow without recent-capture or still-active skip
- "Cart email" firing before the on-site Cart recovery had a chance to kick in
- Measuring "messages sent" across channels rather than whether the primary ask converted once
- Replacing Klaviyo with another on-site tool — or the reverse — instead of handing off by moment
If sign-up flow unsubscribes rise suddenly after successfully optimizing on-site capture, make sure to check these oddities of same-hour double sends which occur just before you rewrite the subject line.
Next step
Go through audit welcome paths which can be fired in the first hour. Only keep one on-site interrupt, one reopenable feed card and move Klaviyo to after leave with skip-if for capture and purchase. Atomato runs alongside your popup and Klaviyo — it does not substitute either.
Install Atomato free on Shopify to pair a capped NotiPop interrupt with a reopenable NotiFeed card located next to Klaviyo — or take a look at NotiPop and NotiFeed.
Ready to show the right message to the right shopper?
Start showing targeted messages on the site without any change in your marketing setup. Atomato lives with your popup, email, and SMS tools.
Five-minute setup. No theme code or developer needed.


