Before your next sale, check three things: your announcement points to the right offer, it appears on useful pages, and it stops when the offer ends. Start with one popup. This guide covers the setup and test routine with the free Popup Maker plugin, then explains where Pro scheduling or Pro+ cart conditions can take over the manual parts.

Black Friday falls on November 27 in 2026, followed by Cyber Monday on November 30. Whether you’re planning for that weekend or another promotion, start with your own sale dates and work backward.

The short version

  1. Decide one offer, one end time with a time zone, and one landing page before you touch a popup.
  2. Build an announcement first. Add an exit reminder or cart message only if it has a distinct job and you can test the conditions it needs.
  3. Give every automatic popup a cookie so it stops repeating in the same browser.
  4. Schedule the start and the stop, or put the stop on a calendar with a named owner.
  5. Decide what a logged-out visitor, a logged-in customer, a member or wholesale account, and a recent buyer should each see.
  6. Rehearse on a staging copy with test accounts and the payment gateway in test mode. Include a phone.
  7. Write down your starting numbers the day before launch, and turn everything off on time.

The steps below name the relevant settings; the linked documentation has the full editor walkthroughs.

Step 1: Decide the offer before you build anything

A popup can only repeat what the store has already decided. Before opening Popup Maker, write down:

  • The offer in one line. For example, “20% off with code SAVE20” or “Free shipping on eligible orders over $75.” Use your actual offer and eligibility rules. If it does not fit in one line, it will not fit in a popup headline.
  • Start and end, with a named time zone. Write the deadline the way you will show it to customers. For example, “Ends November 30 at 11:59 pm Eastern.” Choose the date and time zone that match your sale. “Midnight Monday” is ambiguous; a fixed offset such as UTC-5 breaks when clocks change. A sale that has an end day but no end time tends to run late.
  • The one page the popup sends people to. A collection page, a product page or the cart. Make sure it exists and loads before the sale starts.
  • Who should not see it. Customers who already bought during the sale, wholesale accounts, or members who get a better deal elsewhere. You will use this list in Step 5.
  • The coupon. Create it in WooCommerce (Marketing > Coupons) or Easy Digital Downloads (Downloads > Discounts) now, with its own usage limits and expiry. The popup schedule and the coupon expiry are two separate settings with two separate clocks; Step 4 covers the difference. A popup cannot fix an expired or misconfigured coupon.

Write these decisions in a short campaign brief. Use it as the reference for every popup you build next.

Step 2: Build the announcement first

Most of the value is in one popup that tells every visitor the sale exists, once, and sends them to the sale page. The other popups below are optional.

Popup A: the announcement

Job: state the offer and the deadline, with one button to the sale page. No form.

  • Trigger. In the popup editor, open Popup Settings > Triggers and click Add New Trigger. Choose Time Delay / Auto Open. The delay is in milliseconds; a short delay (under about two seconds) is common for an announcement, but there is no universal right number. When you add the trigger, Popup Maker offers to create a cookie for it. Accept it.
  • Cookie. Cookies live on the same Triggers tab (the section is called Triggers & Cookies). Edit the cookie with its pencil icon. Choose On Popup Close if the announcement should stop after the visitor dismisses it, or On Popup Open if it should stop after it is first displayed. Set Cookie Time to cover the sale, for example 4 days. Step 3 has the details and the limits.
  • Targeting. Popup Settings > Targeting. For a store-wide sale on WooCommerce, the free plugin’s conditions include Home Page, Any Shop Page, All Products, Products: With Product Category, Cart Page, Checkout Page, Account Page and Is Endpoint. How to combine them matters; see “How targeting groups work” below.
  • Keep it off the checkout. Add Checkout Page in its own group with the not toggle on. Nothing should interrupt someone who is paying you.
  • Display. Popup Settings > Display. Start with the preset that matches the job: Top Bar, Right Bottom Slide-in or Left Bottom Notice are less disruptive than Center Popup. Then check the overlay: moving a popup into a corner does not by itself stop it from blocking the page. The overlay is controlled separately under Display > Advanced (Disable Overlay). Confirm in your rehearsal that the page still scrolls and that keyboard users can reach the close button.

If your theme already has a site-wide notice bar, use it and skip Popup A. Two announcements are worse than one.

How targeting groups work

Popup Maker joins the conditions inside one group with or and joins separate groups with and. Each condition has a not toggle (the warning-icon button in front of it, labelled “Enable the Not Operand”). The popup loads on a page only when every group has at least one condition that passes.

So for “show on the home page, shop and product pages, but never on checkout”:

  • Group 1: Home Page or Any Shop Page or All Products (use the or button to add conditions to the same group).
  • Group 2 (use the and button): Checkout Page, with the not toggle on.

Putting everything in one group would read “Home or Shop or Products or not-Checkout”, which matches almost every page on the site, including blog posts. When you rehearse, load an unrelated page such as a blog post as well as the checkout to catch a rule that is too broad. Any role or buyer exclusion you add later (Step 5) goes in its own and group too.

Optional Popup B: the exit reminder

Job: show the offer one more time to someone who is leaving a product or cart page.

  • Trigger. Exit intent is a Pro trigger. Its Methods setting lists Mouse Leave (desktop), Lost Browser Focus, Back Button, Link Click, Time Delay (mobile) and Mobile Scroll. Mouse Leave never fires on a phone, so enable at least one of the mobile methods if phones matter to your store. On the free plugin, the nearest substitute is a second Time Delay / Auto Open popup with a longer delay, limited to cart and product pages. That is a timed reminder, not exit intent; decide whether it earns its place.
  • Cookie. On Popup Close, with a Cookie Time at least as long as the sale. Someone who dismissed the reminder does not want it again tomorrow.
  • Targeting. Cart Page or All Products or Any Shop Page in one group; Checkout Page (not) in a second group; the order-received endpoint (not) in a third, using Is Endpoint.
  • With Pro+. Add a Cart Total condition (set “Which total do you want to check?” and a minimum) so the reminder only fires when there is something in the cart, and give the button a WooCommerce – Apply Discount call to action with the coupon in its Discount Code field and “Redirect to” set to Checkout. The step-by-step for that popup is in How to Create a WooCommerce Cart Abandonment Popup.

Optional Popup C: the thank-you

Your order confirmation page already thanks the buyer. Add a popup there only if there is one more thing worth saying (shipping dates, a referral code, where to find downloads).

  • Trigger: Time Delay / Auto Open, a few seconds.
  • Targeting: on WooCommerce, Is Endpoint with order-received selected (free). On Easy Digital Downloads, select your purchase confirmation page under the Pages conditions.
  • Cookie: On Popup Open. If you intend to use this cookie to silence other sale popups for buyers, give it a campaign-specific name and a Cookie Time that lasts through the end of the sale; Step 5 explains what that does and does not achieve.
  • Do not put a second discount here unless you have checked the margin on a second discounted order. A plain thank-you is a fine outcome.

Optional Popup D: the cart message (Pro+)

A Pro+ Cart Total condition can select a band of cart values, for example “Subtotal more than 50 and less than 75”. It does not insert a live “you are $18 away” figure into your popup text; nothing in the popup content calculates the remaining amount. Write “Free shipping on eligible orders over $75” only when that matches your store’s shipping rules, and use the same basis (subtotal versus total, before or after discounts, eligible destinations) that your shipping rule uses. On the free plugin, skip this popup rather than guess.

Step 3: Set the cookie so the popup stops repeating

Popup cookies are in every tier. Every popup that opens automatically needs one. They are set under Popup Settings > Triggers (not a separate Cookies tab): add one while creating the trigger, or click Add New Cookie, then edit it with the pencil icon. If you add a cookie separately, edit the trigger and select that cookie under its Cookie Name setting, otherwise the trigger will not check it.

PopupCookie eventCookie TimeWhat it does
AnnouncementOn Popup Close (or On Popup Open if it should stop after being shown)The length of the sale, for example 4 daysStops the repeat in this browser while the cookie lasts.
Exit reminderOn Popup CloseAt least the length of the saleA dismissed reminder stays dismissed in this browser.
Thank-youOn Popup OpenThrough the end of the sale if other popups will check itSurvives a refresh of the confirmation page.
A popup with a form integration you have testedFor Submission or Subscription Form: Successful1 month or longerStops asking again in this browser during the cookie period.

Cookie Time takes plain English: seconds, minutes, hours, days, months or years (4 days, 12 hours, 1 month). The default is one month.

What a cookie cannot do: it is a record in one browser, not a record of a person. The same visitor on a phone and a laptop is two browsers. Cookies expire and can be cleared. A close cookie is set only when the popup is closed; a visitor who clicks a button that navigates away may never set it, so decide whether On Popup Open is the better event for your announcement. Save, then load the next page without clearing cookies to confirm the repeat stops.

When you test later, you will need to clear these cookies between some runs and keep them for others. The free Popup Maker Debug Tools Chrome extension can reset cookies and open a popup on demand.

Step 4: Make it start on time and, more importantly, stop

Sales start late and end late for the same reason: someone has to remember to click. Decide now which of these you are doing.

Free plugin, manual stop. A popup is a WordPress post, so you can schedule its start like a blog post by setting a future publish date and clicking Schedule; WordPress schedules in the site time zone (Settings > General > Timezone). Scheduled publishing depends on your site’s scheduled-task processing and caching, so if the start time matters to the minute, publish it yourself. The free plugin does not include a built-in end schedule. Put the end time on a calendar with a named owner and a second reminder for the morning after. Ending the sale means opening the popup, clicking Switch to Draft, then loading the home page in a private window to confirm it is gone.

Pro, scheduled stop. Open the popup’s Scheduling tab and add a Date Range schedule: Start Date, Start Time, End Date, End Time, and an All Day? option. Leave the Local Time checkbox off for a shared sale window; the schedule then follows the site time zone shown next to that checkbox, and a named region such as America/New_York follows that region’s clock changes. Turn Local Time on only when both your offer and its enforcement are meant to be visitor-relative. Schedules on one popup combine with OR, so Black Friday and Cyber Monday can be two ranges on the same popup. The modes are documented on the scheduling feature page. A popup outside its schedule stops being eligible to show; verify the cutoff in rehearsal, including a page that was already open when the schedule ended.

Either route: the coupon has its own clock. A popup that stops showing does not stop a code from working, and a popup schedule does not expire a coupon. In WooCommerce, the standard expiry field is under the coupon’s General tab and is date-based: WooCommerce’s documentation says the coupon cannot be used on the date entered, so confirm the actual cutoff on staging rather than assuming it accepts an hour and minute. In Easy Digital Downloads, check the discount’s own start and expiration settings separately. If you need a cutoff the coupon field cannot express, use a verified coupon-scheduling feature or a named manual stop.

The step-by-step for both routes is in the companion guide Make Your Sale Visible and Stop It on Time.

Step 5: Show the right offer to the right visitor

A sale popup that offers a public code to a wholesale customer, or asks a logged-in member to “join”, is a support ticket waiting to happen. Decide who sees what:

Visitor stateWhat they should seeHow to do it
Logged-out visitor (not necessarily a first-time visitor)Announcement, exit reminderDefault; content targeting in the free plugin.
Logged-in customerAnnouncement without “new customer” wording, or nothingPro User conditions: Is Logged In (with the not toggle to exclude), Has Role. The free plugin targets by content (which pages), not by who is looking.
Member, subscriber or wholesale roleTheir own message, or suppressionPro Has Role with the roles your membership or wholesale plugin assigns. A WordPress role is not proof of a paid membership; the popup rule does not enforce pricing or access.
Recent buyerSuppress where a verified rule identifies them; otherwise use wording that still reads correctly after a purchasePro+ purchase conditions where they fit (see below), or a campaign cookie set by the thank-you popup plus a Pro Cookie Exists rule. Neither covers every buyer.
Site administratorsNothing, while workingPro Has Role Administrator with the not toggle, or a cookie you set for yourself.

Each of these rules goes in its own and group on the popup, so it applies alongside the page conditions.

Recent buyers. Store conditions match what a customer has in the cart or has bought, not when they bought it, so there is no single setting for “ordered during this sale”. The practical route is the thank-you popup from Step 2: set its cookie On Popup Open with a campaign-specific name, then tell the sale popup’s trigger not to fire while that cookie exists. That keeps the offer closed for buyers in the same browser. It will not catch guests who leave before the confirmation page or anyone on a second device, so test a returning customer, a guest and a second browser before launch.

The companion guide Show the Right Sale Offer to the Right Visitor walks through each row with the exact condition names.

From the makers of Popup Maker

Need the same rules inside the page?

Content Control shows or hides any editor block by login state and role, so a wholesale note or members-only line can follow the same rules as your popup. Content Control Pro adds a date range, so the notice retires itself when the sale ends.

Step 6: Rehearse on a staging copy, as four different people

Preview in the editor shows you the popup’s content and layout while it is a draft. It does not prove your targeting, trigger, cookie or schedule rules: the editor preview loads the popup for you regardless of its status and replaces its triggers with a debug trigger. A future schedule, by design, keeps the popup hidden, so you cannot test positive cases that way either.

Rehearse the rules on a staging copy of the site, with synthetic customer accounts and the payment gateway in test mode. Give the test popups an active test window (or no schedule) so they can actually show, check who sees them and who does not, then test both schedule boundaries by moving the window. Keep the production popups and the real coupon unavailable until the intended launch. Do not place a real order just to complete this checklist.

Make three test accounts on staging: a customer with one past order, a user in your member or wholesale role, and keep your admin account for comparison. Record each test and its result in a spreadsheet. Start with these checks:

  1. Logged-out visitor, desktop. Fresh browser profile. Load the home page: the announcement appears once. Load the shop page: it does not repeat. Load a blog post: nothing (your groups are not too broad). Load checkout with an item in the cart: nothing. Click the announcement button: it lands on the right page.
  2. Logged-in customer. Same run, logged in as the test customer. Confirm the wording or suppression you planned.
  3. Member or wholesale role. Same run as that account. The public code is never shown.
  4. Phone, real device. Close every popup with a thumb. The close button is not under the browser toolbar. The page scrolls after closing. The coupon code is selectable text. If a popup is taller than the screen, see Why Is My Responsive Popup Taller Than the Screen On Mobile Devices?. If a popup should not show on phones at all, every tier has Disable this popup on mobile devices and Disable this popup on tablet devices checkboxes on the Targeting tab; Pro adds Device Is Mobile / Phone / Tablet conditions.
  5. Keyboard, desktop. Tab and Shift+Tab reach the close control with a visible focus ring; Escape closes the popup only if you enabled that under the Close tab; the page is usable after closing. This is a usability check, not a claim of full accessibility.
  6. Schedule and coupon boundaries. Before the start: nothing shows and the code is refused. Inside the window: the popup shows and the code applies on an eligible cart. After the end: nothing shows, including on a page you left open across the boundary after a reload, and the code is refused.

Cookie handling during tests. For a fresh audience or targeting case, clear the Popup Maker cookies (Debug Tools extension) or use a separate browser profile. For a repeat-suppression case, keep the same session and cookies. Opening another private window may share an existing private session; close all private windows or clear the cookies explicitly.

Check the browser console on each page; a JavaScript error from another plugin can stop every popup. If a popup does not open, work through A Beginner’s Guide to Popup Triggers and the plugin or theme conflict test before launch day.

Step 7: Write the starting numbers down the day before

You cannot read the results without knowing what normal looked like. The day before launch, record, with the same start and end times for every report:

  • Orders and revenue for a comparison period of the same length as the sale (WooCommerce Analytics or EDD Reports).
  • Each sale popup’s opens and the conversion event you configured, from the Popup Maker popups list (the free plugin counts opens and conversions; Pro adds the analytics dashboard; Pro+ can attribute orders to popups for supported store integrations). If the counts are cumulative, write down the starting count so you can subtract it later.
  • Coupon usage count (zero, if it is new).
  • Your list size, if a popup collects emails.

Record these numbers before launch. After the sale, add the same measures alongside them for comparison.

Record opens, conversions, coupon uses, orders and revenue as separate measures. They are different events, and a coupon may also appear in your emails or social posts, so the totals alone do not show which buyers saw a popup or how many orders the popup caused. When you report results, state the date range, then give the popup’s opens, the conversion event you named for it, and the coupon’s uses as separate figures. Do not read a year-over-year change as “the popups worked”: traffic, stock, ads and the offer changed too. A claim about extra sales needs a separately designed comparison with a control group.

Step 8: Turn it off, then read the results

The morning after the sale ends:

  1. Confirm every sale popup is Draft (free) or past its schedule (Pro). Load the home page in a private window to be sure.
  2. Confirm the coupon is expired or disabled by trying it on a staging cart.
  3. Remove or update expired sale deadlines on the landing page.
  4. Record your final results alongside the pre-sale numbers, noting any resets or test activity.
  5. Keep the popups you want to reuse as drafts rather than deleting them. Popups are WordPress posts, so the standard WordPress exporter under Tools > Export can move them between sites; see Export and Import Popups Between Sites. Next season you change dates and a coupon code, not rebuild.

What the free plugin does, and where Pro and Pro+ take over

Job in this guideFreeProPro+
Unlimited popups, themes and impressionsYesYesYes
Time Delay / Auto Open, Click Open and Form Submission triggersYesYesYes
Cookies (open, close, form submission)YesYesYes
Target by page, post, category, WooCommerce pages, endpoints and productsYesYesYes
Disable a popup on mobile or tabletYesYesYes
Count popup opens and conversionsYesYesYes
Exit Intent trigger (six methods, including mobile)NoYesYes
Scroll triggerNoYesYes
Scheduling (Start Date, End Date, Date Range, Chosen Dates, Office Hours; stackable)NoYesYes
Target by Is Logged In and Has RoleNoYesYes
Target by device, browser size, referrer, URL, Cookie Exists / Cookie IsNoYesYes
Analytics dashboard and split testingNoYesYes
Target by Product(s) in cart, Cart Total, Customer Spent, Customer Has Purchased (WooCommerce and EDD); Customer Since, Cart has discount, license and subscription conditions (EDD)NoNoYes
Call to action that adds a product to the cart or applies a discount codeNoNoYes
Orders attributed to popups, for supported store integrationsNoNoYes

Related guides

Features and labels can vary with your installed version and store integration. Use the linked documentation, confirm the required add-ons, and test the actual visitor path before launch.