How to plan Shopify BFCM on-site messages without stacking interrupts

Atomato BFCM campaign example: one popup allowed while the rest of the Black Friday offers wait in the notification feed, over an eclipse with a deep crimson corona

BFCM week really suffers at the door when the ads all the time - welcome, discount, free shipping, flash drop - struggle for the same interrupt. You can make each of them work independently by giving the operator a surface and a budget: one timed popup for the highest-intent ask, a reopenable feed for sale details shoppers can reopen across days, email/SMS for people who left.

This is Shopify BFCM on-site messaging interrupt budget: what is put in a popup, what is stayed in a notification feed, what is postponed for your ESP, plus the before/after sale copy you can copy.

Why stacking BFCM is a death sentence for mobile sessions

On the Friday morning, it is easy to tell that most of the stacks are the same. First, there is a welcome popup on first paint. Then a second overlay for 20% off. A free-shipping threshold banner that also pops. A flash-sale modal when the inventory dips. Then Klaviyo or Omnisend still send the abandoned-cart email hours later.

With mobile, every overlay is at risk of a session loss. Shoppers keep dismissing, then they dismiss again and leave the session - most of the time they do that even before opening a product. Email cannot be the trick that makes a dead session come back to life.

Consider BFCM like a budget and not a hill of campaigns. One interrupt at a time. Everything else can be available without obstructing the page.

The BFCM interrupt-budget table

Refer to this roadmap before activating anything during the Black Friday week.

Job Surface Timing Notes
First-visit list capture or welcome offer Timed popup (delay or exit intent) Once per visitor / short cookie window Highest-value interrupt — protect it
Sitewide BFCM % off or doorbuster headline Reopenable feed card + optional site banner Always available during sale dates Do not full-screen on every page view
Free-shipping / free-gift progress Feed progress card; popup only when cart crosses threshold Trigger on cart value, not page load Same idea as year-round progress campaigns
Flash drop or limited SKU Small corner popup once, then feed card On product view or inventory rule Feed keeps the remind path after dismiss
Cart recovery while still on site Corner nudge or feed card Minutes after add-to-cart / exit from cart Email waits until they leave
Post-browse sale reminder Email / SMS Hours later, known contacts only Do not duplicate the same creative as three overlays

Retain the existing popup tools and ESP that you are using. BFCM does not require a new interrupt engine, instead, it needs fewer stacked ones.

Cap the popup: one primary interrupt

For BFCM week, the store has to choose one primary popup assignment. For the most part, either the welcome/list capture or the single doorbuster percentage is defaulted to these stores. They can't show both at first paint.

Here's what you need to do:

  1. Postpone the popup (scroll or 8–15 seconds) so that the first screen can be the products and not a modal.
  2. Set the sale overlays for the session to suppress the ones they have already dealt with (dismiss or convert).
  3. No free-shipping popup should be triggered on the page load when the welcome popup was already shown.
  4. If on mobile, use the corner or slide-up option rather than full screen for secondary nudges as it is the preferred choice.

With Atomato, NotiPop will be in charge of this one clear interrupt while NotiFeed will rule the multi-day sale details. The split is adapted to when to use a popup, the feed, or both for the same offer.

Make the sale in a feed that can be reopened

Having a multi-day BFCM sale is an act of reopening, rather than a one-time knockdown. Customers, who cover the opening on a Friday morning will need the code, the end time, and the free-shipping threshold on Saturday without any additional overlay full screen.

From the Atomato product behavior perspective: shopper-opened feed cards are available during a multi-day sale, thus, the remind path is reopening, but not a one-shot dismiss. That is the real difference between stacking popups and maintaining only one interrupt with a quiet inbox.

Pairing rules that work:

  • A single sitewide BFCM card with dates, code (if any), and a clear CTA is suggested, thus a new card for every SKU is not required.
  • Free shipping progress and a freebie as a separate card that updates with the cart —see how to use free-shipping and free-gift progress campaigns first.
  • Flash SKUs as product-linked cards for people who viewed them, not as global overlays.
  • Cap frequency: if they dismissed the sitewide card twice, stop re-mentioning it as a popup; leave it in the feed only.

Before and after: BFCM sale message copy

Before (typical stack): > WAIT - Black Friday is already on! > 25% OFF EVERYTHING - enter email for the code > [No thanks] [Get my code] > ...then another popup: Free shipping over $75! > ...then another: Only 3 left of this drop!

Issues: three disturbances, fake urgency layered on buy urgency, and a no progress case if they ignore the first one.

After (budgeted path): > Popup (once, delayed): Black Friday: 25% off sitewide through Monday. Would you like to get the code in your inbox too? > Email: ________ [Send code] > Feed card (reopenable all weekend): BFCM: 25% off with code BFCM25 · ends Monday 11:59pm · free shipping at $75 · [Shop sale] > Progress card: You are $18 from free shipping - add a gift wrap set?

The after version spends the interrupt once, keeps sale facts reopenable, and leaves progress to the cart job.

Allow email and SMS take the lead on the customers who left

On-site messages are the meaning of the session and the next visit. Customers who quit will still stay in your ESP and SMS flows just not as a fourth overlay.

Pre-BFCM outbound checklist:

  • Subject shows the sale and it's end time, not "Don't miss this"
  • First line is the code or threshold that you need to state without forcing a click to get it
  • Suppress sends for those already converted on-site in attribution window
  • Keep a cart recovery email for leavers; use on-site recovery first while they browse - Same ladder as recovering Shopify carts on-site before email fires

Success should not be measured by popup views alone. Make sure you track feed opens/clicks on the BFCM card, orders attributed from the on-site clicks, and email revenue separately. Attributed revenue isn't the same as proven incremental lift without holdout.

BFCM week setup checklist

  1. Let's enumerate every on-site message that is on schedule for BFCM (welcome, %, shipping, drop, cart).
  2. Ensure only one dominant primary popup is assigned to each row in the interrupt budget table
  3. Place sitewide sale facts into a feed card that can be reopened with an end date and CTA.
  4. Allow tracking progress through free shipping at cart triggers rather than page loads.
  5. Primary pop will be delayed; skip the siblings for the same session.
  6. Confirm that ESP/SMS flows do not have the same creative overlapping the three overlays.
  7. Disable sale cards after Cyber Monday and put back the year-round stack.

Would you like to have a one-page summary to discuss it with your team? Check out the Atomato BFCM tip sheet, which is a concise summary of these rules for Black Friday week.

Next step

This week, allocate your BFCM messages to the budget table. Keep the welcome or doorbuster popup you already trust, place multi-days sale details in a shopper opened feed, and leave email/SMS for the people who leave.

Install Atomato free on Shopify to add a notification feed beside the popup and ESP you already use — or explore NotiFeed for reopenable BFCM cards without another interrupt stack.

Written by

Atomato

Published 6 min read

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.

INSTALL FREE ON SHOPIFY

Five-minute setup. No theme code or developer needed.