Countdown timer
Show a real deadline in the cart drawer, counting down to a date and time you set.
What it is
The countdown timer is a small block inside the cart drawer. It shows one line of text with a clock in it, and the clock ticks down once a second to the moment you chose.
It is useful when something genuinely ends: a sale that closes at midnight, free delivery until Friday, a pre-order window. It is a message, not a rule. It does not change prices, apply discounts, or stop anyone from buying.
There is no "restarts on every visit" option, and there never will be. A timer that starts again for each shopper is not a deadline, and this app will not show a shopper a promise nothing keeps. Set a real date and time.
Set it up
- Open Carts and choose the cart you want to change.
- Under Add a module, pick Countdown timer and choose Add.
- In the module list, open the new Countdown timer block.
- Fill in Ends at, and the wording you want. Choose Save.
- Choose Open preview to watch it run against a real cart.
- Go Back to modules and choose Review and publish. Nothing you change reaches a shopper until you publish.
Drag the block in the module list to decide where in the drawer it sits. You can add more than one countdown to the same cart, each with its own deadline and wording.
Settings
| Setting | What it does |
|---|---|
Ends at |
The date and time the clock counts down to. Type it in the shape shown in the field: 2026-12-31T23:59 — year, month, day, the letter T, then the time on a 24-hour clock. Leave it empty and the block does not appear at all. |
What it says |
Your sentence. Put {{time}} where the clock should go, for example Only {{time}} left. Leave it empty and shoppers see Offer ends in {{time}}. |
When it reaches zero |
Two choices: Hide it (the default) makes the block disappear, or Say the offer has ended leaves it in place with different wording. |
What it says afterwards |
The wording used once the deadline passes, if you chose Say the offer has ended. Leave it empty and shoppers see This offer has ended. This text is shown exactly as you type it — {{time}} is not replaced here. |
How it behaves
What the clock looks like
Under an hour it reads minutes and seconds, like 02:30. Once there is an hour or more it reads hours, minutes and seconds, like 1:05:00.
There are no days. A deadline three days away shows as 72:00:00 and keeps counting in hours. If you want to talk about something days away, an announcement says it better than a timer does.
When it reaches zero
The clock stops. It never counts into the past, and it never starts over.
- With Hide it, the block vanishes and leaves no gap. Shoppers who open the cart after the deadline never see it.
- With Say the offer has ended, the block stays and swaps to your afterwards wording. It will keep saying that to every shopper until you change or remove the module, so remember to come back.
Emptying the cart, deleting items, or sending the shopper to another page when the timer ends are not offered. Some other cart apps do this. Losing someone's basket because they took a phone call is not worth any sale it buys.
Time zones
This matters more than it looks. A time written as 2026-12-31T23:59 carries no time zone, so the timer reads it against the clock on each shopper's own device. It runs out at 11:59pm wherever they happen to be, not at 11:59pm your time.
To make the deadline land at the same moment everywhere, put a time zone on the end:
2026-12-31T23:59:00Z one moment worldwide (UTC)
2026-12-31T23:59:00+05:30 11:59pm in India, for everyone
Either way, the timer trusts the shopper's device clock. Someone whose phone is set wrong will see the wrong number.
Screen readers
The block is marked up as a timer, but it does not read itself aloud every second. A box that speaks once a second is a box people switch off, and they lose everything else the cart needs to tell them along with it.
Wording and who sees it
The two default sentences — Offer ends in {{time}} and This offer has ended. — can also be edited on the Shopper copy screen for the cart. Those edits only apply where you have left the module's own wording fields empty.
By default the timer shows to every shopper whenever the module is switched on. To narrow it — to one country, to carts over a certain value, to phones — use Add a display rule on the module screen. Display rules need the Launch plan or above; the countdown module itself is on every plan, including Free.
Limitations
- Nothing checks your date when you save. The field is plain text with no date picker and no validation. If the app cannot read what you typed, it saves without complaint and the block simply never appears on the storefront. There is no warning in the builder about a missing, unreadable, or already-past deadline — check it in the preview.
- A past date is not flagged either. Set to Hide it, a deadline that has already gone means shoppers see nothing at all.
- It does not control the offer. The timer reaching zero does nothing to your prices, discounts or shipping. Schedule the actual discount in Shopify yourself, and make sure the two end at the same time — the drawer will happily count down to a deadline your discount does not share.
- No per-shopper or session timer. There is no "we're holding these items for 10 minutes". Shopify does not reserve stock for a cart, so that hold would not exist.
- No reset, no restart. Every shopper sees the same deadline.
- No days in the display, and no way to show only minutes or only hours.
- No styling settings. The block picks up your cart's accent colour and corner rounding from the Design screen. Anything beyond that needs Custom CSS or a custom HTML block.
{{time}}works in one field only — What it says. It is not replaced in the afterwards wording.
Saved settings are not live settings. When the timer looks right in the preview, open Review and publish to send it to your storefront. If it still does not show up for shoppers, work down Troubleshooting.