12 days of Christmas sale ideas: one deal a day on your Shopify store

Plan a 12 days of Christmas sale with one on-site campaign per day, scheduled on Scale to start, end and hand over on time.

A bright moon over hills at dusk

A 12 days of Christmas sale gives shoppers one new deal each day and a reason to come back tomorrow. Most advice stops at choosing the deals and announcing them by email. The part that makes the sale feel real happens on your store: today's deal is easy to find, and yesterday's is gone.

This guide shows you how to plan the twelve days on one sheet, give each day its own on-site campaign that starts and ends on time, and put the day's product in front of shoppers with an add to cart button. It also covers what to do on the free Starter plan, and where the setup stops.

What a 12-day sale needs from your store

Shoppers who come back on day five expect day five. If the store still shows day four, the countdown stops meaning anything. Three things keep it honest:

  • One current deal. The day's offer is the newest thing in your store's feed, with the end time in the message.
  • A clean handover. Each deal leaves at the same hour the next one arrives.
  • Something new to notice. The bell's unread badge counts messages a shopper hasn't seen yet in that browser, so a new message each day lights it up again for returning shoppers.

Discounts you create yourself, such as codes or automatic discounts, still live in Shopify. Set each one's start and end dates there to match its day.

Plan the twelve days on one sheet

Before you build anything, write a row for each day with five columns: the date, the product or collection, the offer, the discount code or automatic discount, and the start and end hour. Pick one switch hour, such as midnight, and keep it for all twelve days.

Two checks save trouble. First, time zones: Atomato schedules use the time zone of the computer you schedule from, not your store's time zone, so convert your switch hour first if the two differ. Times are in whole hours. Second, stock: pick deal products with enough inventory to last the day, and keep your shipping cutoff in view. Our guide to holiday shipping cutoff messages covers what to tell shoppers once that date gets close.

Give each day its own campaign and clock

On Scale and Enterprise+, NotiFeed, NotiPop and NotiSell campaigns have a Schedule tab. Choose Run the campaign according to the schedule with a defined start and end date, pick the start, tick Set end date and pick the end. At the start time the campaign becomes Active, and at the end time it becomes Completed and leaves your store.

The Schedule tab. Times are picked by the hour, and the start must be in the future.

A schedule belongs to the whole campaign, not to single messages inside it. That is why each day gets its own campaign rather than twelve messages in one. It also helps in the feed: newer campaigns appear first, so each new day's deal sits at the top of your NotiFeed messages. The help article Schedule a campaign to start and end has the full date rules.

Build day two from day one

Once day one looks right, you don't need to start eleven more from blank. On the Campaigns page, point to Edit on the day one row and choose Duplicate as draft. Atomato saves a copy with -copy added to its name and opens it in the editor, with the same messages and targeting.

A campaign's menu in the list. Duplicate as draft opens the copy in the editor.

Before you save each copy:

  • Set new dates. The copy keeps the original's end date, and its start is set to the moment you duplicated it. Saving it without new dates makes it Active straight away.
  • Rename it. Replace -copy with the day, for example 12 Days Day 2. Campaign names are only for you and must be unique.
  • Rewrite the message. Change the title, description, image and button link to the new day's product, and put the end time in the text.

The Scheduled tab on the Campaigns page lists every campaign waiting to start, and the Schedule column shows each one's dates so you can check the run for gaps or overlaps.

Put the day's product one tap away

A feed message can link to the deal's product page. On Scale and Enterprise+, a NotiSell campaign goes a step further and shows the product in the feed with its price and an add to cart button. Choose Manual as the method and pick the day's product.

A NotiSell message, opened. Shoppers pick a variant and add to cart without leaving the page.

NotiSell can also carry the discount. Turn on Offer incentive and Atomato creates a Shopify automatic discount for that campaign. It only applies to listed variants added with the NotiSell button, so keep Add product to the cart ticked. The discount switches off when the campaign's schedule ends, which suits a deal that should last one day. When you duplicate a NotiSell campaign, its discount is copied with (copy) added to the title. Shoppers see that title in the cart and at checkout, so rename it each day, and keep each title unique.

The button adds one unit of the chosen variant and opens the cart. If a day's deal is a bundle of several products, link to a bundle product or a collection instead.

A worked example: days one to three

Here is how a candle store on Scale might write its first three days, with midnight as the switch hour:

  • Day 1: "Day 1 of 12: 20% off the Winter Pine candle. Ends tonight at midnight." Button: Shop the candle.
  • Day 2: "Day 2 of 12: free wick trimmer with any order over $40. Today only." Button: See the trimmer.
  • Day 3: "Day 3 of 12: the gift box set, 15% off until midnight." Button: Add to cart, from a NotiSell campaign.

Each message names the day, the deal and the end. On day three, day two has already left with its schedule.

A single strong offer in the feed can carry weight. Ninja Transfers runs NotiFeed as its only Atomato module, and its best single campaign, "Buy 5 Blanks, Get 5 FREE Transfers", brought $24,162 in attributed revenue between 19 April and 15 October 2026. These are account totals, not a controlled test. The Ninja Transfers case study has the full figures.

Running it on the free Starter plan

On Starter (Free), the Schedule tab is not available and one NotiFeed campaign can be active at a time, with one message. You can still run the twelve days by hand. At your switch hour, click End Early on the active campaign's summary page, then duplicate it, change the message and save the copy as Active.

Avoid rewriting the same message each day. Editing a message keeps it the same message, so a shopper who has already seen it won't get a new badge, even if every word changed. A new campaign counts as new.

What this setup doesn't do

  • Atomato doesn't create your discount codes or automatic discounts for feed messages. Here, only a NotiSell offer incentive creates one, and only for products added with its button.
  • There is no countdown clock. Write the end time in the message instead.
  • Atomato doesn't send emails or texts to shoppers. Announce the sale through the email and SMS tools you already use.
  • Atomato won't move your schedule if a product sells out. End that day early from the campaign's summary page, or point the message at a backup product.

For the wider season, our plan for Black Friday on-site messages that don't stack shows how to keep campaigns from overlapping, and the holiday gift guide post pairs well with a 12-day sale.

Next step

Fill in your twelve-row sheet, build day one and preview it on desktop and mobile. On Scale or Enterprise+, schedule it and duplicate it into days two to twelve. On Starter (Free), set a daily reminder to swap the campaign at your switch hour.

Install free on Shopify

Written by

Atomato

Published 6 min read

Ready to show the right message to the right shopper?

Start showing targeted on-site messages without changing your marketing setup. Atomato works alongside the popup, email and SMS tools you already use.

INSTALL FREE ON SHOPIFY

5.0 on the Shopify App StoreFive-minute setup. No theme code or developer needed.